Files
ARCADIA-Studio/harness/experiments/scc-placement-20260925/transfer-diagnosis.md
T

8.7 KiB
Raw Blame History

SCC transfer failure and residual sparse label conflicts

2026-09-25. Read-only diagnosis of frozen scc-placement-20260925/run01 at source 4dd764fa6cfc6920350383e523ba5a597412ddf4. No source edits, compiler, router, candidate or GUI rerun. The failed candidate does not emit its intermediate plan; the planned/final coordinates below are independently reconstructed from recorded input plus exact source rules, not a captured second Rust execution.

The two-container refusal is explained by the importer's unchanged-effective-size shortcut, not new port capacity or a failure to find an SCC placement. Sparse's remaining1 label/label and3 label/stroke relationships are separately identifiable: none of those four edge pairs shares positive collinear route length. The structural trunk improvement therefore leaves genuine label-association and crossing problems; it is not a complete readability result.

Two-container exact reconstruction

Frozen row two_containers_reversed_children reports Final Rust projection differs from intended node geometry. Both parents store224×94 but originally project308×446 because their children are farther from the parent origin. Each child stores224×94 and projects224×132 from its single semantic port's core minimum. The recorded input has no authored routes or anchors.

At each parent's planning group, cross-container edges cannot lift their other endpoint into that group. The two children consequently become canonical singleton blocks in one rank, with32-unit vertical gap. Their required content envelope is224×296. Parent padding/header produces288×424, less than the original projected minimum308×446, so the SCC planner intentionally retains308×446 for each parent. At root level both edges lift left→right;114-unit center-label width gives146-unit inter-block gap. There is no association-end label contribution for these FunctionalExchanges.

Source-derived intended plan:

Placement Intended position Intended size
Left group (...0002) (40,40) 308×446
Right group (...0004) (494,40) 308×446
Left A (...0006) (72,136) 224×132
Left B (...0008) (72,300) 224×132
Right A (...000a) (526,136) 224×132
Right B (...000c) (526,300) 224×132

auto_layout_probe.rs:916–927 preserves authored node size whenever the intended size equals the original projected size. This protects true identity transfers from baking derived minima into storage, but here both parent intended sizes equal their old projected sizes even though their child positions changed. Their stored size therefore remains224×94.

Core enclosure in projection.rs:549–576 uses24-unit right/bottom padding and64-unit header. For Left group, the new rightmost child boundary is72+224=296, so right=296+24=320 and final width=320−40=280. Lowest child boundary is300+132=432, so bottom=432+24=456 and final height=456−40=416. Right group has the same relative calculation: final280×416. Parent x/y remain exactly intended; child x/y and224×132 dimensions remain intended. Thus both parent dimensions shrink relative to the proposed308×446 and the importer's exact final-projection guard correctly rejects the mismatch.

This is not a new port-capacity expansion: each child has one port, capacity36 is below its existing132/224 dimensions, and the parents have no ports. The larger horizontal separation keeps the children facing their cross-container peers. The mismatch follows from less enclosure slack, not an enlarged port requirement. Because no intermediate candidate was emitted, the claim is this exact source-derived reconstruction; runtime confirmation belongs to the next parent-owned transfer check.

Critique of the proposed bounded importer correction

The parent's proposed one-reprojection correction addresses an actual transfer defect without changing the SCC algorithm. Prefer its observed-geometry predicate over “write all intended expanded sizes when children move,” which would normalize authored sizes unnecessarily on ordinary rigid-family translations.

Before changing storage, require the complete final node identity set and exact final positions. For every mismatch, allow correction only when the node is noncollapsed, its intended size equals its original projected size, and its first final dimensions are no greater than intended with at least one strictly smaller. Reject any missing/extra identity, position mismatch, larger dimension, collapsed mismatch, or mismatch outside that original shortcut. If all mismatches are eligible, set their stored sizes to intended simultaneously, then validate and project exactly once more. Accept only exact complete intended geometry; no iterative size chase.

True identity and rigid-subtree translation continue preserving original authored sizes because their first projection already matches. This failed case would write308×446 as explicit parent minima only because that footprint would otherwise be lost after child rearrangement. This is a declared stored-geometry change, so full Project conservation auditing must allow exactly those written minima; it must not mask every node-size difference.

Nested repairs can restore child sizes that force a parent above its intended size. Automatic port sides/slots may also change after minima are written. Neither justifies looping: the exact second projection must reject any remaining geometry mismatch, and actual final port/lead/full-route observations must use the returned Project. The second projection is stateless for that final stored model; a repeat comparison still matters for the whole SCC candidate. Keep fixed anchors, hidden metadata, route reset and original-to-final translation unchanged.

Useful targeted checks before reinterpreting the failed row: complete true-identity equality; rigid-family translation preserving authored sizes; this two-parent contraction preserving the intended footprint; rejection of larger/position/collapsed mismatches; and a nested case that either succeeds exactly in that one pass or refuses without partial model changes. Retain run01, change only the importer boundary, and compare the unchanged frozen SCC algorithm's rerun; do not tune placement in response to this defect.

Sparse label witnesses

Read complete candidate routes and label rectangles and independently intersected their coordinates. All rectangles below are estimated core bounds, not native glyph observations.

Label/label: flow_10 “Communications Enrich to Aggregate” (...03345a) overlaps flow_48 “Planning Enrich handoff to Delivery Validate” (...033480). The first label occupies x1662.800048828125..1902.800048828125,y430..454; the second x1520..1760,y428..452. Intersection is97.199951171875×22=2138.39892578125, exactly the emitted area. Their routes cross properly at(1640,460), but share zero positive collinear length. The label overlap is a distinct nearby association problem, not the intersection point itself.

Label/stroke,1: flow_12 “Communications Decide to Package” (...03345c) crosses the label of flow_11 “Communications Aggregate to Decide” (...03345b). Label rectangle is x2154..2394,y432..456. The stroke enters vertically at x2266 from y432 to444, then horizontally to x2394 at y444:12+128=140 units (emitted epsilon-inset139.9998). The two route polylines have no point contact and no positive shared interval. A raw route-intersection-only metric would miss this interference.

Label/stroke,2: that same flow_12 stroke traverses the full212-unit width of flow_25 “Planning Aggregate to Decide” (...033469), rectangle x2526..2738,y428..452, along y444. Emitted inset length211.9998 agrees. These routes also cross properly at(2632,444), but have no positive shared run.

Label/stroke,3: flow_05 “Sensing Decide to Package” (...033455) traverses the212-unit width of flow_32 “Delivery Aggregate to Decide” (...033470), rectangle x2526..2738,y860..884, along y876. Emitted inset length211.9998 agrees. Their proper crossing is(2632,876); again no positive shared run.

The candidate's whole sparse drawing reports shared length32,15 proper crossings,19 point contacts, zero label/node collisions, zero unrelated-node penetration and zero warnings. Those gains do not erase the explicit four label conflicts. The witnesses support retaining label association and occupied route/label space as separate evaluation criteria. They do not by themselves require changing the router, enlarging every gap, or adopting a joint engine; no such tuning or native acceptance follows from this diagnosis.

Evidence SHA256:

  • run01/small-scc/stdout.jsonl: b35cbe482f8ad23da068da5761bdc61cfb88de3b1fa982f90ce78f5e379c9742.
  • run01/subsystems_40_sparse/stdout.jsonl: 452690f23dda57f62d115b6d88e42d7f0283b4c86081d5149d8738ba6052e53b.