113 lines
6.5 KiB
Markdown
113 lines
6.5 KiB
Markdown
# Complete scoring/lane comparison
|
||
|
||
**Stop tuning these nine fixtures; retain the variants as experimental evidence.**
|
||
Bounded parallel lane candidates have some measurable value, but do not resolve
|
||
the compact bipartite ambiguity and introduce a routing-cost concern. The
|
||
stronger overlap coefficient is no longer present at the branch tip. No routing
|
||
or Arrange replacement has been accepted for production.
|
||
|
||
PL source `d0be9ff0674373fcf9623daf62bbf50dad02c4df` combines target-join J,
|
||
coefficient 3.0/cap 80 and bounded lanes. L source
|
||
`e8ec6dbb3160f62476a5557f14605f68959f65fe` restores coefficient 0.12, retaining
|
||
J and lanes. Each leg keeps every obstacle coordinate and adds at most 64
|
||
deterministic coordinates per axis at CLEARANCE offsets from settled other-edge
|
||
segments. Fast/grid searches receive the same augmented space. Endpoint geometry,
|
||
authored pins, attachments and model metadata are not edited by this operation.
|
||
|
||
The [source review](lanes-source-review.md) records attribution limits: retained
|
||
coordinates are bounded, but collection/sorting of prior segments is not charged
|
||
to the search budget. Extra axes can hit the existing grid-cell cap and can alter
|
||
grid scores through segment subdivision. This is not a proof of globally optimal
|
||
paths or constant preparation cost. No new engine/runtime dependency was added.
|
||
|
||
## Results
|
||
|
||
Every one of the 37 complete Projects, node sets, port sets and exact endpoints
|
||
matches its control in both comparisons. All nine candidate invariants,
|
||
roundtrips and repeated-call checks hold. Values below are raw pairwise shared
|
||
length for the crossed-bipartite fixture; complete vectors remain in the archive.
|
||
|
||
| Router | Original scene | Existing Layout/reset | Layered candidate |
|
||
| --- | ---: | ---: | ---: |
|
||
| Released router | 730 | 276 | 344 |
|
||
| J | 872 | 276 | 187 |
|
||
| J + stronger penalty (P) | 730 | 276 | 187 |
|
||
| J + stronger penalty + lanes (PL) | 724 | 72 | 176 |
|
||
| J + lanes, original penalty (L) | 724 | 276 | 176 |
|
||
|
||
PL's existing-Layout/reset result eliminates 204 nonterminal shared units but
|
||
adds one proper crossing, 24 route-length units and 19392 area units. Contacts
|
||
decrease 6→5; these tradeoffs stay explicit. L with the original coefficient
|
||
does not achieve that baseline improvement. Both lane variants leave 104
|
||
nonterminal units in the compact layered case, with nine point contacts. Its
|
||
drawing area returns from J's 175960 to 165360. Eight other layered metric
|
||
vectors are unchanged. The parent viewed the PL bipartite schematic: vertical
|
||
channels are separated, but horizontal tails still join at ambiguous branches.
|
||
|
||
Compared with J, L reduces original bipartite sharing 872→724 and original
|
||
two-container sharing 54→12 without changing the other original quality fields;
|
||
two-container baseline/reset sharing reduces 18→12. PL compared with P includes
|
||
a two-container original sharing regression 6→12 while reducing one bend, 12
|
||
length units and one contact. The [PL audit](penalty-lanes-audit.md) documents all
|
||
seven changed rows; no scalar is treated as a universal quality score. Labels,
|
||
obstacles and warnings remain separately checked. Core schematics and approximate
|
||
label boxes do not establish actual glyph layout or native route traceability.
|
||
|
||
## Verification and evidence
|
||
|
||
Same frozen Windows Rust1.98.1 gnullvm environment, one Cargo job, locked/offline,
|
||
incremental disabled. Linux excluded. All runs close with exit0, unchanged
|
||
inputs and no runner failure:
|
||
|
||
```text
|
||
# PL: five matched tests, including all three new lane tests
|
||
cargo test --locked --offline -p oa-core --lib lane
|
||
# L: 188 tests passed, zero failed/ignored
|
||
cargo test --locked --offline -p oa-core --lib --test release_routing --test routing_geometry --test routing_labels --test state_diagrams --test group_movement
|
||
# Both variants: complete nine-fixture diagnostic
|
||
cargo run --locked --offline -p oa-core --example auto_layout_probe
|
||
# L: strict core/all-target Clippy passed
|
||
cargo clippy --locked --offline -p oa-core --all-targets -- -D warnings
|
||
```
|
||
|
||
The full 188 check is for L, not PL: an existing private J test intentionally
|
||
asserts the original 0.12 cost. PL's filtered run executes three new lane tests
|
||
and two existing Scenario tests matched by `lane`; 130 other library tests are
|
||
filtered. Lane witnesses cover base-coordinate preservation, 64-extra bounds,
|
||
deduplication/order independence, relevance ranking, nonfinite rejection and
|
||
fast/grid selection of a feasible parallel path under the experimental cost.
|
||
|
||
**Cost signal:** routing_geometry's 18-test runtime is 16.43s under L versus
|
||
4.30s under J on the same machine/environment. This excludes compilation, but
|
||
is one suite observation per variant, not an isolated route benchmark or a
|
||
performance bound. It warrants profiling before adopting per-leg lane scans.
|
||
Whole cargo/probe elapsed times include compilation and are unsuitable for that
|
||
comparison.
|
||
|
||
The [independent final L/four-way audit](lanes-results-audit.md) confirms all 37
|
||
fixed bindings and the 188-test result, checks the recorded geometry/contact
|
||
evidence, and likewise recommends withholding L from production pending the
|
||
independent corpus and route-only timing.
|
||
|
||
[Evidence archive](run-lanes/lanes-e8ec6db.zip), 3518507 bytes, SHA256
|
||
`5512b4cbd99e3bf03eb975e25fb980f7b1a95a5cb19f3687fb3d6d83d1839e8f`,
|
||
contains original runs08–12, 74 offline images, complete comparisons, independent
|
||
axis-based contact audits, binary identities and runners. [Manifest](
|
||
run-lanes/manifest.json) binds every member, all byte-compared to originals.
|
||
PL output SHA256 `04bb9ba4ab551a965cea130510cca6b96d9c1012911f191b14a7aa7efbf563dd`;
|
||
L output SHA256 `64232f580600b7a874a6f4ceb128a6188fd5ff72655bc6b93d824ebed27ffb7d`.
|
||
The earlier P result and original archive remain linked in [results-p.md](results-p.md).
|
||
|
||
## Decision and next evidence
|
||
|
||
Do not choose a global router policy from these nine scenes. Freeze a small
|
||
independent corpus before the next run: realistic authored nested/folded content,
|
||
mixed-direction shared/distinct-port fan-in/out with a fixed edge-ID permutation,
|
||
and a modest sparse diagram for isolated routing-time/budget observations. Compare
|
||
J and L with an explicit route-tracing rubric and full quality vector. Preserve
|
||
the original Scene/Arrange distinction and source/history lifecycle constraints.
|
||
This should decide whether the lane cost is justified or the simpler router
|
||
should be retained before broadening the Layout prototype. Fold/filter rules,
|
||
one-command Undo, API/source parity and real desktop acceptance remain required;
|
||
the separately pending State-label issue36 is not silently included here.
|