<!-- SOLID CITY · part 3667 -->
ed 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: [], 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) {
  return function (x, z) { return triHeight(tris, 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' designer delivered their standing surfaces as raw triangle
 * geometry — "VISUAL GEOMETRY ONLY until stand/collision registry
 * integrated" — so this placer performs the integration he specified:
 * the exact triangles of each connector answer standY by barycentric
 * height, the same mathematics his measureConnector proves them by. */
function triHeight(tris, x, z) {
  // each tri: [ax, ay, az, bx, by, bz, cx, cy, cz] in world coordinates
  for (var i = 0; i < tris.length; i++) {
    var t = tris[i];
    var den = (t[5] - t[8]) * (t[0] - t[6]) + (t[6] - t[3]) * (t[2] - t[8]);
    if (Math.abs(den) < 1e-10) continue;
    var u = ((t[5] - t[8]) * (x - t[6]) + (t[6] - t[3]) * (z - t[8])) / den;
    var v = ((t[8] - t[2]) * (x - t[6]) + (t[0] - t[6]) * (z - t[8])) / den;
    var w = 1 - u - v;
    if (Math.min(u, v, w) < -1e-7) continue;
    return u * t[1] + v * t[4] + w * t[7];
  }
  return null;
}
function extractTris(geo) {
  var pos = geo.getAttribute('position'), idx = geo.getIndex(), tris = [];
  var n = idx ? idx.count : pos.count;
  for (var i = 0; i + 2 < n; i += 3) {
    var tri = [];
    for (var k = 0; k < 3; k++) {
      var vi = idx ? idx.getX(i + k) : i + k;
      tri.push(pos.getX(vi), pos.getY(vi), pos.getZ(vi));
    }
    tris.push(tri);
  }
  return tris;
}
function standY(x, z, py) {
  var best = -1000;
  for (var h = 0; h < H.houses.length; h++) {
    var hs = H.houses[h], st = hs.stand, uv = localUV(st, x, z), floor = st.center[1];
    var cand = [];
    if (Math.abs(uv[0]) <= 4 && Math.abs(uv[1]) <= 5) cand.push(floor);
    if (hs.roofTop && Math.abs(uv[0]) <= 4.35 && Math.abs(uv[1]) <= 5.35) cand.push(hs.roofTop);
    for (var i = 0; i < cand.length; i++) if ((py == null || cand[i] <= py + 1.6) && cand[i] > best) best = cand[i];
  }
  for (var j = 0; j < H.joins.length; j++) {
    var y = triHeight(H.joins[j], x, z);
    if (y != null && (py == null || y <= py + 1.6) && y > best) best = y;
  }
  return best;
}
function radar(rg, blip, flying) {
  if (!H.houses.length) return;
  blip(H.housePos.x, H.housePos.z, '#ffd27a', flying ? 3 : 6, flying ? '' : 'PILOT HOUSE');
  for (var h = 1; h < H.houses.length; h++) blip(H.houses[h].cx, H.houses[h].cz, '#ffd27a', 3, '');
  for (var k in LINK_MID) blip(LINK_MID[k].x, LINK_MID[k].z, '#ffd27a', 3, '');
  blip(-1127, -524, '#ffd27a', 3, '');
  blip(-912, -768, '#ffd27a', 3, '');
}
function update(dt) {
  if (!H.houses.length) return;
  var dx = S.p.x - H.housePos.x, dz = S.p.z - H.housePos.z;
  if (!H.saidHouse && dx * dx + dz * dz < 150 * 150) {
    H.saidHouse = true;
    A.help('🏠 THE PILOT HOUSE — the nation\'s first dwelling, in Ward 2. Its door is glass; walk in, stand on its floor, examine its foundations. Nine more lawful houses now stand beside it.', 8);
  }
  for (var w in STREET) {
    if (H.saidStreet[w]) continue;
    var st = STREET[w], sx = S.p.x - st.x, sz = S.p.z - st.z;
    if (sx * sx + sz * sz < 130 * 130) { H.saidStreet[w] = true; A.help(st.line || ('🏘 ' + st.name + ' STREET — dwellings of the nat