156 lines
9.1 KiB
Markdown
156 lines
9.1 KiB
Markdown
# Coherent cyclic-group placement result
|
||
|
||
Branch-specific issue32 experiment. **SCC condensation and compact cyclic groups
|
||
remove the dominant shared outside corridor, but this is not ready for production
|
||
Arrange.** The corrected transfer supports all 14 frozen cases, preserves the
|
||
declared model/geometry contract and is stable across ten calls. Local label
|
||
conflicts, folded-route backtracking, bipartite sharing and area costs remain.
|
||
No native tracing, command/history integration or release acceptance is claimed.
|
||
|
||
Independent evidence: [corrected source review](source-review-v2.md),
|
||
[run02 quality review](result-review-run02.md),
|
||
[run02 conservation review](conservation-review-run02.md), and
|
||
[transfer and label-conflict diagnosis](transfer-diagnosis.md).
|
||
|
||
Tested source: `2426d286483ab0445663221cd6010a3dadb89a97`. Run01 at
|
||
`4dd764fa6cfc6920350383e523ba5a597412ddf4` is retained, including its rejected
|
||
two-container case. Read the [predeclared plan](plan.md), [diagnosis](diagnosis.md)
|
||
and [design alternatives](design.md) for why this structural experiment followed
|
||
the flat lead-clearance repair rejected on readability grounds. Production routing is unchanged.
|
||
|
||
## What the structural witness establishes
|
||
|
||
Sparse 40 has four SCCs of ten nodes. Independent graph reconstruction confirms
|
||
four coherent 720×1024 blocks in condensation ranks 0–3, replacing the old
|
||
alias-cycle-break layout's interleaving across 16 ranks. The old prototype's y28
|
||
outside corridor contributed 38880 shared units; the new geometry has no
|
||
horizontal shared interval. Total raw pairwise sharing falls 40522→32 compared
|
||
with that old prototype, crossings 17→15, area 6020910→4001536. The remaining 32
|
||
units are one local vertical group. This improvement required no router penalty
|
||
or gap sweep and does not establish general lane separation.
|
||
|
||
Against current Arrange plus eligible-route reset, sparse crossings 94→15,
|
||
contacts 158→19, sharing 1990→32, label/node 14→0, label/stroke 31→3 and route
|
||
length 39660→18784. Area grows about 5.2%; label/label remains 1. Against the
|
||
original authored input, area and route length grow, so it is not a universal
|
||
improvement over every control. All controls remain in the raw evidence.
|
||
|
||
## Complete quality comparison
|
||
|
||
Each arrow compares the current Arrange-reset control with the SCC candidate.
|
||
Labels are node / other-label / unrelated-stroke collision counts. Area is
|
||
candidate/control. Sharing is raw segment-pair length, not unique physical ink.
|
||
|
||
|Case|Proper crossings|Shared length|Labels N/L/S|Area ratio|
|
||
|---|---:|---:|---:|---:|
|
||
|flat_chain_4|0→0|0→0|0/0/0→0/0/0|0.72×|
|
||
|chain_7_row_wrap|0→0|0→0|0/0/0→0/0/0|0.53×|
|
||
|diamond|0→0|36→36|0/0/0→0/0/0|0.91×|
|
||
|crossed_bipartite|0→0|276→368|0/0/0→0/0/0|0.57×|
|
||
|nested_cross_boundary|0→0|0→0|1/0/0→0/0/0|1.60×|
|
||
|authored_detour_and_label|0→0|0→0|0/0/0→0/0/0|0.93×|
|
||
|fixed_ports|0→0|0→0|0/0/0→0/0/0|0.94×|
|
||
|two_containers_reversed_children|0→0|148→164|1/0/0→1/0/0|1.18×|
|
||
|long_ordinary_labels|0→0|36→36|2/0/0→0/0/0|1.06×|
|
||
|workshop_sa_original|6→6|1832→344|1/0/0→3/0/1|1.81×|
|
||
|workshop_sa_folded|7→8|1194→726.5|0/0/0→3/0/2|1.35×|
|
||
|mixed_dispatch|10→7|716.4→516.6|0/0/0→0/0/0|1.46×|
|
||
|mixed_dispatch_edge_ids_reversed|9→6|512.4→462.6|0/0/0→0/0/0|1.40×|
|
||
|subsystems_40_sparse|94→15|1990→32|14/1/31→0/1/3|1.05×|
|
||
|
||
All 14 successful cases report zero unrelated node penetration, zero unrelated
|
||
node collision and no incompatible mandatory leads. Four folded-workshop
|
||
PromotedEndpoints warnings remain; no NoClearPath is reported. Those checks do
|
||
not establish arrowhead clearance, native glyph readability or usability.
|
||
|
||
Mixed's fixed relation-ID permutation leaves projected node/port geometry and
|
||
the SCC plan exactly equal, while final routes differ: crossings 7 versus 6 and
|
||
sharing 516.6 versus 462.6. The placement is stable under this permutation; the
|
||
whole routed drawing is not. Mixed area grows despite shorter routes.
|
||
|
||
The folded raw shared total 726.5 includes a promoted route that retraces 6 units.
|
||
Distinct-edge occupancy counts 708.5: the 18-unit difference is raw segment-pair
|
||
multiplicity, independently reconciled rather than silently discarded.
|
||
The remaining sparse label/label pair and three label/stroke pairs have no
|
||
positive shared route interval; one pair has no route point contact at all.
|
||
Thus label association needs its own treatment after structural placement.
|
||
See the independent reviews and failure diagnosis in the evidence archive.
|
||
|
||
## Correctness repair and preservation
|
||
|
||
Run01 rejected the two-container fixture because parents intended to retain
|
||
their old 308×446 effective dimensions instead shrank to 280×416 after children
|
||
moved inward. The importer preserved authored 224×94 sizes under an overly broad
|
||
identity shortcut. Source 2426d286 restores intended unchanged effective minima
|
||
only for noncollapsed nodes whose first final position is exact and whose
|
||
dimensions are smaller/equal. It rejects every other mismatch before making
|
||
all qualified writes simultaneously, then validates and requires one exact
|
||
second projection. There is no iteration or change to SCC ordering/gaps/packing.
|
||
|
||
The original13 successful candidate Projects, metrics and plans are exactly
|
||
unchanged in run02. The new two-container result confirms both intended 308×446
|
||
parent minima and all source-derived planned positions. All 14 report exact
|
||
same-input output, nine subsequent calls equal to first/previous, and exact
|
||
JSON and textual-source roundtrips. Repeated Projects/source strings are not
|
||
serialized, so independent audits distinguish emitted Rust checks from their
|
||
own raw structural comparisons.
|
||
|
||
Independent audits reconstruct complete expected Projects with only declared
|
||
positions, required sizes and eligible-route resets changed. Semantic records,
|
||
authored anchors, route identities/order, other diagrams and hidden metadata
|
||
remain exact. Three latent folded descendants move (-680,0) with their collapsed
|
||
owner. Current fixtures do not exercise surviving dormant authored-route
|
||
translations or State-specific headers; no such coverage is claimed. Exact
|
||
intended plan nodes are not emitted, so final transfer equality remains a source
|
||
gate supplemented by independent final enclosures and the reconstructed failure
|
||
witness. No history/Undo/Redo test applies to these example-only imports.
|
||
|
||
## Verification and reproduction
|
||
|
||
Windows Rust 1.98.1 gnullvm and LLVM-mingw 20260908, locked offline dependencies,
|
||
one build job. Source 2426d286 passes 8 example tests, strict example Clippy and an
|
||
optimized build (gates 24–26). Earlier source 4dd764fa passes 5 example tests,
|
||
Clippy and build (gates 21–23). Gate 20's needless-range-loop Clippy failure and
|
||
earlier packing tests are retained, with their exact source pins. Core code is
|
||
unchanged from the previously verified lead diagnostic; this is not a new
|
||
whole-workspace suite claim.
|
||
|
||
```
|
||
cargo test --locked --offline -p oa-core --example auto_layout_probe
|
||
cargo clippy --locked --offline -p oa-core --example auto_layout_probe -- -D warnings
|
||
cargo build --release --locked --offline -p oa-core --example auto_layout_probe
|
||
auto_layout_probe --scc-fixtures
|
||
auto_layout_probe --scc-placement PROJECT_JSON DIAGRAM_UUID
|
||
auto_layout_probe --route-corpus MANIFEST
|
||
```
|
||
|
||
Both runs capture the built executable before further compiler writes, verify
|
||
source/binary/input hashes, and complete eight bounded child processes. The
|
||
five-case released route-control output is byte-identical in both runs, SHA256
|
||
`9a31a676f23dea2f41daec39497f569d68231fa0fd66e5a1a476be97d5d61ac2`.
|
||
Output process success is separate from per-case support. No latency guarantee
|
||
is inferred from these short corpus runs. The planner work counter is weighted,
|
||
not an exact instruction or elapsed-time bound.
|
||
|
||
## Decision and evidence
|
||
|
||
Retain coherent SCC blocks as the supported structural direction. Do not adopt
|
||
this complete candidate yet. Next work should target the concrete local label
|
||
association, folded retrace and cross-container ordering witnesses. Preserve
|
||
model/port/fold contracts, fixed inputs and the full quality vector; do not tune
|
||
global gaps, rerun perimeter candidates to select a score, or weaken projection
|
||
equality. Production integration and native trace/overview workflows remain
|
||
required once a candidate satisfies those constraints.
|
||
|
||
The evidence archive contains both runs, failed and successful gate receipts,
|
||
frozen inputs, controls, executable capture hashes, scripts and independent
|
||
source/result/conservation reviews. Binaries are not embedded. Final claim and
|
||
archive review is [versioned separately](final-review.md) outside the immutable archive.
|
||
Archived supervisor scripts retain machine-local paths and Windows environment
|
||
assumptions; the repository-relative build and probe commands above are the
|
||
portable entry points after obtaining the source and locked dependencies.
|
||
|
||
Archive `evidence/scc-placement-2426d286.zip`: 6041259 bytes, SHA256 `fbf40882ed807a1b40db8b3b9b9c846b060db02cbcc60611c18f9620c1fd59c9`, 168 individually verified members.
|
||
|
||
This checkpoint is local-only until confirmed Gitea publication and byte readback. Linux builds remain excluded by the user; the frozen prerelease is unchanged.
|