- The optimality gate's decode-failure message names ARG3 and the rebuild
command (node routing/scripts/build-road-graph.mjs); the frozen D-03
constants (OPTIMALITY_EPSILON_PCT = 0.1, REQUIRED_BASELINE_ARG_VERSION
= 1) and the immutable alt-baseline.json record are untouched.
- The oracle sweep's graph-missing (SKIP) and decode-failure wording names
the ARG3 binary; the seeded 200-pair symmetric-compare constants and the
three violation classes are unchanged.
- RO1/RO2 ban the ARG3 magic 0x41524733 in the upload script's and the
Worker's comment-stripped code: the one-path laws now cover the CURRENT
format, not just the retired ones. The Worker keeps exactly one
decodeGraph call, no GRAPH_VERSION, no magic, no === 2.
- measure-route-cpu.mjs is untouched here by design: its LADDER HISTORY
gains the CH rung only once the measured numbers exist (task 3).
- sweepOracle: Math.abs(deltaS) > ORACLE_EPSILON_S replaces the one-sided
'seconds > optimal + eps' check — a result FASTER than the Dijkstra
oracle (the traversal-law-break signature, e.g. a oneway relaxed) is
now a violation, stamped ORACLE-MISMATCH, never a pass
- worstDeltaPct tracks MAGNITUDE not sign — a -40% law break moves it
- pass gate: suboptimal === 0 && oracleMismatch === 0 && classBreaks === 0
- header gate description + exit codes updated: the check is |Δ| in both
directions; GATE FAIL names both violation classes; GATE PASS reads
0/N |Δ| violations
- row-level signed Δ printout unchanged (sign/direction reporting kept)
measure-astar-oracle-sweep.mjs (maintainer-time, route-corpus law: exported
core sweepOracle + CLI guard, print-the-measurement, honest exit codes):
- FRESH seeded cross-metro pairs via measure-optimality-baseline.mjs's
exported generateCrossMetroPairs core — seed 0x08f1, deliberately NOT
the D-03 corpus seed 0x08a1, so this sweep never measures the corpus
- compared-pair law: one 3x-oversampled draw, consumed in order until 200
COMPARED pairs (reachable + null-vs-null unreachable both compare;
snap misses counted and printed; same binary + seed => same set) —
random bbox coordinates are ~20% off-road and an unsnappable pair
cannot exercise the search
- brute-force unidirectional Dijkstra oracle (label-setting, heap, the
shared oneway traversal law) on the SAME snapped node pair
- gate: 0 suboptimal (epsilon 1e-6 s — f64 summation-order noise floor,
A1's epsilon); class-breaks (one side routes, other doesn't) violate
- honest skip when the gitignored binary is absent (exit 0, SKIP printed)
First run on the fixed engine: 200 compared (182 routed, 18 unreachable),
0 SUBOPTIMAL, worst delta +0.000% — GATE PASS. The pre-F1 engine measured
1/194 suboptimal on this pair shape (bench7, debug session).