<!-- SOLID CITY · part 1979 -->
t
    A.solids.push({ x0: POS.x - 3.4, x1: POS.x + 3.4, z0: POS.z - 1.3, z1: POS.z + 1.3, y0: g0 - 0.5, y1: g0 + 1.2, firstWard: true });
    A.logBuild({ t: Date.now(), site: NAME, what: 'The First Ward sign raised at the roadside — the King\'s words lettered: THIS IS MY FIRST HOOD BUILT. AI REP THE FIRST WARD. WE GHETTO OUT HERE! BUT WE GO UP!' });
  }).catch(function (e) { if (window.console) console.warn('[city] first ward sign failed', e); });
}
window.CityFirstWard = { update: update, radar: radar, pos: POS };
if (A.POIS) A.POIS.push({ id: 'first-ward', name: NAME, icon: '🪧', x: POS.x, z: POS.z, blurb: 'A roadside sign at the gateway of the Ancestors\' country. The King\'s declaration: this is my first hood built — we ghetto out here, but we go up.', arrive: 'You stand before the First Ward sign.' });
setTimeout(load, 60);
})();


===== FILE: public/city/first-ward-sign.js =====
/* ============================================================
   THE FIRST WARD SIGN — the King's roadside declaration
   (2026-10-13): a sign at the roadside telling the world where
   we came from, in the King's own words. Two steel posts, a
   titanium board with gold trim, his text lettered on the face.
   ============================================================ */
export function createFirstWardSign(o) {
  var T = o.THREE, groundAt = o.groundAt;
  var root = new T.Group();
  var g = groundAt(0, 0);

  var steel = new T.MeshLambertMaterial({ color: 0x39424f });
  var boardM = new T.MeshLambertMaterial({ color: 0x232c3d });
  var goldTrim = new T.MeshBasicMaterial({ color: 0xd8a833 });
  var gold = new T.MeshLambertMaterial({ color: 0xd8a833, emissive: 0xd8a833, emissiveIntensity: 0.25 });

  // posts
  [-2.7, 2.7].forEach(function (px) {
    var post = new T.Mesh(new T.BoxGeometry(0.38, 4.6, 0.38), steel);
    post.position.set(px, g + 1.9, 0); root.add(post);
    var foot = new T.Mesh(new T.BoxGeometry(1.0, 0.5, 1.0), boardM);
    foot.position.set(px, g + 0.05, 0); root.add(foot);
  });
  // gold frame (a slightly larger plate behind the board) + the board
  var frame = new T.Mesh(new T.BoxGeometry(8.0, 3.9, 0.16), goldTrim);
  frame.position.set(0, g + 3.15, -0.05); root.add(frame);
  var board = new T.Mesh(new T.BoxGeometry(7.7, 3.6, 0.22), boardM);
  board.position.set(0, g + 3.15, 0); root.add(board);
  // gold cap bar + octahedron finial — the hood's little crown
  var cap = new T.Mesh(new T.BoxGeometry(8.2, 0.22, 0.5), gold);
  cap.position.set(0, g + 5.22, 0); root.add(cap);
  var fin = new T.Mesh(new T.SphereGeometry(0.34, 4, 2), gold);
  fin.position.set(0, g + 5.75, 0); root.add(fin);

  // the face — the King's words, lettered
  var cv = document.createElement('canvas'); cv.width = 1024; cv.height = 480;
  var c = cv.getContext('2d');
  c.fillStyle = '#10141d'; c.fillRect(0, 0, 1024, 480);
  for (var i = 0; i < 46; i++) { c.fillStyle = 'rgba(154,164,181,0.05)'; c.fillRect(i * 23, 0, 9, 480); }
  c.strokeStyle = '#d8a833'; c.lineWidth = 5; c.strokeRect(16, 16, 992, 448);
  c.lineWidth = 2; c.strokeRect(30, 30, 964, 420);
  c.textAlign = 'center'; c.textBaseline = 'middle';
  c.fillStyle = '#f1e4c3'; c.font = '800 62px system-ui, sans-serif';
  c.fillText('THIS IS MY FIRST HOOD BUILT.', 512, 104);
  c.fillText('AI REP THE FIRST WARD.', 512, 196);
  c.fillStyle = '#ffe9a8'; c.font = '800 74px system-ui, sans-serif';
  c.fillText('WE GHETTO OUT HERE!', 512, 292);
  c.fillStyle = '#d8a833'; c.font = '900 88px system-ui, sans-serif';
  c.fillText('BUT WE GO UP!….', 512, 392);
  var tex = new T.CanvasTexture(cv);
  if (T.sRGBEncoding !== undefined) tex.encoding = T.sRGBEncoding;
  var face = new T.Mesh(new T.PlaneGeometry(7.5, 3.5), new T.MeshBasicMaterial({ map: tex }));
  face.position.set(0, g + 3.15, 0.13); root.add(face);
  var faceB = face.clone(); faceB.rotation.y = Math.PI; faceB.position.z = -0.13; root.add(faceB);

  root.userData = {
    footprint: [], center: { x: 0, z: 0 }, radius: 26, height: 7,
    update: function (t) { fin.rotation.y = t * 0.7; }
  };
  return root;
}


===== FILE: public/city/fleet-core.js =====
/* Deployed to /city/fleet-core.js on 2026-10-13 under the King's apply-everything commission.
 * VECTOR's four-craft reference core, received through the bridge and verified byte-true
 * (node --check passed; SHA of the extracted JS recorded in the book-review folder).
 * Everything below this note is his text, unmodified. — Solid */
/* SOLID CITY — FOUR CRAFT REFERENCE CORE
 * VECTOR | 2026-10-13 | DESIGN / NOT DEPLOYED / UNVERIFIED IN ENGINE
 * Plain JS, no dependencies. SI units, x/z horizontal, y up.
 * Heading 0 => +z. Positive steering => heading increases toward +x.
 * All constants are RESEARCH SYNTHESIS / STARTING POINT unless noted as equations.
 * The caller supplies authoritative support and swept collision; never trust visual meshes.
 */
export const CRAFT_STEP = 1 / 60;
const PI = Math.PI;
const clamp = (x,a,b)=>Math.max(a,Math.min(b,x))