Record bounded placement clearance result and preserved quality regressions
This commit is contained in:
@@ -163,8 +163,9 @@ pub fn repair(project: &Project, diagram: Id) -> Result<Project, ModelError> {
|
||||
{
|
||||
return Err(fail("reprojection changed node identity/size/topology"));
|
||||
}
|
||||
// Charge a conservative endpoint-pair/obstacle allowance before the
|
||||
// diagnostic: at most four cardinal candidates at each endpoint.
|
||||
// Charge work units proportional to node count and at most sixteen
|
||||
// endpoint pairs. This is not an exact operation count or a bound on
|
||||
// all projection work; graph, round and span limits apply separately.
|
||||
spend(
|
||||
&mut work,
|
||||
view.edges
|
||||
|
||||
@@ -531,3 +531,18 @@ node interiors do not prove compatibility with our inflated obstacles and leads.
|
||||
Do not silently shorten those leads, move authored anchors, or persist external
|
||||
generated bends to make a comparison pass. Revisit engine integration only with
|
||||
a faithful geometry interface and observed usability benefit.
|
||||
|
||||
## Lead compatibility does not establish layout quality — 2026-09-25
|
||||
|
||||
The [bounded separation experiment](experiments/placement-clearance-20260925/results.md)
|
||||
at07405126 fixes the exact sparse mandatory-lead conflict by moving eight nodes
|
||||
down11 units. It removes NoClearPath and node penetration while preserving model
|
||||
records, anchors and repeated-call stability. Existing route-control output is
|
||||
byte-identical to released routing. However crossings20→22, shared length666→761
|
||||
and label/stroke intersections0→1 prevent a general readability improvement
|
||||
claim. Keep this flat-only repair isolated; do not connect it to production
|
||||
Arrange or increase its rounds to tune away the result. Use actual endpoint
|
||||
compatibility as a necessary placement constraint in a future initial coordinate
|
||||
assignment with connection ordering and corridor/label space. Compound geometry,
|
||||
automatic side changes and native tracing remain separate required evidence.
|
||||
This is branch-specific experimental evidence, not an integrated capability.
|
||||
|
||||
@@ -130,3 +130,11 @@ Both workshop reference cases reject an unsupported undirected edge. Neither
|
||||
candidate is adopted. The next interface must account for final automatic
|
||||
ports and mandatory leads, not only node/label boxes. All results remain
|
||||
branch-specific; Gitea holds publication and integration status.
|
||||
|
||||
The follow-up [mandatory-lead separation experiment](experiments/placement-clearance-20260925/results.md)
|
||||
supplies that necessary check using the router's actual endpoint choices. One
|
||||
bounded flat repair removes the sparse hard routing failure, but worsens crossing,
|
||||
shared-run and label/stroke measures. Preserve the compatibility result without
|
||||
adopting this repair as Arrange. Initial connection ordering and reserved routing/
|
||||
label space, with compound handling, remain the next planner questions; more
|
||||
repair iterations or router penalty tuning are not supported by this evidence.
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
# Bounded placement compatibility design for #32
|
||||
|
||||
Recommendation: implement **A's small shared core feasibility seam, then B's bounded separation pass as the first experimental consumer**. This is one practical increment toward a native connection-aware planner, not a new router or a general constraint framework. Keep the released router, automatic-port projection policy and accepted Arrange reset/history contract fixed. C remains a diagnostic reference, not the next production step.
|
||||
|
||||
This source-only assessment follows reference2850b915 and the exact sparse diagnosis in `placement-sparse-routing-diagnosis-20260925.md`. No source changes, compiler, router or GUI execution were performed.
|
||||
|
||||
## What the source requires
|
||||
|
||||
- `routing.rs:387–409` maps actual projected semantic ports to exactly one tip and outward18-unit stub. Explicit non-port attachment preferences also constrain endpoints; otherwise four alternatives exist. `route_diagram_impl:519–541` handles promoted ownership, attachment suppression and existing authored route selection before endpoint generation. A planner must not approximate these choices independently.
|
||||
- `edge_obstacles:662–680` preserves endpoint-ancestor headers, inflates obstacles by12; `route_edge:830–840` exempts only each lead's own endpoint owner from that lead's collision check. `fast_path:1056–1062` and `grid_path:1153–1159` also reject stubs inside any obstacle. Terminal lead clearance is necessary, not sufficient for complete routing.
|
||||
- `projection/port_layout.rs:156–245` chooses automatic sides from peer centers, semantic fallback and clear exits, then overrides manual anchors. Lines246+ grow capacity and enclose nodes after freezing side choices for that projection call. Reprojecting a new placement can therefore change automatic side, order and effective node size. Fixed semantic port identity does not mean fixed automatic coordinates.
|
||||
- The existing `examples/auto_layout_probe/layered.rs:27–83` starts with Layout, rejects folded/omitted topology, resets routes, and uses one global largest label for all gaps. Its three passes use boundary-neighbor order but no final lead-compatibility feedback. It is a useful coordinate-assignment skeleton, not ready for adoption; sparse shared-run regressions remain independent of terminal clearance.
|
||||
|
||||
## Alternatives and decision
|
||||
|
||||
| Alternative | Benefit | Concrete cost / failure | Decision |
|
||||
| --- | --- | --- | --- |
|
||||
| A. Shared core endpoint/lead feasibility, then constraint-aware placement | One authority for projection/attachments/promotions/ancestor obstacles. Planner can reserve actual required space and identify blockers. | A broad public routing API would ossify internals; pure advance spacing cannot predict every automatic-port flip. | Add only a small internal, read-only report reused by routing's lead guard and planner. Combine with actual reprojection. |
|
||||
| B. Postplacement separation with actual reprojection | Small experiment on existing layered output; fixes the exact sparse gap without importing external routing. Tests whether locally enforcing clearance is useful before restructuring all coordinate assignment. | Arbitrary nudging can destroy layers/containment, oscillate as ports flip, and grow area indefinitely. A duplicate obstacle implementation would drift. | First consumer of A, with fixed sibling order, monotone gap constraints, finite rounds and atomic failure. Do not ship a free-form nudge loop. |
|
||||
| C. ELK free automatic ports / coupled geometry | May let mature layout select compatible port-facing space; useful reference for quality ceiling. | Rust reselects automatic ports after import; importing ELK port locations would change application semantics or persist derived state. Node-level fixed/free policies complicate mixed authored/automatic anchors. Engine lead spacing differs from core. | Defer as implementation. Optional later diagnostic only if native bounded experiment fails a named case. |
|
||||
|
||||
## Small implementation seam
|
||||
|
||||
Extract a shared predicate for endpoint-pair lead admissibility and stub containment using the already constructed endpoints/edge obstacles. Routing should call exactly that predicate without changing endpoint order, search costs or fallback. A planner-facing internal report can identify edge, end, actual owner, semantic port or attachment, tip/stub, blocker ID/bounds and which guard failed. It must preserve alternative endpoints: an unconstrained non-port end is not infeasible merely because one of its four sides is blocked. Report a hard incompatibility only when no allowed pair survives. For the first separation consumer, act only on singleton endpoints with a unique unrelated obstacle; leave ambiguous alternatives explicit rather than choosing a new persistent attachment.
|
||||
|
||||
Reuse the same effective-route selection (promotion suspends custom attachments; semantic ports take precedence) as routing. Avoid a public serializable constraints model, desktop dependency, whole routed path search or label measurement within this report. A private helper plus thin crate-visible wrapper is enough. For a diagnostic example outside the crate, expose only the narrow report if needed, or run the test inside core instead of making every routing internal public.
|
||||
|
||||
## Finite native experiment
|
||||
|
||||
1. Preserve the original Project and freeze Arrange reset eligibility. Compute the existing connection-aware sibling order/ranks once, including its explicit cycle fallback; keep released/reset control available for comparison. Do not use repeated Command::Layout inside repair.
|
||||
2. Project the candidate, obtaining actual automatic ports, projected sizes and obstacles. Obtain the shared incompatibility report. If none, proceed to final routing; this is not yet a quality pass.
|
||||
3. For an actionable blocker, add a separation inequality to the **existing sibling/rank coordinate assignment**, not an arbitrary node translation. Lift owner and blocker to distinct movable child subtrees under their lowest common visible ancestor; translate whole subtrees, including latent folded geometry. If no distinct movable groups exist, report unsupported constraint. Keep sibling order/orientation fixed. Choose a consistent existing ordering axis; for the exact vertically stacked sparse pair, require owner top >= blocker bottom +30. The30 is this 18-unit outward lead plus12 clearance, not a universal node gap. Prefer a small explicit numerical margin for new placement, leaving router epsilon unchanged.
|
||||
4. Recompute positions and parent enclosure from frozen minima and accumulated gap requirements. Reproject; side changes or capacity growth generate new constraints. Allow at most four repair rounds and a fixed global constraint/work bound. Never alternate swapping the same siblings or add gaps to already inflated stored sizes. Repeated identical geometry with unresolved constraints, opposite incompatible order constraints, excessive extent or exhausted rounds returns an explicit experimental failure and leaves original untouched. The first finite bound is an experiment limit, not proof of convergence.
|
||||
5. Route the final candidate once with the released router; reject newly introduced unrelated-node penetrations or NoClearPath. Separately assess existing quality vector and trace tasks against reset control. All metadata reconstruction happens once from original to final deltas; retain existing route entries/order/attachments/port anchors, clear only eligible pins/full labels, and preserve hidden/promoted metadata via accepted translation. Production adoption would apply one candidate through the existing transaction/history path with final validation.
|
||||
|
||||
This experiment should first use flat sparse and mixed fixtures plus one nested pair, not silently claim all OA/SA/State layouts. The current layered folded/omitted rejection must remain explicit until the separate full-forest policy is implemented. A repair pass does not resolve the prototype's enormous shared runs: if those persist, do not accept it merely because lead clearance succeeds.
|
||||
|
||||
## Finite falsifiers and delivery point
|
||||
|
||||
- Exact sparse witness: at20-unit gap the target18-unit stub intersects the unrelated12-inflated obstacle; at30 plus declared placement margin the mandatory lead must clear. All tips/port identities follow final projection; no authored anchor edit or persisted bends.
|
||||
- Automatic-side flip: moving a peer changes side; feasibility is reevaluated on the changed side. A stale first-projection pass is a failure. Shared semantic port must remain one port for all incident edges.
|
||||
- Fixed-anchor witness and constrained non-port attachment: keep authored values exact; move geometry or fail. An unconstrained non-port edge with one clear side must not force unnecessary separation for its blocked alternatives.
|
||||
- Nested obstacle: entire selected child subtree moves, children stay enclosed below headers, other branches and all semantic records remain exact. Folded/filtered cases must either satisfy the declared full-forest policy or return explicit unsupported; no unsupported-as-pass accounting.
|
||||
- Same input twice must match; ten repeated full Arrange candidates must not accumulate clearance or oscillate. A two-cycle or container growth falsifies the proposed assignment scheme.
|
||||
- Existing five-case frozen corpus: full conservation, actual projected geometry, warnings and unrelated penetration checks; retain label/crossing/shared-run/area values and original named trace tasks. Required outcome is no new hard routing failure plus at least a concrete connection-tracing improvement on a supported real scene. No scalar quality winner inferred from safety alone.
|
||||
|
||||
Stop after the shared seam, sparse/fixed-port tests and one bounded repair candidate are evaluated. If repair needs changing sibling order repeatedly or cannot fix the sparse witness without unacceptable displacement, move the constraints into coordinate assignment/ranking rather than adding more repair iterations. If it fixes terminal compatibility but old layered quality remains poor, next work is connection order/corridor allocation, not router penalty tuning. This yields a runnable, falsifiable increment without committing to an external engine or a general solver.
|
||||
@@ -0,0 +1,986 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"source_commit": "074051261a0beee1047e2b5624c879deef7813bc",
|
||||
"archive": {
|
||||
"file": "placement-clearance-07405126.zip",
|
||||
"bytes": 3887975,
|
||||
"sha256": "0589a3d413596eec697bab37934d504b055bcf2ab53a0ccc0248ddc107e4a71c"
|
||||
},
|
||||
"members": [
|
||||
{
|
||||
"member": "collector/analyze-placement-clearance-20260925.py",
|
||||
"bytes": 3875,
|
||||
"sha256": "a52be0f3d79870eb554f52036bea032d72e5e641207a21b05f4f6a0779b32da5"
|
||||
},
|
||||
{
|
||||
"member": "collector/analyze-placement-clearance-v2-20260925.py",
|
||||
"bytes": 3907,
|
||||
"sha256": "386225a8216e03a4a629e0dbe75d6cc1543d6cf5a20a5ad386e81621d3d5d4b7"
|
||||
},
|
||||
{
|
||||
"member": "collector/archive-placement-clearance-20260925.py",
|
||||
"bytes": 2866,
|
||||
"sha256": "67d1f13a7e089668d45f8de10f6567e8c801ed65367ca20e25a1f82f90181bc1"
|
||||
},
|
||||
{
|
||||
"member": "collector/run-placement-clearance-20260925.py",
|
||||
"bytes": 4663,
|
||||
"sha256": "8f4a7b8ad7ad10ef854503cd171068a8b395895dfafb82f1f09961e81bbe8fcd"
|
||||
},
|
||||
{
|
||||
"member": "collector/run-placement-clearance-v2-20260925.py",
|
||||
"bytes": 4727,
|
||||
"sha256": "3e2449c87938ed233d68fe8f2db53c97e0b5aaa1ced021dbe7217f782a7e0d98"
|
||||
},
|
||||
{
|
||||
"member": "collector/run-routing-corpus-check-20260925.py",
|
||||
"bytes": 2793,
|
||||
"sha256": "2726a397bd4ecb4dcfff6fc170a66ce2655229079f42335faa2a4bfe4a202f6d"
|
||||
},
|
||||
{
|
||||
"member": "gates/13-clearance-core-tests/command/changes.patch",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "gates/13-clearance-core-tests/command/context.json",
|
||||
"bytes": 3614,
|
||||
"sha256": "17b422a15ea082957859136d11d2cabe19fdbd66e9d7f1a6143fd104870a1a5f"
|
||||
},
|
||||
{
|
||||
"member": "gates/13-clearance-core-tests/command/inputs-after.json",
|
||||
"bytes": 1750859,
|
||||
"sha256": "f0483f2f9ce586c5dafd6e4639dc59116f21c180599a3aa14305b0029c5d7970"
|
||||
},
|
||||
{
|
||||
"member": "gates/13-clearance-core-tests/command/inputs-before.json",
|
||||
"bytes": 1750859,
|
||||
"sha256": "f0483f2f9ce586c5dafd6e4639dc59116f21c180599a3aa14305b0029c5d7970"
|
||||
},
|
||||
{
|
||||
"member": "gates/13-clearance-core-tests/command/output.log",
|
||||
"bytes": 1951,
|
||||
"sha256": "aa86ca8b741212dabdec034e5b5d2a6ff42bc34669d4cbc395037a487d422dbc"
|
||||
},
|
||||
{
|
||||
"member": "gates/13-clearance-core-tests/command/result.json",
|
||||
"bytes": 4286,
|
||||
"sha256": "5fff01d5334d11f96cb035fc74567c156f7397d65d63738d0331e79a1d17b818"
|
||||
},
|
||||
{
|
||||
"member": "gates/13-clearance-core-tests/command/stderr.log",
|
||||
"bytes": 529,
|
||||
"sha256": "bfdd486b19efdb9dc23e71473ec74f121f9f5c1f8871892acb68b3dd35822c09"
|
||||
},
|
||||
{
|
||||
"member": "gates/13-clearance-core-tests/environment.json",
|
||||
"bytes": 9466,
|
||||
"sha256": "d9d984528a82c0db3c2e009db91104d7b7c1233921793802bbeb87677f35daf8"
|
||||
},
|
||||
{
|
||||
"member": "gates/13-clearance-core-tests/orchestration.log",
|
||||
"bytes": 185,
|
||||
"sha256": "638a9a0b1aeaa2ca4e016ccd20a5afa62b8d11ff84e9b37c1ac6500996f9b0da"
|
||||
},
|
||||
{
|
||||
"member": "gates/14-clearance-core-tests/command/changes.patch",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "gates/14-clearance-core-tests/command/context.json",
|
||||
"bytes": 3614,
|
||||
"sha256": "e747d3edc3a8e22c412611866ef6a04a340dce9c5dfbf6c45f267b8f3be4c81d"
|
||||
},
|
||||
{
|
||||
"member": "gates/14-clearance-core-tests/command/inputs-after.json",
|
||||
"bytes": 1750859,
|
||||
"sha256": "0232386c3fd6ce76cbc2b4919077fffdd1d8a5fe8eda2d04dcae783ee668c9e4"
|
||||
},
|
||||
{
|
||||
"member": "gates/14-clearance-core-tests/command/inputs-before.json",
|
||||
"bytes": 1750859,
|
||||
"sha256": "0232386c3fd6ce76cbc2b4919077fffdd1d8a5fe8eda2d04dcae783ee668c9e4"
|
||||
},
|
||||
{
|
||||
"member": "gates/14-clearance-core-tests/command/output.log",
|
||||
"bytes": 3737,
|
||||
"sha256": "6fe31a1fb49deaf06acbaf4f4f88a9188ccb132b8cbe72e051113d2d35302ee5"
|
||||
},
|
||||
{
|
||||
"member": "gates/14-clearance-core-tests/command/result.json",
|
||||
"bytes": 4284,
|
||||
"sha256": "67e97e872a0e7936239fe3c3557ed04b2d1542854642017113e5dfc88dbe86c5"
|
||||
},
|
||||
{
|
||||
"member": "gates/14-clearance-core-tests/command/stderr.log",
|
||||
"bytes": 729,
|
||||
"sha256": "2540d375f541048be3088c1e1bc4e9d6585ac706490d0823ce6d9f600a199ac5"
|
||||
},
|
||||
{
|
||||
"member": "gates/14-clearance-core-tests/environment.json",
|
||||
"bytes": 9466,
|
||||
"sha256": "d9d984528a82c0db3c2e009db91104d7b7c1233921793802bbeb87677f35daf8"
|
||||
},
|
||||
{
|
||||
"member": "gates/14-clearance-core-tests/orchestration.log",
|
||||
"bytes": 183,
|
||||
"sha256": "7370c8cba21844ca9b00078dba0c7a03830e32161b102715c97825deb77a9395"
|
||||
},
|
||||
{
|
||||
"member": "gates/15-clearance-unit-tests/command/changes.patch",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "gates/15-clearance-unit-tests/command/context.json",
|
||||
"bytes": 3521,
|
||||
"sha256": "384bba6f9aa5b50ffffa29cd73ef2185882cc62bbd53c25e02e4c31293ba1c4a"
|
||||
},
|
||||
{
|
||||
"member": "gates/15-clearance-unit-tests/command/inputs-after.json",
|
||||
"bytes": 1750859,
|
||||
"sha256": "0232386c3fd6ce76cbc2b4919077fffdd1d8a5fe8eda2d04dcae783ee668c9e4"
|
||||
},
|
||||
{
|
||||
"member": "gates/15-clearance-unit-tests/command/inputs-before.json",
|
||||
"bytes": 1750859,
|
||||
"sha256": "0232386c3fd6ce76cbc2b4919077fffdd1d8a5fe8eda2d04dcae783ee668c9e4"
|
||||
},
|
||||
{
|
||||
"member": "gates/15-clearance-unit-tests/command/output.log",
|
||||
"bytes": 14004,
|
||||
"sha256": "e8e8079c8c5f7e7b7083d408d5f9810ebd4697c0365ec4c5312f5e237aa67b60"
|
||||
},
|
||||
{
|
||||
"member": "gates/15-clearance-unit-tests/command/result.json",
|
||||
"bytes": 4192,
|
||||
"sha256": "a7e897f626d6adcca2db2ec79e1d4a7764a87c892c7a36bcd0025847877deaf7"
|
||||
},
|
||||
{
|
||||
"member": "gates/15-clearance-unit-tests/command/stderr.log",
|
||||
"bytes": 463,
|
||||
"sha256": "f30d41bf925b7ff2169e0e34d3bd287274bba9dc966484290cec202c06e2f240"
|
||||
},
|
||||
{
|
||||
"member": "gates/15-clearance-unit-tests/environment.json",
|
||||
"bytes": 9466,
|
||||
"sha256": "d9d984528a82c0db3c2e009db91104d7b7c1233921793802bbeb87677f35daf8"
|
||||
},
|
||||
{
|
||||
"member": "gates/15-clearance-unit-tests/orchestration.log",
|
||||
"bytes": 183,
|
||||
"sha256": "5dafd9bd73d6e6714baadf9ffd01cdfa22572a72882d6c6587e531fc4765c50d"
|
||||
},
|
||||
{
|
||||
"member": "gates/16-clearance-release-build/command/changes.patch",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "gates/16-clearance-release-build/command/context.json",
|
||||
"bytes": 3536,
|
||||
"sha256": "5c22dcf46818a8067f3e465725597510c7e29a32db6bfba1a7b7e912f9e57de5"
|
||||
},
|
||||
{
|
||||
"member": "gates/16-clearance-release-build/command/inputs-after.json",
|
||||
"bytes": 1750859,
|
||||
"sha256": "0232386c3fd6ce76cbc2b4919077fffdd1d8a5fe8eda2d04dcae783ee668c9e4"
|
||||
},
|
||||
{
|
||||
"member": "gates/16-clearance-release-build/command/inputs-before.json",
|
||||
"bytes": 1750859,
|
||||
"sha256": "0232386c3fd6ce76cbc2b4919077fffdd1d8a5fe8eda2d04dcae783ee668c9e4"
|
||||
},
|
||||
{
|
||||
"member": "gates/16-clearance-release-build/command/output.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "gates/16-clearance-release-build/command/result.json",
|
||||
"bytes": 4209,
|
||||
"sha256": "b2b897fae6648e0b781f660af1bc893d4393015e4603f490a3cba87475bd3c1e"
|
||||
},
|
||||
{
|
||||
"member": "gates/16-clearance-release-build/command/stderr.log",
|
||||
"bytes": 179,
|
||||
"sha256": "2e3fa75afc6e2730e915bef139c9cf8d61d48819a4b43b75be8908efddb58cd3"
|
||||
},
|
||||
{
|
||||
"member": "gates/16-clearance-release-build/environment.json",
|
||||
"bytes": 9470,
|
||||
"sha256": "1cda80470e5893747b1aad7eda5ef51d57069441e810698cd7f94f7a7521bfe5"
|
||||
},
|
||||
{
|
||||
"member": "gates/16-clearance-release-build/orchestration.log",
|
||||
"bytes": 186,
|
||||
"sha256": "81b845a84ea6596724b39645b2aa13219d5da6ecd90e5f04064223dce6743cb8"
|
||||
},
|
||||
{
|
||||
"member": "gates/17-clearance-clippy/command/changes.patch",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "gates/17-clearance-clippy/command/context.json",
|
||||
"bytes": 3592,
|
||||
"sha256": "6ecbef4a4ea2e4d57a9b716815d41755da74689b6c486e6750436ecbaeccd404"
|
||||
},
|
||||
{
|
||||
"member": "gates/17-clearance-clippy/command/inputs-after.json",
|
||||
"bytes": 1750859,
|
||||
"sha256": "0232386c3fd6ce76cbc2b4919077fffdd1d8a5fe8eda2d04dcae783ee668c9e4"
|
||||
},
|
||||
{
|
||||
"member": "gates/17-clearance-clippy/command/inputs-before.json",
|
||||
"bytes": 1750859,
|
||||
"sha256": "0232386c3fd6ce76cbc2b4919077fffdd1d8a5fe8eda2d04dcae783ee668c9e4"
|
||||
},
|
||||
{
|
||||
"member": "gates/17-clearance-clippy/command/output.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "gates/17-clearance-clippy/command/result.json",
|
||||
"bytes": 4251,
|
||||
"sha256": "8c6c5562c8ac3b4e59152ace8a37a3dea3816655110f29579d7d2a7dbca6d40f"
|
||||
},
|
||||
{
|
||||
"member": "gates/17-clearance-clippy/command/stderr.log",
|
||||
"bytes": 177,
|
||||
"sha256": "3d0e09339f91b9c510019c9d7fb5cc71d390f3b9836ac0e730bee6786f50a3d1"
|
||||
},
|
||||
{
|
||||
"member": "gates/17-clearance-clippy/environment.json",
|
||||
"bytes": 9466,
|
||||
"sha256": "d9d984528a82c0db3c2e009db91104d7b7c1233921793802bbeb87677f35daf8"
|
||||
},
|
||||
{
|
||||
"member": "gates/17-clearance-clippy/orchestration.log",
|
||||
"bytes": 179,
|
||||
"sha256": "3ca5c950ae1dc1d682540cb2bf903da48d0de29301706a342f2af55bbc16a92f"
|
||||
},
|
||||
{
|
||||
"member": "reviews/placement-clearance-repair-implementation-20260925.md",
|
||||
"bytes": 2624,
|
||||
"sha256": "dc18890b4549945f853681b0098b5bfab6036192533226dd93bf642c164f8d4c"
|
||||
},
|
||||
{
|
||||
"member": "reviews/placement-clearance-result-review-20260925.md",
|
||||
"bytes": 6741,
|
||||
"sha256": "a368b5d3d133092723918874ed0dda669109654fe37e712ea6425a1ecac1d1ee"
|
||||
},
|
||||
{
|
||||
"member": "reviews/placement-clearance-source-review-20260925.md",
|
||||
"bytes": 9543,
|
||||
"sha256": "4f371bc0d2de1103c1a7dbc8452f7a1ec5b79a4b48e99c04263b7e0fba32eeaa"
|
||||
},
|
||||
{
|
||||
"member": "reviews/placement-compatibility-design-20260925.md",
|
||||
"bytes": 10304,
|
||||
"sha256": "6f8359433ee8f13387b1bc722a8f84d22163f9ba6d8cf8bf5ca1387cf4f5b9cd"
|
||||
},
|
||||
{
|
||||
"member": "reviews/run01-seed-audit.json",
|
||||
"bytes": 22389,
|
||||
"sha256": "f3785e637284923e87e55243436c2b45a1f101fb059d69d8a71b5f0def8380ea"
|
||||
},
|
||||
{
|
||||
"member": "reviews/run02-independent-audit.json",
|
||||
"bytes": 14244,
|
||||
"sha256": "ec5094c81dc4f200ec53d01fb0dca9efd0ce71338922043f5a18a3d409a46c10"
|
||||
},
|
||||
{
|
||||
"member": "run01/analysis-failure.txt",
|
||||
"bytes": 582,
|
||||
"sha256": "7395e44bf226f93f27785e65ec33de0767d8dfe2f56e5fac4db392d867c51d28"
|
||||
},
|
||||
{
|
||||
"member": "run01/capture.json",
|
||||
"bytes": 8525,
|
||||
"sha256": "b95c23e22dcd31615f4728183d53cc047818fc10efd457635bb4f5360c0da0b8"
|
||||
},
|
||||
{
|
||||
"member": "run01/inputs/mixed_dispatch-elk.json",
|
||||
"bytes": 33766,
|
||||
"sha256": "99350ea7c1757859b24f243d45432e9340c8be6cbaee3b888934220563fa5da9"
|
||||
},
|
||||
{
|
||||
"member": "run01/inputs/mixed_dispatch-layered.json",
|
||||
"bytes": 33771,
|
||||
"sha256": "66064d986aaaceceaee01eff736a3ab704f2aa7e0c67bd82ce784bd077871c43"
|
||||
},
|
||||
{
|
||||
"member": "run01/inputs/mixed_dispatch-reset.json",
|
||||
"bytes": 33769,
|
||||
"sha256": "c67e9c08e67aa20ede33ba212c05d85caae2a81d15987899ab15c3ab7ec850fb"
|
||||
},
|
||||
{
|
||||
"member": "run01/inputs/mixed_dispatch_edge_ids_reversed-elk.json",
|
||||
"bytes": 33766,
|
||||
"sha256": "af8e8a61a3679cad342731907bead643417d7ec6e3c2aa6c3829525186e25928"
|
||||
},
|
||||
{
|
||||
"member": "run01/inputs/mixed_dispatch_edge_ids_reversed-layered.json",
|
||||
"bytes": 33771,
|
||||
"sha256": "0edcad8dbce628792233c6a4f439d64e559142b503b12ec5de5f2b6f79d69fad"
|
||||
},
|
||||
{
|
||||
"member": "run01/inputs/mixed_dispatch_edge_ids_reversed-reset.json",
|
||||
"bytes": 33769,
|
||||
"sha256": "d4e62c1183b9ef9fbf12e2e9a2fccbbe2d7e940138c25a811cc4962da2d7ff9f"
|
||||
},
|
||||
{
|
||||
"member": "run01/inputs/subsystems_40_sparse-elk.json",
|
||||
"bytes": 128200,
|
||||
"sha256": "ef47a2d066571c04776e8d77426fb0bb40b6d692559eaac82dad9abe8ce14c5c"
|
||||
},
|
||||
{
|
||||
"member": "run01/inputs/subsystems_40_sparse-layered.json",
|
||||
"bytes": 128215,
|
||||
"sha256": "7f44ec2ca16f7dec5bffaea1a994a849adaac051fb225bac780818e862a5b965"
|
||||
},
|
||||
{
|
||||
"member": "run01/inputs/subsystems_40_sparse-reset.json",
|
||||
"bytes": 128215,
|
||||
"sha256": "54c00e446376f761146a9182b72f6b011ed92b09cbcd7914b294ba408719d219"
|
||||
},
|
||||
{
|
||||
"member": "run01/inputs/workshop_sa_folded-reset.json",
|
||||
"bytes": 106571,
|
||||
"sha256": "9ed3116546363d13a3976e525e8432ef28148c55f92b66fdb2e19232f85c61ae"
|
||||
},
|
||||
{
|
||||
"member": "run01/inputs/workshop_sa_original-layered.json",
|
||||
"bytes": 106573,
|
||||
"sha256": "4b8dcfb2cb71a352a39b214675460a6fda0aaf4d3fb058fe90f6831f7b442b76"
|
||||
},
|
||||
{
|
||||
"member": "run01/inputs/workshop_sa_original-reset.json",
|
||||
"bytes": 106572,
|
||||
"sha256": "36276b9f623ffc83f379d8c9b9b3b1780342c73048c0a4d957b28d59e69f082e"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch-elk/receipt.json",
|
||||
"bytes": 1101,
|
||||
"sha256": "e8c63b05fbe8036c17fe911bfae30165572aca901dc6cca90c917c76fca3a059"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch-elk/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch-elk/stdout.jsonl",
|
||||
"bytes": 88395,
|
||||
"sha256": "f0b6b120cd5fcea1b1549cc4b764c888a62604d06cd756e53bf4ddda3630e879"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch-layered/receipt.json",
|
||||
"bytes": 1118,
|
||||
"sha256": "9a15482d16d5ac3c869711924229ac2b918d7866fb60178cb21fd62af0e6245a"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch-layered/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch-layered/stdout.jsonl",
|
||||
"bytes": 97523,
|
||||
"sha256": "6f74101c039421e334d6e442a943e8d5c0afa7eb3d6fb37ebb9bc33e5a10c681"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch-original/receipt.json",
|
||||
"bytes": 1149,
|
||||
"sha256": "09c61e5024a9ca925cb3d70be32e70f66b9bf2f036487922244350c1bed77446"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch-original/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch-original/stdout.jsonl",
|
||||
"bytes": 87849,
|
||||
"sha256": "a4a7735df682483085c7b33426789d6fedabe1a25c8335a66cc2005990f833fc"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch-reset/receipt.json",
|
||||
"bytes": 1109,
|
||||
"sha256": "4a2c2f44698f3cd569e41d3536dc2768a90506ce0a56401e4e15a44c6da5723e"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch-reset/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch-reset/stdout.jsonl",
|
||||
"bytes": 98875,
|
||||
"sha256": "6b1d267ccbda72b8b2bc53ebba2c6cbb4af37a1d736139a38b74ffddd7cde2d6"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch_edge_ids_reversed-elk/receipt.json",
|
||||
"bytes": 1173,
|
||||
"sha256": "656d800ec85058e5e1b89e55d3499c64670e73ad348a0f2896956e72f4324ba0"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch_edge_ids_reversed-elk/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch_edge_ids_reversed-elk/stdout.jsonl",
|
||||
"bytes": 88397,
|
||||
"sha256": "432e5dd9d5a48d1f2e24090de51114e6627b971c24684fed11d629b44f2fca9d"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch_edge_ids_reversed-layered/receipt.json",
|
||||
"bytes": 1189,
|
||||
"sha256": "45858adf871952488e94e2ad103786e78c886cad5c4611695625507e00e9a313"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch_edge_ids_reversed-layered/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch_edge_ids_reversed-layered/stdout.jsonl",
|
||||
"bytes": 97547,
|
||||
"sha256": "1d0a7e69c88910f378dd83cbd1bc810648c5ede29945b7e95bd9d3c72d4dffd2"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch_edge_ids_reversed-original/receipt.json",
|
||||
"bytes": 1221,
|
||||
"sha256": "800bf1fc798b77f72005fd5d4fe76c9a11a377b7a513518447d6e391f6565e58"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch_edge_ids_reversed-original/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch_edge_ids_reversed-original/stdout.jsonl",
|
||||
"bytes": 87410,
|
||||
"sha256": "384010f91f91255dbb46b993675bc4fb7f77f988df7b7231bf680950ffacdadd"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch_edge_ids_reversed-reset/receipt.json",
|
||||
"bytes": 1182,
|
||||
"sha256": "1d78d262998d4dc8b15c8dfbbc297971a17ad6629f331141c4d6f62242539148"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch_edge_ids_reversed-reset/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/mixed_dispatch_edge_ids_reversed-reset/stdout.jsonl",
|
||||
"bytes": 99029,
|
||||
"sha256": "fa1c97f5b9da4cc8b7ac301403b00549bf1360d9d3e09c013f7a8e32b46735d3"
|
||||
},
|
||||
{
|
||||
"member": "run01/receipt.json",
|
||||
"bytes": 37673,
|
||||
"sha256": "dfd80e78821c794c01a95fb6e8f2a285d51fe6a712e0d99326d09e3c0c80583d"
|
||||
},
|
||||
{
|
||||
"member": "run01/route-control/receipt.json",
|
||||
"bytes": 1065,
|
||||
"sha256": "8f07833144e9eb39e335babd65f926892ee1ee04981579dd4831899d5e3e532c"
|
||||
},
|
||||
{
|
||||
"member": "run01/route-control/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/route-control/stdout.jsonl",
|
||||
"bytes": 470144,
|
||||
"sha256": "9a31a676f23dea2f41daec39497f569d68231fa0fd66e5a1a476be97d5d61ac2"
|
||||
},
|
||||
{
|
||||
"member": "run01/subsystems_40_sparse-elk/receipt.json",
|
||||
"bytes": 1126,
|
||||
"sha256": "018895ce332f1e29dc169942cf33b9567f5d4af22819b2c4a97efb33421cb32b"
|
||||
},
|
||||
{
|
||||
"member": "run01/subsystems_40_sparse-elk/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/subsystems_40_sparse-elk/stdout.jsonl",
|
||||
"bytes": 357601,
|
||||
"sha256": "ebfd9632d0ea6df9cfbbc8a3511a5566305bf7523c2316d1a4232a717fa3e836"
|
||||
},
|
||||
{
|
||||
"member": "run01/subsystems_40_sparse-layered/receipt.json",
|
||||
"bytes": 1142,
|
||||
"sha256": "3947870f761565db0c70f1b2e5a61891f4cd050940d6b283d7e0f2f70be6343c"
|
||||
},
|
||||
{
|
||||
"member": "run01/subsystems_40_sparse-layered/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/subsystems_40_sparse-layered/stdout.jsonl",
|
||||
"bytes": 368843,
|
||||
"sha256": "f02bcb62a3e7e11cf994b26e8b5cc074aaff0416ceb122830084f72ba752ffc2"
|
||||
},
|
||||
{
|
||||
"member": "run01/subsystems_40_sparse-original/receipt.json",
|
||||
"bytes": 1174,
|
||||
"sha256": "8458a002400e58fd0d96d29f0c7851a269bfb5373d7a9032c31d229ac12b6038"
|
||||
},
|
||||
{
|
||||
"member": "run01/subsystems_40_sparse-original/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/subsystems_40_sparse-original/stdout.jsonl",
|
||||
"bytes": 366821,
|
||||
"sha256": "0cc35e367e737ad0ea1fdd34088fc9a674766dc01cfc5e9913a1392258cc0780"
|
||||
},
|
||||
{
|
||||
"member": "run01/subsystems_40_sparse-reset/receipt.json",
|
||||
"bytes": 1134,
|
||||
"sha256": "f5111d579f1ec28931745655b6bc52f6afff5c454a4d63a50e0c1949398abcf5"
|
||||
},
|
||||
{
|
||||
"member": "run01/subsystems_40_sparse-reset/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/subsystems_40_sparse-reset/stdout.jsonl",
|
||||
"bytes": 435141,
|
||||
"sha256": "896d90ef5b1ebb92d9c8af1924543f7276ed9cde18f4888f72f4fec0cfc4e90e"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_folded-original/receipt.json",
|
||||
"bytes": 1165,
|
||||
"sha256": "d28ea27b77a15966b4335af5ab0c8f2785cc34cd359fc4a1540968de1bab215d"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_folded-original/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_folded-original/stdout.jsonl",
|
||||
"bytes": 95759,
|
||||
"sha256": "e2266a5fe9334780a0aca2779c7b43daefb65b7317b8568ddb587db176d754e5"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_folded-reset/receipt.json",
|
||||
"bytes": 1126,
|
||||
"sha256": "8826a3078df460bf8bf0739797f115a8a85851f513e7ce561affc8c36824ca0b"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_folded-reset/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_folded-reset/stdout.jsonl",
|
||||
"bytes": 93205,
|
||||
"sha256": "4f4f9bf424e92a33cab0cde7b0ce0992b81819b9b2dfcc3c3da2906fd73808e9"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_original-layered/receipt.json",
|
||||
"bytes": 1141,
|
||||
"sha256": "94ddfa1e3bb49ff730021937385fcb0729861f12292c8957168d62121a96f69b"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_original-layered/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_original-layered/stdout.jsonl",
|
||||
"bytes": 95705,
|
||||
"sha256": "213f0ce9f8553aa42e07f3b049b0eeb8f8288677afa9b76419e9f2b884bdbfaa"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_original-original/receipt.json",
|
||||
"bytes": 1173,
|
||||
"sha256": "663087e42eb6dfa3827327dec703474115e87c8b4284bc99a11ec506db83ff6e"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_original-original/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_original-original/stdout.jsonl",
|
||||
"bytes": 97692,
|
||||
"sha256": "de792af0b61cefe9dfc5d92f07d9457fba5abbd29cf37af18b7e1c3d712b6a93"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_original-reset/receipt.json",
|
||||
"bytes": 1134,
|
||||
"sha256": "028abaffbea45b21c53b46753ff6935de709104958571a8d4b4d043440df80a2"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_original-reset/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run01/workshop_sa_original-reset/stdout.jsonl",
|
||||
"bytes": 97045,
|
||||
"sha256": "94f31323e069aa5bdcb5607294370071fab4ac13563d8f8ab5fa9ddf38822ed8"
|
||||
},
|
||||
{
|
||||
"member": "run02/analysis.json",
|
||||
"bytes": 20554,
|
||||
"sha256": "a3441510e8d93dbc2beec36bcbda26c58a4d04b93465e4ada652911bd0cb344a"
|
||||
},
|
||||
{
|
||||
"member": "run02/capture.json",
|
||||
"bytes": 8528,
|
||||
"sha256": "6636ae9b791887effa88f0790d683993d610c498073a5f73f1050bfb1d4694d1"
|
||||
},
|
||||
{
|
||||
"member": "run02/inputs/mixed_dispatch-elk.json",
|
||||
"bytes": 33766,
|
||||
"sha256": "99350ea7c1757859b24f243d45432e9340c8be6cbaee3b888934220563fa5da9"
|
||||
},
|
||||
{
|
||||
"member": "run02/inputs/mixed_dispatch-layered.json",
|
||||
"bytes": 33771,
|
||||
"sha256": "66064d986aaaceceaee01eff736a3ab704f2aa7e0c67bd82ce784bd077871c43"
|
||||
},
|
||||
{
|
||||
"member": "run02/inputs/mixed_dispatch-reset.json",
|
||||
"bytes": 33769,
|
||||
"sha256": "c67e9c08e67aa20ede33ba212c05d85caae2a81d15987899ab15c3ab7ec850fb"
|
||||
},
|
||||
{
|
||||
"member": "run02/inputs/mixed_dispatch_edge_ids_reversed-elk.json",
|
||||
"bytes": 33766,
|
||||
"sha256": "af8e8a61a3679cad342731907bead643417d7ec6e3c2aa6c3829525186e25928"
|
||||
},
|
||||
{
|
||||
"member": "run02/inputs/mixed_dispatch_edge_ids_reversed-layered.json",
|
||||
"bytes": 33771,
|
||||
"sha256": "0edcad8dbce628792233c6a4f439d64e559142b503b12ec5de5f2b6f79d69fad"
|
||||
},
|
||||
{
|
||||
"member": "run02/inputs/mixed_dispatch_edge_ids_reversed-reset.json",
|
||||
"bytes": 33769,
|
||||
"sha256": "d4e62c1183b9ef9fbf12e2e9a2fccbbe2d7e940138c25a811cc4962da2d7ff9f"
|
||||
},
|
||||
{
|
||||
"member": "run02/inputs/subsystems_40_sparse-elk.json",
|
||||
"bytes": 128200,
|
||||
"sha256": "ef47a2d066571c04776e8d77426fb0bb40b6d692559eaac82dad9abe8ce14c5c"
|
||||
},
|
||||
{
|
||||
"member": "run02/inputs/subsystems_40_sparse-layered.json",
|
||||
"bytes": 128215,
|
||||
"sha256": "7f44ec2ca16f7dec5bffaea1a994a849adaac051fb225bac780818e862a5b965"
|
||||
},
|
||||
{
|
||||
"member": "run02/inputs/subsystems_40_sparse-reset.json",
|
||||
"bytes": 128215,
|
||||
"sha256": "54c00e446376f761146a9182b72f6b011ed92b09cbcd7914b294ba408719d219"
|
||||
},
|
||||
{
|
||||
"member": "run02/inputs/workshop_sa_folded-reset.json",
|
||||
"bytes": 106259,
|
||||
"sha256": "9e920df52394934d23b0a41f6ef9711fd41252a4d5919e0f373839b35487ab49"
|
||||
},
|
||||
{
|
||||
"member": "run02/inputs/workshop_sa_original-layered.json",
|
||||
"bytes": 106261,
|
||||
"sha256": "93bd82eceb23e7782519b4c58387c55fbf9618e611c3c14938c2cc32ebbb81e7"
|
||||
},
|
||||
{
|
||||
"member": "run02/inputs/workshop_sa_original-reset.json",
|
||||
"bytes": 106260,
|
||||
"sha256": "68ef8ff4ef7bfd1199ae6dbd13039412d022e7f49219fa7c2f81816af9c124d5"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch-elk/receipt.json",
|
||||
"bytes": 1102,
|
||||
"sha256": "5473c00e19f59d6d5fa5a33928f9f935f49ff8b8ad502c1aa677717f9210669e"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch-elk/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch-elk/stdout.jsonl",
|
||||
"bytes": 88395,
|
||||
"sha256": "f0b6b120cd5fcea1b1549cc4b764c888a62604d06cd756e53bf4ddda3630e879"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch-layered/receipt.json",
|
||||
"bytes": 1118,
|
||||
"sha256": "54cd13fb24ae247405dc58f7212da8a30a839b46c3890542049ebb0bdb0df3ab"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch-layered/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch-layered/stdout.jsonl",
|
||||
"bytes": 97523,
|
||||
"sha256": "6f74101c039421e334d6e442a943e8d5c0afa7eb3d6fb37ebb9bc33e5a10c681"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch-original/receipt.json",
|
||||
"bytes": 1150,
|
||||
"sha256": "e46b48e3e49dc0ccb10372b32a6d369479241e9c009f078bef9f39ff3269c6f9"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch-original/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch-original/stdout.jsonl",
|
||||
"bytes": 87849,
|
||||
"sha256": "a4a7735df682483085c7b33426789d6fedabe1a25c8335a66cc2005990f833fc"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch-reset/receipt.json",
|
||||
"bytes": 1109,
|
||||
"sha256": "69451d3930709bd1800ceaa45608f36100ccb2e7685608b77468b3f258cc1180"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch-reset/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch-reset/stdout.jsonl",
|
||||
"bytes": 98875,
|
||||
"sha256": "6b1d267ccbda72b8b2bc53ebba2c6cbb4af37a1d736139a38b74ffddd7cde2d6"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch_edge_ids_reversed-elk/receipt.json",
|
||||
"bytes": 1173,
|
||||
"sha256": "ffef9c8dd2d615250c75eeff5f773f9e664cf7a09f96fad7d64877949a6c3e6e"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch_edge_ids_reversed-elk/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch_edge_ids_reversed-elk/stdout.jsonl",
|
||||
"bytes": 88397,
|
||||
"sha256": "432e5dd9d5a48d1f2e24090de51114e6627b971c24684fed11d629b44f2fca9d"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch_edge_ids_reversed-layered/receipt.json",
|
||||
"bytes": 1190,
|
||||
"sha256": "8b3eaf9b14c96cee74a8bd4d2fe5226e5dfadc8384265260017a197a104f17ad"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch_edge_ids_reversed-layered/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch_edge_ids_reversed-layered/stdout.jsonl",
|
||||
"bytes": 97547,
|
||||
"sha256": "1d0a7e69c88910f378dd83cbd1bc810648c5ede29945b7e95bd9d3c72d4dffd2"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch_edge_ids_reversed-original/receipt.json",
|
||||
"bytes": 1221,
|
||||
"sha256": "0b2264c14a252c9dd92e048f77179ee93f2fb874e158e5f736f4d913f3c8f0fd"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch_edge_ids_reversed-original/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch_edge_ids_reversed-original/stdout.jsonl",
|
||||
"bytes": 87410,
|
||||
"sha256": "384010f91f91255dbb46b993675bc4fb7f77f988df7b7231bf680950ffacdadd"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch_edge_ids_reversed-reset/receipt.json",
|
||||
"bytes": 1181,
|
||||
"sha256": "51a0b236a09548c517557a8a6e89e358c13a1d5d621230fcd025b5671cb441a4"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch_edge_ids_reversed-reset/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/mixed_dispatch_edge_ids_reversed-reset/stdout.jsonl",
|
||||
"bytes": 99029,
|
||||
"sha256": "fa1c97f5b9da4cc8b7ac301403b00549bf1360d9d3e09c013f7a8e32b46735d3"
|
||||
},
|
||||
{
|
||||
"member": "run02/receipt.json",
|
||||
"bytes": 37682,
|
||||
"sha256": "ea2eeea0e09d9588a5c1a025c058455fa984f46d17a154f08ec4d328732cc1ee"
|
||||
},
|
||||
{
|
||||
"member": "run02/route-control/receipt.json",
|
||||
"bytes": 1064,
|
||||
"sha256": "3021239a337c4c68ad71727d49b74316f21f36797926737c131ddea02bcab64e"
|
||||
},
|
||||
{
|
||||
"member": "run02/route-control/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/route-control/stdout.jsonl",
|
||||
"bytes": 470144,
|
||||
"sha256": "9a31a676f23dea2f41daec39497f569d68231fa0fd66e5a1a476be97d5d61ac2"
|
||||
},
|
||||
{
|
||||
"member": "run02/subsystems_40_sparse-elk/receipt.json",
|
||||
"bytes": 1126,
|
||||
"sha256": "c1676d9476d3f178e28f483e1274c6f6019b9cbf6863e6fb5c2a68fb317083a8"
|
||||
},
|
||||
{
|
||||
"member": "run02/subsystems_40_sparse-elk/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/subsystems_40_sparse-elk/stdout.jsonl",
|
||||
"bytes": 357601,
|
||||
"sha256": "ebfd9632d0ea6df9cfbbc8a3511a5566305bf7523c2316d1a4232a717fa3e836"
|
||||
},
|
||||
{
|
||||
"member": "run02/subsystems_40_sparse-layered/receipt.json",
|
||||
"bytes": 1142,
|
||||
"sha256": "10a62ab568ef9b3b1f4e04bf2002cc5df508e1e983db955c5862fbce2b1650e7"
|
||||
},
|
||||
{
|
||||
"member": "run02/subsystems_40_sparse-layered/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/subsystems_40_sparse-layered/stdout.jsonl",
|
||||
"bytes": 368843,
|
||||
"sha256": "f02bcb62a3e7e11cf994b26e8b5cc074aaff0416ceb122830084f72ba752ffc2"
|
||||
},
|
||||
{
|
||||
"member": "run02/subsystems_40_sparse-original/receipt.json",
|
||||
"bytes": 1174,
|
||||
"sha256": "243a8f870cdcc3ec4e47dbb6cf19a896672bd1a7040db9c301728752b474bc39"
|
||||
},
|
||||
{
|
||||
"member": "run02/subsystems_40_sparse-original/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/subsystems_40_sparse-original/stdout.jsonl",
|
||||
"bytes": 366821,
|
||||
"sha256": "0cc35e367e737ad0ea1fdd34088fc9a674766dc01cfc5e9913a1392258cc0780"
|
||||
},
|
||||
{
|
||||
"member": "run02/subsystems_40_sparse-reset/receipt.json",
|
||||
"bytes": 1134,
|
||||
"sha256": "3b80d2939f1afadde3f37048dc4ea79fb0e4b142ec78dd8d9e82fc55b9bbfbbb"
|
||||
},
|
||||
{
|
||||
"member": "run02/subsystems_40_sparse-reset/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/subsystems_40_sparse-reset/stdout.jsonl",
|
||||
"bytes": 435141,
|
||||
"sha256": "896d90ef5b1ebb92d9c8af1924543f7276ed9cde18f4888f72f4fec0cfc4e90e"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_folded-original/receipt.json",
|
||||
"bytes": 1166,
|
||||
"sha256": "596ac22850349c04fe91ac3e9952e565c754659bcde853d479b0949f898ceb74"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_folded-original/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_folded-original/stdout.jsonl",
|
||||
"bytes": 95759,
|
||||
"sha256": "e2266a5fe9334780a0aca2779c7b43daefb65b7317b8568ddb587db176d754e5"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_folded-reset/receipt.json",
|
||||
"bytes": 1126,
|
||||
"sha256": "724482facb67292b3571f49473bb7b031b30b19da5c83dbb6bc6672e97264fc7"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_folded-reset/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_folded-reset/stdout.jsonl",
|
||||
"bytes": 93076,
|
||||
"sha256": "95d778bbe3dee916e4204afc50e20b6b6f9b73e40589707948b3db3a73680c3d"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_original-layered/receipt.json",
|
||||
"bytes": 1142,
|
||||
"sha256": "1ef9543b9c6421b5dc55d69157861d2d2e28ee4c0496b17f99fd7d62cc288a30"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_original-layered/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_original-layered/stdout.jsonl",
|
||||
"bytes": 95576,
|
||||
"sha256": "cdeb01dfcd147f74f9f3f367b1db0ca7cc45721f6ad09d5d6d0a534783c42611"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_original-original/receipt.json",
|
||||
"bytes": 1173,
|
||||
"sha256": "960c99b78fdfb2d0b7cc6fe912ae4d74195edb9d91bc33206ac1c9f5398e5719"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_original-original/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_original-original/stdout.jsonl",
|
||||
"bytes": 97692,
|
||||
"sha256": "de792af0b61cefe9dfc5d92f07d9457fba5abbd29cf37af18b7e1c3d712b6a93"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_original-reset/receipt.json",
|
||||
"bytes": 1134,
|
||||
"sha256": "37f8a5fb878e988dfd62641b6df35c0801fe176906c4e5afd8f826cba22a88ee"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_original-reset/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"member": "run02/workshop_sa_original-reset/stdout.jsonl",
|
||||
"bytes": 96916,
|
||||
"sha256": "9940aa16725bb801e97ff2d2abda0256a7ac5ab3d25609c13f684905f213b363"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
# Final clearance evidence and claim review
|
||||
|
||||
2026-09-25. Read-only review of `harness/experiments/placement-clearance-20260925/results.md`, the final related `harness/DECISIONS.md` section, run02 analysis/receipt, independent result review, gate receipts/logs and evidence archive. No compiler, routing/repair execution or GUI actions.
|
||||
|
||||
**Verdict: no material overclaim, missing failure or unsupported adoption claim found.** Ready for the parent's documentation checkpoint, with local-only publication status retained until an actual successful push/readback. The record correctly separates solving the named mandatory-lead conflict from general layout quality and native usability.
|
||||
|
||||
Verified facts:
|
||||
|
||||
- Gates14–17 identify tested executable source `074051261a0beee1047e2b5624c879deef7813bc`, exit0, unchanged inputs and no runner failure. Gate14 log counts5+4+13+18=40 integration tests; gate15 counts130 library and2 example tests. Optimized build and strict Clippy success are recorded. No broader-suite claim is made.
|
||||
- Both runner receipts contain18 completed, non-timeout, exit0 children with unchanged bound inputs and byte-exact released route control. This does not turn unsupported candidate results into successes. Primary run02 analysis accounts for all17 scenes:12 supported and5 workshop-topology refusals.
|
||||
- Only sparse ELK changes node geometry, moving8 nodes and23 ports with no side changes. The two original mixed scenes change route/bounds metrics through the declared reset without node/port movement; results explicitly avoid attributing that to clearance repair.
|
||||
- Sparse lead incompatibility, NoClearPath and unrelated-node penetration each change1→0 while overlap remains0. Reported regressions20→22 crossings,55→58 contacts,666→761 shared length and0→1 label/stroke intersection match primary analysis and independent review. The stated outcome does not infer native unreadability or improvement from those metrics alone.
|
||||
- The independent result review supplies complete Project conservation and port-identity checks beyond the observer's broad booleans, independent raw-contact/penetration arithmetic, and recorded repeat/roundtrip coverage. Documentation keeps automatic side changes, compounds, opposite-order rejection, native tracing and timing guarantees outside the established scope.
|
||||
- Gate13's invalid primitive DataType fixtures and the corrected Record fixture are explicit. The first runner's cp1252 decoding issue is preserved, with81 altered string leaves across three workshop seeds, no numeric differences, and run02 designated primary. Unsupported topology, previous quality problems, and publication failure are not omitted.
|
||||
|
||||
Archive independently read back: `placement-clearance-07405126.zip`,195 members,3887975 bytes, SHA256 `0589a3d413596eec697bab37934d504b055bcf2ab53a0ccc0248ddc107e4a71c`. ZIP CRC test passes and every member's byte count/SHA matches `manifest.json`. Gate13 receipts and both the run01 seed audit and run02 independent audit are present. This confirms the archive integrity claim; it does not add a new execution or usability result. This final review is outside that immutable archive.
|
||||
|
||||
One minor wording issue: reproduction says “archived v2 collector” when the intended executable workflow is the v2 experiment runner. The archive collector packages existing evidence. Prefer naming that runner or changing “collector” to “runner”; this is not a correctness blocker.
|
||||
|
||||
Independently inspected the subsequent `clearance.rs` diff: only the16-factor work-charge comment changes, with no executable statement changed. The source review already treated it as a weighted budget, not a conservative bound on actual scans/projection work or wall time. Executable gates remain attributed to07405126; document the later comment explicitly rather than claiming a fresh tested source pin.
|
||||
|
||||
Reviewed document hashes at inspection (subsequent wording updates may change them):
|
||||
|
||||
- results.md: `7ac0155cb52acd2a3b0ba9782c0b7387a3efe19daa0d6a9346e9acae70bd3d7e`.
|
||||
- result-review.md: `a368b5d3d133092723918874ed0dda669109654fe37e712ea6425a1ecac1d1ee`.
|
||||
- DECISIONS.md: `5ebc04454e9f736bde41befa9575a06c08c08d3539b5c89fa59b82be05b0860c`.
|
||||
|
||||
The no-adoption decision is proportionate: retain released routing and arrangement, keep repair example-only, and use final-port/lead compatibility as a necessary constraint in future initial coordinate assignment. No issue closure, production integration, Linux verification or remote publication is established here.
|
||||
@@ -0,0 +1,11 @@
|
||||
# Bounded flat clearance repair candidate
|
||||
|
||||
Own module: `crates/oa-core/examples/auto_layout_probe/clearance.rs` in research worktree. Pure `repair(&Project, Id) -> Result<Project, ModelError>`; no compilation/execution by implementation agent. Parent owns CLI, test execution, final original-to-final route metadata reconstruction, and integration. Input routes, authored sizes/anchors and semantic records are untouched by this function.
|
||||
|
||||
Freeze total X/Y orders by initial coordinate then placement ID. Reject initial actual-node overlaps. For every disjoint pair, retain its original gap on one existing separating axis (deterministic X before Y); preserve adjacent start order on both axes. For a diagnosed singleton blocked lead, strengthen the corresponding outward-facing owner/blocker boundary separation to PORT_STUB + CLEARANCE + explicit1-unit margin, currently31. Reject ambiguous endpoint sets, noncardinal blocked leads and constraints opposing frozen order. Solve acyclic longest-path lower bounds from frozen initial coordinates, so movement is positive and constraints only strengthen.
|
||||
|
||||
Reproject after each adjustment and before success: identity/topology and every effective node size must remain unchanged. Diagnostic uses actual reselected automatic ports, not frozen engine ports. Four adjustments maximum; unresolved or non-strengthenable failures reject. Bound256nodes/1024edges,100000-unit span per axis, and10000000 charged work units (including conservative16 endpoint-pair/node allowance per diagnostic round). Nested/folded/omitted/Scenario input is rejected. Errors drop a private clone and cannot mutate the input.
|
||||
|
||||
This is deliberately conservative: fixed-axis pair gaps may propagate movement farther than necessary; opposite side changes may make constraints impossible under the frozen order. Size-changing automatic capacity redistribution is rejected rather than silently accommodated. Work accounting bounds explicit pair/constraint/diagnostic scan allowance, not wall-clock time or all projection internals. Empty lead incompatibilities prove only the router's necessary lead guard, not obstacle-free complete paths, label clearance, readability or adoption. No heuristic nudges, engine tuning or production changes are included.
|
||||
|
||||
API inspected: routing::lead_incompatibilities(Project, Diagram, ProjectedView) returns actual singleton candidates and inflated blocker identities. Stub containment is diagnostic-only and is not substituted for the existing lead guard. Parent should retain all rejected cases and evaluate full route/label results independently after successful repair.
|
||||
@@ -0,0 +1,57 @@
|
||||
# Independent clearance experiment result review
|
||||
|
||||
Primary evidence is explicit-UTF8 `placement-clearance-20260925/run02`, source074051261a0beee1047e2b5624c879deef7813bc. Read-only analysis of recorded Projects/geometry/receipts; no compiler, router, engine or GUI run. **The bounded repair resolves the exact sparse terminal incompatibility, but the result is not a general connection-aware Arrange solution or a quality winner.** It remains flat-only and worsens several tracing metrics.
|
||||
|
||||
## Admission and corpus integrity
|
||||
|
||||
Independently verified every run02 bound input's current SHA against inputs_after, exact inputs_before/after equality, all18 process receipts (17 candidate cases plus routing control) exit0/not timed out, and stdout/stderr hashes. Routing-control bytes equal the frozen released-router geometry file for all five original cases. These observations support the narrow no-output-change routing refactor claim for that corpus, not all possible graphs.
|
||||
|
||||
All12 generated seed Projects exactly equal the corresponding prior UTF8-decoded Projects, recursively without float tolerance. Original corpus files remain hash bound. Run01 is preserved and superseded: nine generated mixed/sparse seeds were exact, but three workshop seeds each changed27 string leaves (81 total). Every change is exactly the result of decoding original UTF8 bytes as cp1252; numeric geometry and structure were unchanged. Full paths and values are in `placement-clearance-run01-seed-audit-20260925.json`. Corrected run02 removes those seed changes. This is runner encoding failure, not model mutation by the Rust candidate.
|
||||
|
||||
## All17 cases accounted for
|
||||
|
||||
- Unsupported5: workshop original's original/reset/layered placements, and folded workshop original/reset. Each explicitly reports nested/folded/omitted placements unsupported. No successful hierarchy result is inferred.
|
||||
- Supported12: four original/reset/layered/ELK placements for each of mixed dispatch, its relation-ID permutation, and sparse40.
|
||||
- Eleven supported cases have no node movement. Sparse40 ELK alone moves8 stored node positions by exactly(0,+11), changes23 projected port positions and zero port sides.
|
||||
|
||||
For every supported case, independently reconstructed the entire expected raw Project from before: substitute only returned node positions and clear waypoints/full label only for visible flat edge route entries. Complete object equality with after proves preserved stored sizes, all node metadata/anchors, semantic records, other diagrams, route entry/order/attachments and unrelated fields. Verified exact stored/projected node identity scope, flat/unfolded topology, complete `(owner,element)` port key sets without duplicates, and exact projected-edge identities/semantics. This does not rely on the emitted conservation booleans. All12 recorded same-input repeats and9 subsequent repair calls report exact equality; both recorded JSON and source roundtrips are exact. These are assertions from the frozen executable output, not independently rerun commands.
|
||||
|
||||
## Independent geometry agreement
|
||||
|
||||
Applied the preexisting independent segment interval/contact evaluator to all24 before/after supported scenes. All96 comparisons agree within0.001 for proper crossings, unique pairwise contacts, common physical terminal contacts and raw pairwise shared length. Independently intersected every unrelated routed stroke with flat node interiors and every node pair in all24 scenes; penetration and overlap counts agree. Full results and source receipt binding are retained in `placement-clearance-run02-independent-audit-20260925.json`.
|
||||
|
||||
Sparse ELK changes:
|
||||
|
||||
| Metric | Before | After |
|
||||
| --- | ---: | ---: |
|
||||
| NoClearPath warnings |1|0|
|
||||
| Unrelated node penetrations |1|0|
|
||||
| Unrelated node overlaps |0|0|
|
||||
| Proper crossings |20|22|
|
||||
| Point contacts |55|58|
|
||||
| Pairwise shared length |666|761|
|
||||
| Label/stroke intersections |0|1|
|
||||
| Total route length |64223|64322|
|
||||
| Drawing area |12840450|12936535|
|
||||
|
||||
The shared/crossing/contact/penetration numbers above have independent arithmetic corroboration. Label/stroke, length and area are emitted metric observations; the new label/stroke witness is explicitly identified below. No count establishes glyph readability or navigation usability.
|
||||
|
||||
## Exact repaired witness
|
||||
|
||||
Assessment Package remains x4522..4746,y660..820. Planning Aggregate moves from top840 to851 with unchanged stored/projected size224×160. Its top port is now(4634,851), outward18-unit stub(4634,833). The blocker inflation ends at832: the planned one-unit margin is realized exactly. Independently checked all110 semantic-port terminal leads in the final sparse scene against all40 inflated rectangles: zero unrelated lead intersections and zero stub-containing obstacles.
|
||||
|
||||
Flow_45 `...03347d` now follows (4120,477)→(4120,495)→(4377,495)→(4377,833)→(4634,833)→(4634,851). The recorded prior160-unit unrelated-node penetration is absent under independent interval tests. This validates the local spacing hypothesis without changing port sides, authored anchors, or adopting raw ELK bends.
|
||||
|
||||
A new recorded label/stroke intersection remains: flow_45 crosses the label of edge `...03347a`, emitted interior intersection length23.9998. Thus the former hard terminal failure has been traded for additional route contacts/crossings/sharing and a new label interference. The test is a useful capability witness, not adoption evidence.
|
||||
|
||||
## Decision and limitations
|
||||
|
||||
Accept the evidence that final-projection lead compatibility is a useful placement constraint and that this bounded flat repair can solve the named mismatch. Do not adopt the repair as the user-facing Arrange planner: five hierarchy cases are unsupported, supported no-op cases retain their prior quality limitations, and sparse quality is non-dominating. Do not retune this frozen experiment to erase the tradeoff. The next implementation decision belongs in connection-aware placement/coordinate assignment with shared lead constraints and actual reprojection; production selection/history integration and native trace tasks remain untested here.
|
||||
|
||||
The diagnostic is necessary-only, and the independent final sparse clearance check does not imply every graph admits a route. No performance, glyph measurement, native usability, production acceptance or remote publication claim is made.
|
||||
|
||||
- placement-clearance-run02-independent-audit-20260925.json SHA256 ec5094c81dc4f200ec53d01fb0dca9efd0ce71338922043f5a18a3d409a46c10.
|
||||
|
||||
- placement-clearance-run01-seed-audit-20260925.json SHA256 f3785e637284923e87e55243436c2b45a1f101fb059d69d8a71b5f0def8380ea.
|
||||
|
||||
- receipt.json SHA256 ea2eeea0e09d9588a5c1a025c058455fa984f46d17a154f08ec4d328732cc1ee.
|
||||
@@ -0,0 +1,124 @@
|
||||
# Mandatory-lead placement repair result
|
||||
|
||||
**The diagnosed sparse terminal conflict is repairable with a bounded native
|
||||
separation pass, but the result is not an accepted Arrange replacement.** It
|
||||
removes the routing warning and unrelated-node penetration while making
|
||||
crossings, shared connector length and one label/stroke intersection worse.
|
||||
Keep the released router and production node arrangement. The next useful
|
||||
planner work is connection ordering and corridor/label space during initial
|
||||
coordinate assignment, including compound geometry; do not add more local
|
||||
repair rounds or retune router penalties on this corpus.
|
||||
|
||||
Source `074051261a0beee1047e2b5624c879deef7813bc`, based on the placement reference
|
||||
at2850b915. Core changes extract the existing endpoint choice and early lead
|
||||
guard into shared helpers and expose a read-only necessary-condition report.
|
||||
Router search/cost/fallback behavior is unchanged. Repair is an example-only
|
||||
consumer, unsupported for nested/folded/omitted placements and Scenario.
|
||||
It is not connected to Command::Layout, REST or desktop history.
|
||||
|
||||
## Observed result
|
||||
|
||||
Primary run02 preserves the five original scenes, five Arrange-reset controls,
|
||||
four old native candidates and three external-placement transfers. Twelve flat
|
||||
cases are supported; the five workshop variants explicitly reject unsupported
|
||||
topology. These are not counted as repair passes. Only the sparse external
|
||||
placement changes node geometry: eight nodes move down11 units. Twenty-three
|
||||
of110 projected port positions move, with zero side changes. Final port
|
||||
identity and owner sets are exact.
|
||||
|
||||
The target Planning Aggregate top moves840→851 while Assessment Package's
|
||||
bottom remains820. The top port's18-unit outward stub ends at833, just beyond
|
||||
the inflated blocker bottom832. The sole incompatible edge becomes admissible
|
||||
and obtains a complete route with no warning or unrelated-node penetration.
|
||||
|
||||
| Sparse external placement measure | Before | After repair |
|
||||
| --- | ---: | ---: |
|
||||
| Incompatible mandatory-lead edges | 1 | 0 |
|
||||
| NoClearPath warnings | 1 | 0 |
|
||||
| Unrelated-node penetrations | 1 | 0 |
|
||||
| Node overlaps | 0 | 0 |
|
||||
| Proper crossings | 20 | 22 |
|
||||
| All point contacts | 55 | 58 |
|
||||
| Pairwise collinear shared length | 666 | 761 |
|
||||
| Label/node and label/label collisions | 0 / 0 | 0 / 0 |
|
||||
| Label/stroke intersections | 0 | 1 |
|
||||
| Route length | 64223 | 64322 |
|
||||
| Drawing area | 12840450 | 12936535 |
|
||||
|
||||
The two original mixed scenes also change route length and drawing bounds because
|
||||
eligible authored pins/label overrides are reset; no nodes or ports move.
|
||||
Do not attribute that effect to the new separation pass. All other supported
|
||||
cases retain geometry and measured results. The old native sparse candidate's
|
||||
40522 shared-length problem remains. Empty lead diagnostics do not establish
|
||||
legibility or complete route feasibility.
|
||||
|
||||
All12 supported outputs conserve the complete Project except declared node
|
||||
positions and eligible route reset, retain stored node sizes and port anchors,
|
||||
preserve complete projected edge/port identity, and pass JSON/single-source
|
||||
round trips. Duplicate input gives the same result; all nine subsequent calls
|
||||
through call10 remain exactly equal. Automatic side-flip repair, compound
|
||||
translation, opposite-order rejection and native usability are not established
|
||||
by these successful corpus cases.
|
||||
|
||||
## Verification and failures retained
|
||||
|
||||
Windows Rust1.98.1 gnullvm, LLVM-mingw20260908, offline locked dependencies,
|
||||
one build job and previously frozen environment. No Linux build or native UI
|
||||
acceptance run for this experimental repair.
|
||||
|
||||
The subsequent evidence commit changes only a prototype budget comment and
|
||||
documentation/evidence; executable Rust statements remain those tested at07405126.
|
||||
|
||||
```
|
||||
cargo test --locked --offline -p oa-core --test lead_feasibility --test routing_geometry --test edge_attachments --test port_anchors
|
||||
cargo test --locked --offline -p oa-core --lib --example auto_layout_probe
|
||||
cargo build --release --locked --offline -p oa-core --example auto_layout_probe
|
||||
cargo clippy --locked --offline -p oa-core --lib --example auto_layout_probe --test lead_feasibility -- -D warnings
|
||||
```
|
||||
|
||||
Gates14–17 pass at07405126:40 selected integration tests,130 library tests,
|
||||
2 example solver tests, optimized build and strict Clippy. No broader-suite
|
||||
claim. Five-case route-control JSONL is byte-for-byte identical to the frozen
|
||||
released-router output (SHA2569a31a676f23dea2f41daec39497f569d68231fa0fd66e5a1a476be97d5d61ac2).
|
||||
Both runners complete18 children (route control plus17 scenes), exit0 with
|
||||
unchanged bound inputs; unsupported status is inside the result, not inferred
|
||||
from exit status. Each child has a90-second cap. No latency claim is made.
|
||||
|
||||
Gate13 at2be8c7f2 compiled but two new non-port fixtures failed semantic
|
||||
validation because their default DataTypes were primitives. Source07405126
|
||||
changes only those fixtures to valid Record types; the failed receipt remains.
|
||||
|
||||
The first analysis failed on implicit Windows cp1252 decoding of UTF-8 JSONL.
|
||||
Independent audit found81 altered string leaves in three workshop seeds
|
||||
(27 each), no numeric/geometry differences; nine other generated seeds were
|
||||
exact. Preserve run01 as superseded evidence. The v2 runner/analyzer use
|
||||
explicit UTF-8 and produce primary run02. They also independently compare the
|
||||
complete raw Project modulo allowed changes and full(owner,port) identity sets.
|
||||
|
||||
The prototype's work counter is a weighted size/iteration budget, not an exact
|
||||
count of all routing/projection operations or a wall-clock guarantee. Explicit
|
||||
graph, round and span limits remain separate guards.
|
||||
|
||||
## Reproduction and evidence
|
||||
|
||||
Build the source pin above, then use the archived v2 experiment runner with the frozen
|
||||
corpus and prior reference archive. The portable probe interface is:
|
||||
|
||||
```
|
||||
auto_layout_probe --route-corpus MANIFEST
|
||||
auto_layout_probe --repair-placement PROJECT_JSON DIAGRAM_UUID
|
||||
```
|
||||
|
||||
The latter emits before/after geometry, full models, diagnostics, quality
|
||||
measures, metadata checks and ten-call stability. Original inputs, run receipts,
|
||||
commands, scripts, failure logs and independent audits are retained in
|
||||
`evidence/placement-clearance-07405126.zip`; `evidence/manifest.json` identifies
|
||||
every member and SHA256. Native binaries are represented by capture hashes,
|
||||
not embedded. See [source review](source-review.md), [result review](result-review.md),
|
||||
[final claim/archive review](final-review.md), [design alternatives](design.md)
|
||||
and [bounded consumer](implementation.md). The final review is versioned outside
|
||||
the immutable evidence archive; its minor runner wording correction is applied.
|
||||
|
||||
This branch evidence is local-only until a successful Gitea push and byte
|
||||
readback; earlier publication attempts failed with remote disk-full errors.
|
||||
No issue closure, release change, merge or whole-Arrange quality claim.
|
||||
@@ -0,0 +1,51 @@
|
||||
# Independent placement-clearance source review
|
||||
|
||||
2026-09-25. Reviewed the initial working diff and then its settled, clean commit `2be8c7f2929684a99bfb92b63e1585980d6313cf` against `2850b915`, including the plan, routing extraction, diagnostic, flat repair, tests and example CLI. No edits, compilation, test execution, routing calls or GUI actions by this reviewer.
|
||||
|
||||
**Verdict: no P1/P2 source blocker found for the declared bounded experiment.** The extracted predicates appear behavior-preserving, and the flat repair's separation constraints preserve an initially disjoint axis for every node pair. Approval here is for verification of this candidate, not production adoption or a claim that lead clearance establishes routability. Parent's exact frozen-route comparison and17-case experiment remain necessary.
|
||||
|
||||
## Findings and verification limits
|
||||
|
||||
**P3 — semantic/coincident self-loop coverage is narrower than the requested diagnostic coverage.** `crates/oa-core/src/routing/leads.rs:142` verifies the coincident exception and owner-obstacle distinction using direct helper calls. It does not run `lead_incompatibilities` on an actual projected semantic self-loop or coincident authored attachment pair. The source reuses the real endpoint selector and reproduces the route-edge coincident condition, so this is a coverage gap, not an identified false result. If the parent claims these cases tested, add or reuse an actual Project/projection-level witness; otherwise preserve the limitation. Existing self-loop routing tests can establish routing regression coverage but not every new report field.
|
||||
|
||||
**P3 — solver unit tests do not establish full repair/persistence behavior.** `crates/oa-core/examples/auto_layout_probe/clearance.rs:260` and `:274` exercise one propagated inequality and an extent refusal. The17-case observer must verify final no-overlap identities, the exact sparse lead/warning/penetration changes, complete metadata/reset policy, and ten-call stability. Its emitted `supported:true` only means the repair/import returned successfully; no quality-pass follows. A duplicate-call failure currently appears as `same_input_exact:false` without its error text, sufficient to fail repeatability but less diagnostic than the ten-call error record.
|
||||
|
||||
No source change is requested solely to broaden this first experiment. Failed cases and the above limits must remain explicit in the report.
|
||||
|
||||
## Router extraction
|
||||
|
||||
At `routing.rs:425`, `effective_route` retains actual-owner versus projected-owner promotion, suspension of the whole authored route when promoted, and semantic-port precedence over dormant explicit attachments. At `:447`, `edge_endpoints` calls the previous `endpoints` expressions in source/target order with the same semantic/projected-port fallback. These helpers are pure reads; source/target endpoint vectors have the same ordering.
|
||||
|
||||
At `routing.rs:475` and `:483`, the allowed-pair and mandatory-lead expressions are the original expressions with the same Boolean logic. The route path still filters self-loop anchors before candidate scoring/sorting, and still checks the lead guard after best-cost pruning at `:868`. Pins, obstacle construction, preview reuse, search budget, costs and fallback are not changed by this extraction. Moving the two endpoint calls into a local array before `route_edge` does not introduce a mutation or reorder obstacle/pin processing. This is source-equivalence reasoning; only the pending recorded-route equality check establishes observed unchanged output.
|
||||
|
||||
## Diagnostic fidelity
|
||||
|
||||
`routing/leads.rs:67` constructs the same node/rectangle/header maps and edge-ID order as the router. It uses effective promotion/attachment policy, actual endpoint alternatives and `edge_obstacles`, including ancestor-header versus traversable-body treatment. Missing projected owners are skipped as in routing; empty diagnostics cannot certify that all semantic connections are present.
|
||||
|
||||
The diagnostic counts every permitted source/target pair and reports an incompatibility only when none passes the exact early lead guard (`:100–118`). It therefore does not promote one blocked automatic side to a hard incompatibility when another side remains usable. Coincident singleton tips use the same exception as route-edge selection. Pins, later stub-search containment, path reachability, global search budget and labels are deliberately outside this necessary-condition diagnostic.
|
||||
|
||||
`describe` at `leads.rs:43` excludes an endpoint's own rectangle from lead blockers, matching the early guard. `stub_containers` deliberately includes all containing obstacles and is separately documented; consuming it as additional mandatory blockers would change the historical semantics. The repair correctly uses only `blockers`.
|
||||
|
||||
The integration tests meaningfully distinguish20-unit blocked clearance from30/31-unit clear geometry, assert independent tip/stub/inflated-obstacle coordinates, check read-only Project equality, semantic-port precedence over stored attachments, and an unconstrained alternative versus explicitly anchored non-port endpoint. The ancestor/promotion test at `lead_feasibility.rs:182` is transparently a synthetic projected forest; it proves that supplied-view policy, not a complete authored folded-project lifecycle.
|
||||
|
||||
## Monotone flat repair
|
||||
|
||||
`clearance.rs:130` seeds one boundary inequality for every initially disjoint pair: X separation when available, otherwise Y. Initially overlapping rectangles are explicitly refused. Because positive extents make each chosen direction forward in that axis's frozen start-coordinate order, these original constraints are acyclic. Newly required lead gaps are accepted only in that same rank direction (`:214`).
|
||||
|
||||
`solve` at `:27` visits targets in frozen order, so every constraint predecessor has already been resolved. It applies coordinate floors, nondecreasing adjacent starts, and `start[to] >= start[from] + extent[from] + gap`. Constraints only strengthen and dimensions are rechecked each round. Therefore, in the represented arithmetic, each pair retains at least its originally selected separating axis; strengthening a lead gap cannot remove that preserved pairwise separation. The recorded final overlap check remains appropriate for f32 effects and integration mistakes.
|
||||
|
||||
The31-unit required gap is `PORT_STUB + CLEARANCE +1` at `:217`; it is deliberately conservative for a flat rectangular blocker in front of a cardinal singleton endpoint. Unexpected direction, degenerate lead, multiple endpoint choices, unknown owner/blocker or a constraint opposing frozen order returns an error. Reprojection after every adjustment observes automatic-port changes; it does not assume the initial tips remain attached to the same side. Up to four adjustments are allowed, followed by a final diagnosis; a still-blocked or unstrengthenable result fails explicitly.
|
||||
|
||||
Flat, complete, noncollapsed topology, finite positive geometry,256 nodes,1024 edges,100000-unit span and a cumulative work allowance are checked. There is no unbounded iterative optimizer. The work allowance is a coarse charge for bounded graph operations, not an exact CPU-operation counter or wall-clock guarantee; parent process supervision remains useful. Every failure drops the private clone.
|
||||
|
||||
## Metadata and interpretation boundary
|
||||
|
||||
`clearance::repair` changes only positions in its clone. It does not incrementally rewrite stored routes or anchors while adjusting. Parent wrapper `auto_layout_probe.rs:1027` invokes the audited import policy once from the original input to final projected geometry. That preserves authored sizes when projection minima are unchanged, actual attachments and other-view records; applies retained-route translation from the full final deltas; and clears only original eligible pins/full labels.
|
||||
|
||||
Even if no node movement was needed, the wrapper can still clear eligible pins/labels. Thus output differences on an original authored scene may include the declared reset, not solely clearance movement. Compare complete records and the appropriate reset control before attributing quality gains to gap repair. For scenes already reset this distinction disappears.
|
||||
|
||||
CLI results expose baseline/final geometry, lead reports, conservation, roundtrip, same-input equality and repeated repair outcomes, with explicit errors for unsupported cases. The accepted success criterion remains the plan's narrow one: remove the exact sparse terminal conflict without a new node overlap or routing failure. Empty lead reports alone cannot establish this, and even that compatibility result leaves shared runs, labels, area, compounds and native traceability unresolved.
|
||||
|
||||
## Fixture correction addendum
|
||||
|
||||
Reviewed parent follow-up `074051261a0beee1047e2b5624c879deef7813bc`: only five fixture lines change, converting the three DataType definitions to `Record { supertype: None }` before constructing the DataAssociation. The previous fixture relied on the default primitive definition, contrary to `crates/oa-core/src/data.rs:1089` requiring Record endpoints. The original gate13 failure remains evidence of a fixture precondition defect, not a passing non-port test. This correction supplies valid intended association endpoints without changing geometry, assertions, production routing, diagnostic or repair logic. Test functions now start at107/144/167/187; earlier test line references refer to2be8c7f2. No rerun result is claimed here; gate14 is parent-owned. Static verdict is unchanged, now covering this exact correction.
|
||||
Reference in New Issue
Block a user