diff --git a/docs/LANES/ROUND27_INSTRUCTIONS.md b/docs/LANES/ROUND27_INSTRUCTIONS.md index 5eb4330..31af8d6 100644 --- a/docs/LANES/ROUND27_INSTRUCTIONS.md +++ b/docs/LANES/ROUND27_INSTRUCTIONS.md @@ -153,6 +153,48 @@ commit, B-pathspec. This also closes the gap for every future godverse tour fram the (now-permanent, corrected) kill-the-server smoke class → tag **`v5.0`** → push. Fable's retro follows. +## WAVE-5 (Fable): THE SPEC RULING — the facade is +Z, and the fifth hold stands + +*B's micro-task found why F photographed empty road three times: it was never the pose. +`plan_osm.js:443` aims the lot's −Z at the road (implementing CITY_SPEC:71); `buildings.js:404` +draws the facade on +Z (CITY_SPEC:335, B's canon). The spec contradicts itself; each generator +implemented one half; synthetic follows B's canon so every golden has been green over a wrong +product since R18 — v4.0 shipped on it. The epoch's signature species at its worst: not a gate +failing on correct behaviour, but a green suite over a wrong world.* + +**THE RULING: the visible facade is LOCAL +Z. B's canon is canonical.** It has been the de +facto truth since v1 (buildings.js drew it there from the start; venue.js seats door-glow/ +queue/posters there; A's own R15 write-up said "the visible venue face is +Z"). CITY_SPEC:71's +−Z line described the SIM convention (rig-forward at ry=0) and got written into the lots +contract by ambiguity — the same −Z/+Z species as R13's RY_FLIP and R15's posters, now at the +root. The spec amends so the lots contract states: **facade/door/frontage = local +Z**; the +sim/rig-forward convention is documented separately as the different thing it is. + +**A — the fix, the sweep, the pins (ONE commit):** +1. Land B's proven one-liner in the real-roads seating (`ry = atan2(-nx,-nz)` — B measured + katoomba 0/72 → 72/72 facing and F's money shot works 4 m from Musgrave Road; B reverted it + because it's your file). +2. **Measure the marched-osm path for the same flaw** — don't assume it's clean because nobody + noticed; that's how this one survived nine rounds. State the verdict either way. +3. Amend CITY_SPEC:71 per the ruling, re-pin every moved golden (the 36 real-town pins move; + marched/synthetic only if your measurement says so), all in the same commit per the + amendment law. +4. **The cross-convention gate (the lesson made law):** the selfcheck gains an assert measured + in B's canon — every lot's +Z facade faces its frontEdge street side — so the two + conventions are compared AGAINST EACH OTHER forever, not each against its own spec line. + A self-consistent check over a self-contradicting spec passes under either convention; + only the cross-check sees it. (F proved this the hard way and recorded it.) + +**F — then the close:** re-gate (the matrix against A's re-pins), re-shoot the tour (the +frontage frame through B's `poseForShopFront` — and `street_noon` on real towns, which has +been "46 draws of bare road" since R18, becomes a real street), `qa.sh --strict --matrix`, +tag **`v5.0`**, push. + +**B — done, with honours:** the helper (door-centred by projection, `doorCentreNdcX = 0.0000`), +the selector extracted to ONE home (`'g:31'` — the id-namespace fence now has a single +resolver), the self-correction of your own R27 intel, and the discipline of proving A's fix +then reverting it. Nothing further owed. + ## THE EXACT RUN ORDER 0. **WAVE 0: F re-runs and tags `v5.0-beta`.** Hard stop until it lands.