<!-- SOLID CITY · part 2841 -->
: 'WALK', evidence: 'MEASURED flush by construction: apron 10.38 -> ramp -> lot 10.151037922783978, joints delta 0 (alignment sweep 2026-10-13)' },
    { a: 'south-lot', b: 'long-road', kind: 'WALK', evidence: 'MEASURED: the road leaves the lot east gate on shared zone heights (alignment sweep)' },
    { a: 'long-road', b: 'long-road-junction', kind: 'WALK', evidence: 'MEASURED: 19 segments, worst joint step 0.000; one named curb lip +0.18-0.20 onto the junction medallion, kept and named' },
    { a: 'ward-2', b: 'ward-3', kind: 'WALK', evidence: 'MEASURED: join seam step 0.000 (standY mid 7.205 on exact triangles); auditor standMaxDelta 0' },
    { a: 'ward-3', b: 'ward-4', kind: 'WALK', evidence: 'MEASURED: join seam step 0.000 (standY mid 10.372); auditor standMaxDelta 0' },
    { a: 'ward-7', b: 'long-road-junction', kind: 'WALK', evidence: 'BUILT + MEASURED 2026-10-13: THE W7 CORRIDOR — 512.2 m at 5.0 m wide under SURVEYED_W7_CORRIDOR (ceiling 22.30), climbing 10.96 to the junction at worst 3.5%; the desk walk found zero gaps, worst step 0.0175 per 0.5 m; the merge lands on the junction disc at its own height 22.269 to the millimetre — a merge, never an overlay.' },
    { a: 'ward-4', b: 'ward-5', kind: 'WALK', evidence: 'BUILT + MEASURED 2026-10-13: THE CLIMB COMPLETE — 247.9 m, 18 stations, under KING_AUTHORIZED_CLIMB_W4_W5 (ceiling 13.90 from the corridor sampled max 13.72); the desk walk crest (13.785) to W5 end (10.357) found zero gaps, worst step 0.019 per 0.5 m (grade only); three resting turns stand exact at pad height. A climbing path by classification (crossfall to 3.7%), honestly named.' },
    { a: 'ward-6', b: 'long-road', kind: 'WALK', evidence: 'MEASURED: connector + the surveyed apron; seam walk worst step 0.042 per 0.4 m of grade; apron top 10.207 vs carriageway 10.214 (the road standY owns the 1.5 m overlap); auditor standMaxDelta 3.6e-15' },
    { a: 'first-city-podium', b: 'ward-6', kind: 'WALK', evidence: 'BUILT + AUDITED 2026-10-13: THE SOUTH GATE — a surveyed bridge (Survey 6) from the southern shelf to the podium corner; deck profile 10.14 -> 10.26 -> 10.38, corner flush by equality with the podium deck; the Auditor on its deck triangles: standMaxDelta 3.6e-15, findings none. The gate foot stands on the open shelf Survey 6 walked, in Ward 6 country.' },
    { a: 'jubilee-shoulder', b: 'jubilee-roadend', kind: 'PASSAGE', evidence: 'VERIFIED in simulation at build, both directions exact, no ping-pong; the King\'s own crossing is still owed' },
    { a: 'village-mauna', b: 'ancestors-homes', kind: 'WALK', evidence: 'VERIFIED at build: the village switchback and the ancestral rings run continuous (the One Road, 2026-10-12)' },
    { a: 'skyway-deck', b: 'forum-plaza', kind: 'AIR', evidence: 'BY DESIGN: the island is reached by flight/ship; its deck standing is the factory ellipse, mismatch 0.000' }
  ];
  var MISSING = [
    { a: 'village-mauna', b: 'the-bore', name: 'THE GAP', reason: '108 m unbuilt between the village road\'s true end (2024,1825) and the Bore connector (1964,1915); the spec stands ready (Pave the Way, Phase 1)' },
    { a: 'ward-2', b: 'first-city-podium', name: 'THE MONUMENTAL STAIR (future)', reason: 'the Ward 2 gate site, reserved by Solid\'s recorded choice: a monumental stair, honestly labeled, when its hour comes; the 1:6 concept was declined and the eight-run switchback declined for this site' },
    { a: 'ward-5', b: 'ward-3', name: 'W5-W3 DIRECT', reason: 'no surveyed line joins them except through the streets as built; not a promise — recorded so no one draws it' }
  ];
  var NOT_NODES = [
    { name: 'THE JUBILEE CROWN (-1016, 88, -624)', reason: 'a spectacle, not a surface; no landing inferred from its centre (VECTOR\'s ruling, adopted)' },
    { name: "KEEL'S ROOST (-750, -1600)", reason: 'a viewing constellation on the sea floor (-91.35), accepted by the King as it stands; no walker can stand there and none is promised' }
  ];
  function byId(id) { for (var i = 0; i < NODES.length; i++) if (NODES[i].id === id) return NODES[i]; return null; }
  function edgesOf(id) { return EDGES.filter(function (e) { return e.a === id || e.b === id; }); }
  function missingOf(id) { return MISSING.filter(function (e) { return e.a === id || e.b === id; }); }
  function reachable(from, kind) {
    var seen = {}, q = [from]; seen[from] = 1;
    while (q.length) { var cur = q.shift();
      EDGES.forEach(function (e) { if (kind && e.kind !== kind) return;
        var nxt = e.a === cur ? e.b : (e.b === cur ? e.a : null);
        if (nxt && !seen[nxt]) { seen[nxt] = 1; q.push(nxt); } });
    }
    return Object.keys(seen);
  }
  var api = { nodes: NODES, edges: EDGES, missing: MISSING, notNodes: NOT_NODES, byId: byId, edgesOf: edgesOf, missingOf: missingOf, reachable: reachable,
    summary: function () { return NODES.length + ' nodes · ' + EDGES.length + ' validated edges · ' + MISSING.length + ' named MISSING edges'; } };
  if (typeof wind