<!-- SOLID CITY · part 3658 -->
 ch.position.y + p.height / 2;
  });
  H.houses.push({ stand: house.stand, roofTop: roofTop, cx: house.plot.cx, cz: house.plot.cz, ward: house.plot.ward });
  wallSolids(house);
  return roofTop;
}
function load() {
  Promise.all([
    import('/city/ward-houses.js?v=20261013a'),
    import('/city/ward-joins.js?v=20261013a'),
    import('/city/wards.js?v=20261013a'),
    fetch('/city/city.js').then(function (r) { return r.text(); })
  ]).then(function (r) {
    var seg = r[3].slice(r[3].indexOf('var SEED'), r[3].indexOf('function mulberry'));
    var gnd = new Function(seg + '; return groundAt;')();
    var isAllowed = r[2].isAllowedSolidCity(gnd);
    // THE MULTIPLICATION — every lawful house the searcher found, raised.
    var table = [], pilot = null, occupied = [];
    [2, 3, 5].forEach(function (ward) {
      var res = r[0].createWardHouses({ THREE: A.THREE, groundAt: gnd, isAllowed: isAllowed, ward: ward });
      res.accepted.forEach(function (house) {
        raiseHouse(house);
        var m = r[0].measureWardHouse(house, gnd);
        table.push('W' + ward + ' @ (' + Math.round(house.plot.cx) + ', ' + Math.round(house.plot.cz) + ') floor ' + m.floorY.toFixed(2)); occupied.push({ cx: house.plot.cx, cz: house.plot.cz });
        if (ward === 2 && !pilot) pilot = house;
      });
    });
    // WARD 4 — the two surveyed gate plots, raised through the surveyed-plot adapter under the shipped law.
    var w4 = r[0].createSurveyedWardHouses({ THREE: A.THREE, groundAt: gnd, isAllowed: isAllowed, occupiedFootprints: occupied, plots: [
      { id: 'W4-A', ward: 4, cx: -924.764172, cz: -790.330013, ux: 0.6919053632, uz: 0.7219882051, vx: 0.7219882051, vz: -0.6919053632, floorY: 11.17 },
      { id: 'W4-B', ward: 4, cx: -941.803093, cz: -774.001046, ux: 0.6919053632, uz: 0.7219882051, vx: -0.7219882051, vz: 0.6919053632, floorY: 11.07 }
    ] });
    w4.accepted.forEach(function (house) { raiseHouse(house); var m = r[0].measureWardHouse(house, gnd); table.push('W4-' + house.id.slice(-1) + ' @ (' + Math.round(house.plot.cx) + ', ' + Math.round(house.plot.cz) + ') floor ' + m.floorY.toFixed(2)); });
    if (!pilot) throw new Error('no pilot house');
    H.housePos = { x: pilot.plot.cx, z: pilot.plot.cz };
    // THE TWO SHORT JOINS — built, and their surfaces connected to movement.
    var joins = r[1].createShortWardJoins({ THREE: A.THREE, groundAt: gnd, isAllowed: isAllowed });
    for (var name in joins) { A.scene.add(joins[name].group); if (joins[name].standSurface && joins[name].standSurface.geometry) H.joins.push(extractTris(joins[name].standSurface.geometry)); }
    // THE WARD 6 CONNECTOR — surveyed line to the Long Road corridor's edge.
    var w6 = r[1].createWardConnector({ THREE: A.THREE, groundAt: gnd, isAllowed: isAllowed, name: 'W6-LongRoad', line: [[-1118, -540], [-1135.3, -508.3]] });
    var w6note = 'W6 connector REFUSED: ' + (w6.check && w6.check.reason ? w6.check.reason : 'check');
    if (w6.accepted) { A.scene.add(w6.group); H.joins.push(extractTris(w6.standSurface.geometry)); var wm = w6.measure(); w6note = 'W6 connector built to the last lawful station before the Long Road corridor boundary (36.1 m, ending 1.3 m short at the survey boundary per the schematic\'s refusal law — the road-edge apron awaits its own survey; deviation from lift max ' + wm.maxAbsErrorFromLift.toFixed(4) + ' m, ' + wm.upFacingTriangles + ' up / ' + wm.downFacingTriangles + ' down).'; }
    // THE CLIMB — TEST SEGMENT, under its own permission class (the schematic's SS3): KING_AUTHORIZED_CLIMB_W4_W5, corridor-bound, ceiling set from the sampled route (max 13.81 -> ceiling 13.90).
    var CLIMB_LINE = [[-880, -728], [-888, -736], [-896, -744], [-904, -752], [-912, -760], [-912, -768], [-912, -776], [-912, -784]];
    function distToClimb(x, z) { var best = 1e9; for (var i = 0; i + 1 < CLIMB_LINE.length; i++) { var ax = CLIMB_LINE[i][0], az = CLIMB_LINE[i][1], bx = CLIMB_LINE[i + 1][0], bz = CLIMB_LINE[i + 1][1], dx = bx - ax, dz = bz - az, L2 = dx * dx + dz * dz, t = L2 ? ((x - ax) * dx + (z - az) * dz) / L2 : 0; t = Math.max(0, Math.min(1, t)); var d = Math.hypot(x - (ax + dx * t), z - (az + dz * t)); if (d < best) best = d; } return best; }
    function isAllowedClimb(x, z) { if (!Number.isFinite(x) || !Number.isFinite(z)) return false; var g = gnd(x, z); if (g < 0.5 || g > 13.9) return false; if (x >= -1512 && x <= -1088 && z >= -1380 && z <= -620) return false; if (x >= -1445 && x <= -1155 && z >= -625 && z <= -443) return false; if (x >= -1160 && x <= -656 && z >= -507 && z <= -489) return false; return distToClimb(x, z) <= 2.6; }
    var climb = r[1].createWardConnector({ THREE: A.THREE, groundAt: gnd, isAllowed: isAllowedClimb, name: 'W4-W5 Climb — Test Segment', line: CLIMB_LINE, maxY: 13.9 });
    var climbNote = 'Climb test segment REFUSED: ' + (climb.check && climb.check.reasons ? climb.check.reasons.join('; ') : 'check');
    if (climb.accepted) { A.scene.add(climb.group)