feat(08.1-01): ARG3 codec + uphill CH query — ALT deleted, one search path (GREEN)
- graph.ts: ARG3 layout (magic 0x41524733, version 3, chShortcutCount
u32 @60, reserved @64/@68) with the CH suffix chRank ++ shortcut CSR;
fail-honest decode (ARG1/ARG2 -> null, chShortcutCount 0 -> null,
exact-size before any allocation, 4-byte alignment load-bearing);
loud ch-block encode validation
- ch-query.ts: routeCH — bidirectional uphill search (strict rank filter,
forward originals+shortcuts, backward reverse views incl. shortcuts),
edge-ref meet probe, iterative via-unpacking (edge-aware: a parallel
original edge is never expanded as a shortcut; DERIVE prefers the
cheaper of original/shortcut), seconds re-summed from the unpacked
original-edge path. STOP RULE: min(topF, topB) >= mu — the classical
sum rule is unsound under the rank filter (Q1 caught it: 36 vs 24)
- astar.ts: routeAstar validates + delegates every request to routeCH;
ALT/BH internals, clean-column memo, landmark tokens DELETED (D-04);
classifyTurn/deriveSteps untouched
- landmark.ts + landmark.test.mjs deleted (D-05); index.ts additively
exports contractGraph + CH constants + routeCH
- snap.test.mjs: S3's encode moved to the ARG3 ch block (3-node star —
a 2-node graph can carry no valid shortcut); committed-fixture S-cases
suspended until task 3 (Rule 3: same pattern as G7/A1-A6)
- routing suite: 86 passed, 0 failed; typecheck clean