<!-- SOLID CITY · part 3688 -->
y mask coverage and compare against the independently reported 181350 m².'};
}

/* ================================================================
   SOLID'S INTEGRATION — the verified mask and the raising of the wards.
   The mask is the survey of 2026-10-13, measured against the true
   groundAt of this world: the shelf band (0.5-11.5 m) less the
   First City podium, the South Lot, and the Long Road corridor.
   ================================================================ */
const SOLID_EXCLUSIONS = [
  { x0: -1512, x1: -1088, z0: -1380, z1: -620 },  // the First City podium — the hood, claimed and kept
  { x0: -1445, x1: -1155, z0: -625,  z1: -443 },  // the South Lot and its rides
  { x0: -1160, x1: -656,  z0: -507,  z1: -489 }   // the Long Road corridor
];
export function isAllowedSolidCity(groundAt) {
  return function (x, z) {
    const g = groundAt(x, z);
    if (!(g >= 0.5 && g <= 11.5)) return false;
    for (const r of SOLID_EXCLUSIONS) if (x >= r.x0 && x <= r.x1 && z >= r.z0 && z <= r.z1) return false;
    return true;
  };
}
export function buildAllWards(THREE, groundAt) {
  const args = { THREE, groundAt, isAllowed: isAllowedSolidCity(groundAt) };
  const root = new THREE.Group(); root.name = 'THE WARDS OF THE NATION';
  const wards = [];
  for (const make of [createWard2, createWard3, createWard4, createWard5, createWard6, createWard7]) {
    const w = make(args); root.add(w); wards.push(w);
  }
  root.userData.wards = wards;
  return { root, wards };
}


===== FILE: public/city/wards.js.bak-batten-20261014 =====
/* ================================================================
   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,minZ:-1265,maxZ:-510, anchor:[-917,-765]},
  {id:5, name:'Quiet Precision', band:'east', minX:-871.25,maxX:-800,minZ:-1265,maxZ:-510, anchor:[-848,-985]}, // anchor re-sited by Solid's survey: the drawn anchor stood on the high shoulder (14-17 m); this ground is verified shelf (7.9 m)
  {id:6, name:'South Connection', band:'south', minX:-1465,maxX:-1090,minZ:-615,maxZ:-457.5, anchor:[-1126,-578]}, // anchor re-sited by Solid's survey: the drawn anchor stood inside the South Lot; this ground is verified clear (8.9 m)
  {id:7, name:'Southern Landscape', band:'south', minX:-1465,maxX:-1090,minZ:-457.5,maxZ:-300, anchor:[-1190,-390]}
]);
const ROADS = {
  2:[[-1075,-900],[-1058,-878],[-1024,-844]],
  3:[[-1008,-839],[-980,-819],[-951,-789]],
  4:[[-936,-785],[-913,-761],[-880,-730]],
  5:[[-866,-1060],[-848,-985],[-822,-918]], // route re-surveyed by Solid: the drawn line climbed the high shoulder (14.2-17.1 m) and the land refused every stone; this line walks the ward's low northern shelf (5.8-10.2 m), band-verified clear
  6:[[-1136,-602],[-1126,-572],[-1118,-540]], // route re-surveyed by Solid: the drawn line ran through the South Lot and across the Long Road; this line is the true South Connection — from the podium's south-east shoulder down to the Long Road's north verge, band-verified clear
  7:[[-1215,-437],[-1190,-395],[-1160,-350]]
};
function ctx({THREE,groundAt,isAllowed},ward) {
  if(!THREE || typeof groundAt!=='function' || typeof isAllowed!=='function')
    throw Error('THREE, groundAt and verified isAllowed(x,z) required');
  co