Files
ARCADIA-Studio/harness/experiments/boundary-order-20260925/plan.md
T

5.7 KiB

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.