Declare dependency-aware boundary ordering comparison
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
# Incoming boundary order experiment
|
||||
|
||||
Issue32, following the SCC checkpoint f4fa0c11. Keep the full OA/SA product goal
|
||||
and production/native acceptance requirements unchanged. This is one isolated
|
||||
planner comparison with released routing, not a quality-selected parameter sweep.
|
||||
|
||||
## Question and fixed candidate
|
||||
|
||||
The SCC planner drops a connection from a sibling group's local graph when the
|
||||
source is outside that group. Root SCC ranking knows which container is upstream,
|
||||
but the children have no information for matching order across the boundary.
|
||||
The existing two-container witness has164 shared units and one label/node
|
||||
collision, while the old layered candidate's incoming-neighbor order has zero
|
||||
for both. Preserve the SCC candidate's sparse40 structural improvement while
|
||||
restoring this missing information.
|
||||
|
||||
Start from the same canonical SCC plan, before import. Never change its SCC
|
||||
membership, condensation ranks, internal perimeter walks, node sizes, gaps or
|
||||
root layout. In each nonroot same-rank band, bundle undirected-connected SCC
|
||||
blocks as indivisible units with their existing internal order. Unanchored units
|
||||
retain their ordinal slots. Reorder only anchored units among their old slots,
|
||||
then repack by prefix sums of unchanged heights and gaps. Old absolute Y slots
|
||||
cannot be reused for differently sized blocks. Envelopes are mathematically
|
||||
invariant; finite arithmetic and exact final projection remain checked bounds.
|
||||
|
||||
An anchor is an oriented incoming projected edge whose target lies under the
|
||||
current sibling group and whose source does not. One distinct visible source
|
||||
placement contributes one vote per unit, independent of parallel relation count.
|
||||
Scores are the mean of current planned absolute source-center Y coordinates,
|
||||
summed in stable placement-ID order using f64. Break equal scores by original
|
||||
unit order. Undirected external edges supply no invented direction or score.
|
||||
This is a stated center-based heuristic, not a claim to match final port slots.
|
||||
|
||||
A group can change only when a band contains at least two anchored units.
|
||||
Create dependencies from every such active group that owns an offset along an
|
||||
external source placement's entire ancestor chain to the consuming group.
|
||||
Include the immediate containing group; do not invent additional hierarchy arcs.
|
||||
Condense this influence graph and process its SCC DAG deterministically. Before
|
||||
each SCC, compose a complete absolute-position snapshot from current offsets.
|
||||
All member groups calculate proposals from that snapshot before committing any
|
||||
of them. Each group commits once. Cyclic influence therefore has one simultaneous
|
||||
step, an explicit limitation rather than an unbounded convergence loop.
|
||||
|
||||
Recompose descendants through their ancestor offsets. Perform one final original-
|
||||
to-final placement import, preserving the existing reset/hidden/retained-route
|
||||
contract and conditional effective-minimum restoration. Exact final projection
|
||||
and actual mandatory leads must pass; no size/gap/anchor repair is added.
|
||||
Apply the existing graph, work and extent bounds to new dependency/snapshot work.
|
||||
|
||||
## Controls, falsifiers and acceptance
|
||||
|
||||
Retain all14 original cases, their SCC run02 outputs at2426d286 and the original,
|
||||
Arrange-reset and old-layered controls. Flat/no-boundary outputs, particularly
|
||||
sparse40 and both mixed-ID cases, must preserve complete Project, geometry and
|
||||
metrics exactly (new diagnostics are separate). Existing SCC-mode and released
|
||||
route-mode output must remain byte exact after adding the new observer mode.
|
||||
|
||||
The existing two-container witness requires Left A before Left B, Right B before
|
||||
Right A, with actual route sharing/contact/label improvement assessed against
|
||||
the old zero-sharing witness. Swapping both groups is not that success.
|
||||
|
||||
Add three independent topology falsifiers before execution:
|
||||
|
||||
1. Opposing parents: L.A→R.B, L.B→R.A, R.A→L.A, R.B→L.B. Contradictory order
|
||||
demands must remain deterministic, bounded and explicit; zero crossings is
|
||||
not an achievable requirement inferred from those demands.
|
||||
2. Three-parent chain: L.A→M.B, L.B→M.A, M.B→R.A, M.A→R.B. Preserve upstream
|
||||
L.A<L.B, obtain M.B<M.A and R.A<R.B, and preserve root ranks L<M<R.
|
||||
Compare relation-ID reversal and a uniform authored subtree translation.
|
||||
3. Two local two-node SCCs X/Y feeding a singleton Z in a later rank, with
|
||||
external Source.A→Y1 and Source.B→X1. Order Y before X without splitting
|
||||
either cycle or changing Z's rank/perimeter geometry.
|
||||
|
||||
Also run the existing two-container witness with authored source/target port
|
||||
anchors. Use meaningful pure tests for heterogeneous-height prefix packing,
|
||||
undirected bundle preservation and complete source-ancestor influence. These
|
||||
tests supplement rather than replace actual projected Project cases.
|
||||
|
||||
Record complete before/after Projects, dependency graph and SCC batches, source
|
||||
placement/edge hints, scores, before/after unit and block orders, final derived
|
||||
ports, geometry and warnings. Reconstruct preservation independently, including
|
||||
folded latent offsets, anchors, other views and eligible route resets. Check
|
||||
same-input equality, JSON/source roundtrips and ten full repeated calls. Report
|
||||
explicit refusals without treating a successful observer process as adoption.
|
||||
|
||||
Preserve crossings, all contact types, raw and edge-deduplicated shared intervals,
|
||||
label/node/label/stroke conflicts, enclosure/penetration, route length and area.
|
||||
Boundary improvement may worsen internal tracing; cyclic influence can retain
|
||||
crossings; source centers may disagree with fixed or derived ports. Keep those
|
||||
counterexamples. Stop this one comparison after independent source/result review.
|
||||
Production command/API/history integration and native route tracing remain
|
||||
required before accepting an Arrange replacement. Windows only; Linux remains
|
||||
excluded, and the existing prerelease remains unchanged.
|
||||
Reference in New Issue
Block a user