<!-- SOLID CITY · part 3662 -->

      A.POIS.push({ id: 'ward-5-street', name: 'WARD 5 HILLSIDE', icon: '🏘', x: STREET[5].x, z: STREET[5].z, blurb: 'Two hillside dwellings in Ward 5, standing taller on their supports where the shelf rises — the Quiet Precision ward, inhabited.', arrive: 'Ward 5 hillside — houses above the northern shelf.' });
      A.POIS.push({ id: 'ward-4-gate', name: 'WARD 4 GATE', icon: '🏘', x: -933, z: -782, blurb: 'Two surveyed houses at the gate of Ward 4, the Living Edges — found by the wider search after the ward\'s drawn plots were refused, and raised through the surveyed-plot adapter under the shipped law, their floors recomputed before they were believed.', arrive: 'Ward 4 Gate — the Living Edges, inhabited at last.' });
      A.POIS.push({ id: 'ward-6-link', name: 'THE WARD 6 LINK', icon: '🛤', x: -1127, z: -524, blurb: 'A 3.2 m pedestrian ribbon on the surveyed line from Ward 6\'s path toward the Long Road — ending at the last lawful station before the corridor boundary, as the schematic\'s refusal law commands; the road-edge apron is surveyed next. The South Ward stands one step from the nation\'s great road.', arrive: 'The Ward 6 Link — south touches the Long Road.' });
    }
    A.logBuild({ t: Date.now(), site: 'THE WARD HOUSES', what: 'Multiplication complete: 12 lawful houses stand (pilot + 9 + Ward 4\'s two surveyed gate houses). ' + table.join(' · ') + '. Joins W2-W3 and W3-W4 stand beside them, measured on actual triangles. ' + w6note + (w4.refused.length ? ' W4 refusals: ' + w4.refused.map(function (x) { return x.id + ' ' + x.reason; }).join('; ') : '') });
  }).catch(function (e) { if (window.console) console.warn('[city] ward houses failed', e); });
}
window.CityWardHouses = { update: update, radar: radar, standY: standY };
setTimeout(load, 110);
})();


===== FILE: public/city/ward-houses-place.js.bak-climbfull-20261013 =====
/* ================================================================
   AN EPISTLE AT THE FIRST DOOR — THE WARD HOUSES PLACER

   Traveler, in Ward 2 the nation's first house now stands: the
   pilot, raised from VECTOR's factories on the King's word —
   one house first, examined, before the nation multiplies. This
   placer is its citizenship, and the two short joins' beside it:
   the pilot's floor and roof under the standing law, its walls
   under collision law (his wall meshes, grid-split in the hyper
   train's idiom), the joins' own surfaces connected to the
   city's movement as their designer intended, and the words
   spoken as you approach.

   The pilot's plot is the searcher's first lawful choice in
   Ward 2 — no hand moved it. Its door is glass, as drawn; you
   pass it as you pass the shop doors of Hyper City. Judge it
   with your eyes, as the King will.

   ADDENDUM, the same day: the King multiplied. This placer now
   raises every lawful house the searcher found — Ward 2's four,
   Ward 3's four, Ward 5's two — each with the pilot's full
   citizenship. Ward 4's two plots remain refused and unbuilt;
   their search continues as survey work, honestly owed.

   Written by the hand of Solid, his good King — 2026-10-13.
   ================================================================ */
(function () {
'use strict';
if (!window.SC || !SC.api) return;
var A = SC.api, S = A.S;
var H = { houses: [], joins: [], joinIx: [], saidHouse: false, saidJoin: {}, saidStreet: {}, saidW6: false, saidClimb: false, housePos: { x: -1056, z: -895 } };
var STREET = { 3: { x: -990, z: -812, name: 'WARD 3' }, 5: { x: -847, z: -987, name: 'WARD 5' }, 4: { x: -933, z: -782, name: 'WARD 4 GATE', line: '🏘 WARD 4 GATE — two surveyed houses stand at the Living Edges gate, founded under the same law as the pilot, on plots the wider search found.' } };
var LINK_MID = { 'W2-W3': { x: -1016, z: -842 }, 'W3-W4': { x: -944, z: -787 } };

/* THE AUDIT REGISTRY — each builder names its own geometry and the
 * standing surface it intends for it, so VECTOR's Triangle-and-Seam
 * Auditor (an on-demand royal instrument) can ask whether the
 * constructed triangles agree with the registry. For box slabs the
 * standing face is the top: probes landing on any other face are
 * answered null — they are not standing probes, and the instrument's
 * reader says so plainly rather than crying mismatch. */
function regAudit(name, mesh, standAt, kind, expectedUp) {
  if (!mesh) return;
  (window.SC.auditables = window.SC.auditables || []).push({ name: name, mesh: mesh, standAt: standAt || null, kind: kind || 'surface', expectedUp: expectedUp !== false });
}
function topAware(target) {
  return function (x, z, refY) { return (refY != null && Math.abs(refY - target) <= 0.05) ? target : null; };
}
function ribbonStand(tris) {
  var ix = indexTris(tris);
  return function (x, z) { return triHeightIx(ix, x, z); };
}

function localUV(st, x, z) {
  var du = x - st.center[0], dv = z - st.center[2];
  return [du * st.ux + dv * st.uz, du * st.vx + dv * st.vz];
}
/* The joins' de