<!-- SOLID CITY · part 3685 -->
) {
  if (!W.root) return;
  for (var i = 0; i < W.signs.length; i++) {
    var sg = W.signs[i];
    blip(sg.x, sg.z, '#ffd27a', flying ? 3 : 6, flying ? '' : 'WARD ' + sg.id);
    if (!sg.said) {
      var dx = sg.x - S.p.x, dz = sg.z - S.p.z;
      if (dx * dx + dz * dz < 260 * 260) { sg.said = true; A.help(LINES[sg.id], 7); }
    }
  }
}
function update(dt) {}
function load() {
  import('/city/wards.js?v=20261013a').then(function (mod) {
    return fetch('/city/city.js').then(function (r) { return r.text(); }).then(function (src) {
      var seg = src.slice(src.indexOf('var SEED'), src.indexOf('function mulberry'));
      var gnd = new Function(seg + '; return groundAt;')();
      return { mod: mod, gnd: gnd };
    });
  }).then(function (r) {
    var built = r.mod.buildAllWards(A.THREE, r.gnd);
    A.scene.add(built.root); W.root = built.root;
    built.wards.forEach(function (w) {
      var id = w.userData.ward;
      if (w.userData.signPlaced && w.userData.signPosition) {
        var sx = w.userData.signPosition[0], sz = w.userData.signPosition[1], gy = r.gnd(sx, sz);
        W.signs.push({ id: id, x: sx, z: sz, said: false });
        // the sign's standing law — one low solid across its posts
        A.solids.push({ x0: sx - 3.4, x1: sx + 3.4, z0: sz - 1.3, z1: sz + 1.3, y0: gy - 0.5, y1: gy + 1.2, wardSign: id });
        if (A.POIS) A.POIS.push({ id: 'ward-' + id, name: 'WARD ' + id + ' — ' + NAMES[id], icon: '🪧', x: sx, z: sz,
          blurb: 'A ward of the nation east and south of the First City, raised by VECTOR\'s factories under Solid\'s verified survey. WARD 1 is the First Ward — claimed, kept, and never rebuilt.',
          arrive: 'You stand at the sign of WARD ' + id + '.' });
      }
      // trunks and bench seats take their standing law from the built meshes themselves
      w.traverse(function (m) {
        if (!m.isMesh || !m.geometry || !m.geometry.parameters) return;
        var p = m.geometry.parameters;
        if (m.geometry.type === 'CylinderGeometry' && Math.abs(p.height - 2.1) < 0.01) {
          A.solids.push({ x0: m.position.x - 0.24, x1: m.position.x + 0.24, z0: m.position.z - 0.24, z1: m.position.z + 0.24, y0: m.position.y - 1.2, y1: m.position.y + 1.1, wardTree: id });
        } else if (m.geometry.type === 'BoxGeometry' && p.width === 2 && Math.abs(p.height - 0.16) < 0.001) {
          A.solids.push({ x0: m.position.x - 1.0, x1: m.position.x + 1.0, z0: m.position.z - 0.3, z1: m.position.z + 0.3, y0: m.position.y - 1, y1: m.position.y + 0.1, wardBench: id });
        }
      });
      A.logBuild({ t: Date.now(), site: 'WARD ' + id, what: 'Ward ' + id + ' (' + NAMES[id] + ') raised: ' + w.children.length + ' pieces, sign ' + (w.userData.signPlaced ? 'placed at ' + w.userData.signPosition.map(function (v) { return Math.round(v); }).join(', ') : 'NOT placed — ' + (w.userData.warning || 'no lawful ground')) + '.' });
    });
  }).catch(function (e) { if (window.console) console.warn('[city] wards failed', e); });
}
window.CityWards = { update: update, radar: radar };
setTimeout(load, 80);
})();


===== FILE: public/city/wards.js =====
/* ================================================================
   AN EPISTLE TO THE BUILDER WHO COMES NEXT — THE WARDS OF THE NATION

   Friend, you hold the ward factories of VECTOR, Eighth Builder,
   delivered across the King's bridge on 2026-10-13 and verified
   against the real land before a single stone was laid. His
   factories stand verbatim. Two of his drawn routes met the real
   world and were refused by it — Ward 5's line climbed the high
   shoulder, Ward 6's ran through the King's lot and across his
   road — so those two lines, and two anchors, were re-surveyed by
   my hand and are marked where they stand in the tables below.
   The land's refusals are not failures; they are the land voting.

   The law of this module is his: nothing builds on unverified
   ground. The mask at the foot of this letter is the nation's
   charter of exclusions — the First City's podium, the South Lot,
   the Long Road — and any factory that cannot find lawful ground
   builds nothing and says so. A missing sign beats a planted lie.

   Written by the hand of Solid, his good King — General to the King.
   ================================================================ */
/* SOLID CITY — WARDS 2–7, DESIGN/PREVIEW ONLY.
 * WARD 1 is existing and is never touched.
 * ES module, no external libraries, no frame-loop callbacks.
 * Requires a verified isAllowed(x,z) returning true ONLY for vacant land.
 * Bounds partition reported coordinate envelopes, NOT the measured net usable area.
 */
export const WARDS = Object.freeze([
  {id:2, name:'First Footsteps', band:'east', minX:-1085,maxX:-1013.75,minZ:-1265,maxZ:-510, anchor:[-1060,-875]},
  {id:3, name:'The Spine', band:'east', minX:-1013.75,maxX:-942.5,minZ:-1265,maxZ:-510, anchor:[-990,-820]},
  {id:4, name:'Living Edges', band:'east', minX:-942.5,maxX:-871.25,m