Lane F R27: HOLD v5.0 — every real town's shops face away from their street

B's micro-task found it while fixing F's frame, and F's three photographs of empty road are the
evidence: it was never the pose. plan_osm.js:443 aims the lot's -Z at the road ("facade (-Z)
faces road"); buildings.js:404 draws the facade on the local +Z face. Exactly opposite. The
shopfront — sign, door, R26 crate mark — lands on the far side and the street gets a blank wall.
Since R18. v4.0 shipped on it. katoomba_real's street_noon, the bookmark the tours have shot
since R9, is 46 draws of bare road.

Root cause: CITY_SPEC contradicts itself — :71 (lots contract) says -Z, :335 (R15 posters) says
"+Z, B's canon" — and each generator implements one half. Synthetic follows B's canon and looks
right, which is why every golden passes and nobody saw it for nine rounds. The epoch's signature
species and its worst instance: not a gate failing on correct behaviour, but a gate suite GREEN
over a product that is wrong.

F VERIFIED IT AND F'S FIRST CHECK WAS VACUOUS — recorded because it nearly ended the round the
wrong way. F measured each lot's ry against CITY_SPEC:71's own convention and got 35/35 and 72/72
FACING, a clean contradiction of B. But plan_osm IMPLEMENTS :71, so testing :71's data against
:71's rule is self-agreement — it cannot fail. A self-consistent check over a self-contradicting
spec passes under either convention, which is exactly why nine rounds of checks missed this, and
why F nearly filed "B is wrong" with a green number in hand. The only test that sees it compares
the two conventions. F's own frames already had.

Not F's to fix and B was right not to either: A's file, it moves every real-town plan (36 goldens
re-pin under the amendment law), and a self-contradicting spec is Fable's to rule, not a lane's
to pick a side of. B proved the one-liner (ry = atan2(-nx,-nz) → katoomba 0/72 → 72/72, F's money
shot 4m from Musgrave Road) and reverted it — the same discipline F applied to A's sweep and E's
validator, arriving from the other direction.

Order: Fable rules the spec → A lands the line + re-pins the goldens in ONE commit → F re-gates,
re-shoots, tags. Everything else is done and green: the kill-the-server gate, the reader, the
sandbox, the interior money shot (interiors pose themselves; the crate is real either way).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-07-17 15:47:26 +10:00
parent 4c2702fc58
commit 8a1d2e91e8

View File

@ -1300,3 +1300,41 @@ building is where the lot says, whether `frontEdge` is the road you'd stand on,
B's own frontage anchor (B built `poseForVenue`/bookmarks for exactly this). **Next: ask B** — B owns the
frontage and shipped the stocked-shopfront mark this round; F re-deriving B's anchor in a tour script is
how you get three bad frames. The interior money shot needed none of this: the room poses itself.
### ⚠ THE HOLD — `v5.0` NOT tagged. Every real town's shops face away from their street.
B's micro-task found it while fixing F's frame, and **F's three photographs of empty road are the
evidence**: it was never the pose. `plan_osm.js:443` aims the lot's **Z** at the road ("facade (Z)
faces road"); `buildings.js:404` draws the facade on the **local +Z face**. Exactly opposite. The
shopfront — sign, door, R26 crate mark — lands on the **far side**, and the street gets a blank wall.
**Since R18.** v4.0 shipped on it. Nine rounds of tours shot it. `katoomba_real`'s `street_noon`, the
bookmark the tours have used since R9, is 46 draws of bare road.
Root cause: **CITY_SPEC contradicts itself**`:71` (the lots contract) says Z, `:335` (R15 posters)
says "+Z, B's canon" — and each generator implements one half. **Synthetic follows B's canon and looks
right, which is why every golden passes and nobody saw it for nine rounds.** The epoch's signature
species, one last time, and the worst instance of it: not a gate that fails on correct behaviour, but a
gate suite that is *green over a product that is wrong*.
**F verified it, and F's first check was VACUOUS — worth recording, because it nearly ended the round the
wrong way.** F measured each lot's `ry` against CITY_SPEC:71's own convention and got **35/35 and 72/72
FACING** — a clean contradiction of B. But `plan_osm` implements :71, so testing :71's data against :71's
rule is self-agreement: it cannot fail. **A self-consistent check over a self-contradicting spec passes
under either convention** — which is precisely why nine rounds of checks never caught this, and why F
nearly reported "B is wrong" with a green number in hand. The only test that sees it compares the two
conventions. F's frames already had.
**Not F's to fix**, and B was right not to either: it is **A's file**, it moves **every real-town plan**
(so every real-town golden re-pins under the amendment law — 36 of them), and **a self-contradicting spec
is Fable's to rule**, not a lane's to pick a side of. B proved the one-liner works (`ry = atan2(-nx,-nz)`
→ katoomba 0/72 → 72/72, and F's money shot appears 4 m from Musgrave Road) and reverted it. That is the
same discipline F applied to A's sweep and E's validator, arriving from the other direction.
**Order: Fable rules the spec → A lands the line + re-pins the goldens in one commit (amendment law) → F
re-gates, re-shoots the tour, tags `v5.0`.** Everything else for the release is done and green: the
kill-the-server gate, the reader, the sandbox, the interior money shot (interiors pose themselves and are
untouched by this — the crate is real either way).
*And B's own postscript is the lesson twice over: B credited "chunk-buildings 348 tris (0.2%)" to the
instancing work in R22 — 348 tris is ~29 boxes. It wasn't efficiency, it was the buildings being absent
from frame. B read the evidence as a win for five rounds. A number you like is the easiest vacuous gate
of all.*