Lane F R37 (v8 wave 0, CLOSE): the round gate — QA GREEN 7/0/0/0, flags harness 0 fails / 0 warns, MATRIX GREEN 10 towns x 7 gates

qa.sh --strict --matrix on the true final tree (Lane A e4d7762 + Lane B 47db478/79177bc + Fable
7bd96e5/4a7c0f1 + F 2396885/6afd1ed/f522021), port-isolated on :8975.

  SUMMARY  7 passed · 0 failed · 0 warn · 0 skipped — QA GREEN

  selfcheck   ALL GREEN 157,407/157,407 (was 156,352 — Lane A's +1,055 poster-clearance
              assertions, three arms, all green on the ruled street)
  manifest    0 errors / 0 warnings; atlas-QA 15 atlases, 15 licence lines shown; depot live
  flags       0 fails / 0 WARNS
                classic  fp 0x5f76e76 · dig INERT at the bin · gig layer wholly absent ·
                         162 draws / 16,642 tris · fetch surface CLEAN against v2.1 (125 requests:
                         68 code, 52 same-origin v2.1 assets, 4 depot, 1 NAMED EXCEPTION printed) ·
                         allow-list control fired (2 injected -> 2 named violations)
                default  four flags on · 14 gigs / 14 posters / venue geo / tram · gig golden
                         0xec7a2d39 · 131 draws / 23,382 tris @ venue block · dig REACHABLE naked
                kerb     all six arms green, control at EXACTLY 14 under ?verge=0
                tram     all arms + BOTH controls green
                R11-R36  audio, gigs, continuity, glance, the R30-35 game gates, djdance, real
                         crate, tier-2 kill-the-server: all re-green on the ruled street
  fig-scale   29 figs across 6 shops in [1.4,2.0] m incl. the R36 DJ-body leg
  matrix      GREEN, 10 towns x 7 gates; every town byte-equal on re-boot; 0 fetches under
              ?noassets across all ten; tram verdicts unchanged (fenced on bendigo, fremantle,
              katoomba_real — the same three the rebuilt smoke_tram uses for its absence arm)

One caveat kept in the notes rather than buried, so this round's central finding is not undone by
its own suite: the matrix's budget column (69-161 draws) is DBG.shot('venue_night') CLEAN-LOAD
BOOKMARK numbers, and 37.1 is the proof that a bookmark under-reports a walked-and-turned frame by
~120 draws. That column is a regression signal, not the budget of record. Making the matrix
walk-and-turn every town is a real improvement and a real cost — FILED TO THE v8 DEBT LEDGER, not
smuggled into a floor round.

NO TAG. Wave 0 levels the floor; it does not ship a version.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-08-03 17:42:08 +10:00
parent f522021765
commit b6df11dfd6
2 changed files with 153 additions and 10 deletions

View File

@ -45,17 +45,52 @@ fenced katoomba_real (0 stops, **0 group children**, 0 m moved) · OFF under `?t
**Both controls demonstrated every run** — the run-predicate pointed at the fenced town and the **Both controls demonstrated every run** — the run-predicate pointed at the fenced town and the
absence-predicate pointed at the running tram must each go red. absence-predicate pointed at the running tram must each go red.
**0.5 — `classic_regression` GETS A NETWORK ALLOW-LIST**, derived from the **v2.0 tag at gate time** **0.1 (F half) — THE KERB GATE: the ruling is in the paint, and the control fires at EXACTLY 14.**
New STRICT `smoke_kerb`. A's corrected selfcheck asks the plan-side question; F's asks the runtime
one, of the paint — **raycast straight down at every rendered poster and classify the topmost ground
hit by MATERIAL IDENTITY** (`skins.groundMat()` is cached, so the road mesh's material *is* the
object the factory returns — no mesh names, no strings, nothing that drifts when B edits). Topmost,
not first, because B put the carriageway on top at junctions. Six arms, all green: **14 posters
rendered == 14 in `plan.posters`, every one within 0 m** (nobody had ever asserted the poster you see
is the poster A placed) · **detector control A** — a main centreline classifies ROAD at y 0.04 ·
**detector control B** — 13 m off it classifies FOOTPATH at y 0.02 · **THE RULING: 0 of 14 posters on
road paint**, tally `{footpath: 14}` · **THE CONTROL: the same leg fails under `?verge=0` at EXACTLY
14**, tally `{road: 14}` · **CLASSIC KEEPS ITS PAINT** — 13 m off the centreline is still ROAD under
`?classic=1`, 0 posters. **Two lanes, two wholly independent methods, the same number 14**: A counted
plan-side by offset in node; F counted paint-side by raycast in the browser off B's geometry.
**0.5 — `classic_regression` GETS A NETWORK ALLOW-LIST**, derived from the **v2 tag at gate time**
(`git ls-tree` + v2.0's own manifest), never a deny-list. **The brief's shape would have missed the (`git ls-tree` + v2.0's own manifest), never a deny-list. **The brief's shape would have missed the
breach it was written for**: the R36 widening was `models/peds/woman_dj_01.glb`*same-origin* — so breach it was written for**: the R36 widening was `models/peds/woman_dj_01.glb`*same-origin* — so
"four depot GLBs + same-origin" is green straight through it. `/models/peds` is enumerated by the "four depot GLBs + same-origin" is green straight through it. `/models/peds` is enumerated by the
v2.0 tree (exactly the covenanted 21 files; today's dir holds 32). The nine depot fetches are v2.0 tree (exactly the covenanted 21 files; today's dir holds 32). The nine depot fetches are
**baseline, not a breach** — proven by booting the actual v2.0 tree and capturing its wire. **baseline, not a breach** — proven by booting the actual v2.0 tree and capturing its wire.
**Control every run**: injecting the R36 breach itself plus a never-existed asset turns the clean **Control every run**: injecting the R36 breach itself plus a never-existed asset turns the clean
verdict into exactly 2 named violations. 🟠 **Carried for Fable:** classic's fetch surface is verdict into exactly 2 named violations. F measured classic's surface as **+6 files** vs the real
**+6 files** vs the real v2.0 tree — 5 audio (R11 `f7dd44f`) + `assets/towns/index.json` (R20/R21). v2.0 tree and **held rather than ruling**; **Fable ruled** (`4a7c0f1`): the 5 audio files are
Allowed on the list, printed every run, **UNRATIFIED**; F did not improvise a verdict on a **RATIFIED BASELINE** (v2.1 was v2's final tagged state, so audio shipped inside v2 as the furniture
six-epoch-old fact. Full record: LANE_F_NOTES §37. GLBs did) and `assets/towns/index.json` is **NOT baseline** but a **named, printed exception**. Landed
in the mechanism by moving the authority tag **v2.0 → v2.1** — surgical, not generous:
`git diff v2.0 v2.1 -- web/` is the audio pack + `audio.js` + four wiring edits, **zero other assets,
zero deletions**, so the tag change admits precisely the ratified audio. Gate output confirms:
same-origin baseline **47 → 52**, exceptions **2 → 1**, control still discriminating. "Should
`?classic=1` show the town selector at all?" → v8 debt ledger, R38+.
**THE CLOSE — `qa.sh --strict --matrix` on the true final tree (A + B + Fable + F all landed,
port-isolated :8975): 7 passed · 0 failed · 0 warn · 0 skipped — QA GREEN.** Selfcheck
**157,407/157,407** (A's +1,055 poster assertions, green on the ruled street) · manifest 0 err/0 warn ·
**flags harness 0 fails / 0 warns** (classic fp `0x5f76e76`, 162 draws/16,642 tris, fetch surface
clean vs **v2.1** with 1 named exception and the injection control firing · default boot gig golden
`0xec7a2d39`, 131 draws/23,382 tris, dig reachable naked · the new kerb gate and the rebuilt tram
gate both green with every control) · figure-scale 29 figs/6 shops · **MATRIX GREEN 10 towns × 7
gates**, tram verdicts unchanged (fenced on bendigo/fremantle/katoomba_real — the same three the
rebuilt smoke uses for its absence arm). **No tag: wave 0 levels the floor, it does not ship a
version.** *Caveat kept honest in the notes: the matrix's own budget column is clean-load bookmark
numbers (69161 draws) — a regression signal, not the budget of record, which this very round proved
under-reports a walked-and-turned frame by ~120 draws. Making the matrix walk-and-turn is filed to
the debt ledger, not smuggled into a floor round.*
Full record: LANE_F_NOTES §37.
--- ---

View File

@ -2318,6 +2318,68 @@ needed: either they are part of what the covenant preserves (say so, and the lis
right), or classic should not be fetching them (and they get gated like the DJ bodies were). right), or classic should not be fetching them (and they get gated like the DJ bodies were).
**F did not improvise a verdict on a six-epoch-old fact.** **F did not improvise a verdict on a six-epoch-old fact.**
### §37.4a Fable's ruling on the +6 delta, landed in the mechanism (`4a7c0f1`)
**The audio is RATIFIED BASELINE and git makes that exact rather than generous.** Fable ruled the
covenant preserves "the exact v2 town" and **`v2.1` was v2's final tagged state**, so the audio pack
shipped *inside* v2 exactly as the furniture GLBs did. So the allow-list's authority moved
**`v2.0` → `v2.1`** — and that is a surgical widening, not a shrug: `git diff v2.0 v2.1 -- web/` is
the audio pack, `js/world/audio.js` and four wiring edits. **Zero other assets. Zero deletions.** The
tag change therefore admits precisely the five ratified audio files and nothing else, and the depot
GLB names survive unchanged in v2.1's manifest. Verified in the gate output: same-origin baseline
assets **47 → 52**, carried exceptions **2 → 1**, control still discriminating.
**`assets/towns/index.json` is NOT baseline** and is now labelled so it can never read as if it were.
It prints every run as `EXCEPTION (NOT v2.1 baseline)` with its provenance (v4 selector machinery,
`078245f` R20 / `4b01449` R21) and Fable's reasoning (no geometry, no identity, no seeded draw — not
the R36 species, not gettable in a floor round). The open question — *should `?classic=1` show the
town selector at all?* — is on the v8 debt ledger for R38+.
*Also recorded by Fable: the allow-list mechanism (derive from `git ls-tree <tag>` at gate time) is
the correct one and the brief's "four depot GLBs + same-origin" shape was wrong; and the "viewport is
the variable" hypothesis was Fable's, disproven by F's measurement, and is noted as Fable's.*
### §37.6 THE KERB GATE (item 0.1, F half) — **the ruling is in the paint, and the control fires at exactly 14**
`smoke_kerb`, STRICT, wired into the harness after `smoke_tram`. Lane A's corrected selfcheck asks
the **plan-side** question (is the poster's offset inside `vergeBand(e)[0]`?). That is right for A's
file — but it still never reads a number that came from B, which is the precise failure that made the
old gate vacuous ("the gate and its subject were the same function agreeing with itself"). So F's
gate asks the **runtime** question, of the paint:
> **raycast straight down at every rendered poster and classify the topmost ground hit.**
Classification is by **material identity**`skins.groundMat()` is a cached factory, so the road
mesh's material *is* the object `groundMat('djsim-road')` returns. No mesh names, no string matching,
nothing that drifts when B edits the file. **Topmost, not first**, deliberately: B put the carriageway
*on top* at junctions (`ROAD_Y` 0 → 0.04) so roads run through intersections, and what the player sees
under a poster is the top surface.
**All six arms green on the final tree:**
| arm | result |
|---|---|
| **subject** | **14 posters rendered == 14 in `plan.posters`**, every one within **0 m** of its planned position — read off the real `venue-posters` `InstancedMesh` matrices. *Nobody had ever asserted that the poster you see is the poster A placed.* Zero posters ⇒ FAIL, never a skip. |
| **detector control A** | the centreline of the longest main (`main@28 m`, 137.5 m) classifies **ROAD at y = 0.04** — the detector can see bitumen |
| **detector control B** | **13 m** off that centreline (1 m inboard of the corridor edge) classifies **FOOTPATH at y = 0.02** — the ruling is in the geometry |
| **THE RULING** | **0 of 14** posters stand on road paint on the default boot. Surface tally: `{djsim-footpath: 14}` |
| **THE CONTROL** | the same leg under **`?verge=0` fails at EXACTLY 14** — tally `{djsim-road: 14}`. Keyed to B's flag, not to a line number, matching A's discipline |
| **classic keeps its paint** | 13 m off the centreline is **still ROAD** under `?classic=1`, and classic renders **0 posters** — Fable's mid-round ruling holds; the covenanted render did not move on a render-side ruling |
**The two detector controls are the load-bearing part.** "0 posters on road" is a sentence about
nothing unless the classifier can be shown to say *road* and to say *footpath* on the same boot. Both
are asserted every run, so the green cannot come from a detector that is silent.
**A cross-lane agreement worth recording: two lanes, two entirely independent methods, the same
number.** Lane A counted 14 plan-side, by offset against `vergeBand(e)[0]`, in node, over the plan.
F counted 14 paint-side, by raycast against merged mesh materials, in the browser, over Lane B's
geometry. The default boot flips both to 0/clear. That is the kerb ruling proven from both ends.
*Honest note on the semantics:* a poster clear of *its own* edge's carriageway could still stand on a
**crossing** street's carriageway at a junction, where B's `ROAD_Y` fix puts road on top. F's gate
would call that on-road and A's would not. **Measured: it does not happen on the default boot** (0 of
14). If it ever does, the two gates disagreeing is the finding, not a bug in either.
### §37.5 Housekeeping ### §37.5 Housekeeping
- **`flags_check.py --only <name[,name…]>`** for single-gate development runs. It prints a - **`flags_check.py --only <name[,name…]>`** for single-gate development runs. It prints a
@ -2325,8 +2387,54 @@ right), or classic should not be fetching them (and they get gated like the DJ b
be mistaken for a suite pass in a log. `qa.sh` invokes `flags_check.py` with no arguments; unaffected. be mistaken for a suite pass in a log. `qa.sh` invokes `flags_check.py` with no arguments; unaffected.
- **README flags table** gains `?verge=0` (Lane B's R37 falsifiability control — B flagged that the - **README flags table** gains `?verge=0` (Lane B's R37 falsifiability control — B flagged that the
table is F's file) and a row for `?r=N` / `?shadows=0|1` naming the `?r=3` breach measured above. table is F's file) and a row for `?r=N` / `?shadows=0|1` naming the `?r=3` breach measured above.
- Regression check on the post-Lane-B tree (`7bd96e5`), the three gates this session touched or that The `?verge=0` row states A's corrected band figures, not the charter's headline: **9 m is the
B's ground change could move: `classic_regression` · `default_boot_gate` · `smoke_tram` synthetic town's 28 m main only**; a real main is 24 m ⇒ 7 m, and `side`@12 — **72% of the whole
**0 fails / 0 warns.** Classic fp `0x5f76e76` holds at **162 draws / 16,642 tris**; the default corpus** — is 3 m.
boot pins to gig golden `0xec7a2d39` at 131 draws / 23,382 tris; dig REACHABLE naked. The full - **Lane B's three tram discontinuities** (the 6.4 m end-of-line lane swap, the 2.5 m `EPS` stop
`qa.sh --strict --matrix` belongs to the later F session with the kerb gate, per the round order. snap, the ≤0.68 m bend kink) arrived as measurements and are now *asserted* by the rebuilt
`smoke_tram`: every discontinuity must be **bounded by 2·LANE**, with **≥1** at exactly 2·LANE
(proving it reached the end and turned). No action beyond keeping them here; a new one goes red.
- Interim regression on `7bd96e5`: `classic_regression` · `default_boot_gate` · `smoke_tram`
0 fails / 0 warns. Superseded by the full suite below.
### §37.7 THE ROUND CLOSE — `qa.sh --strict --matrix` on the true final tree
Tree: Lane A `e4d7762` + Lane B `47db478`/`79177bc` + Fable `7bd96e5`/`4a7c0f1` + F `2396885`,
`6afd1ed`, `f522021`. Port-isolated on `:8975`.
> **SUMMARY: 7 passed · 0 failed · 0 warn · 0 skipped — QA GREEN.**
- **scaffold + consistency + citygen selfcheck: ALL GREEN, `157,407/157,407`** (was 156,352 — Lane A's
+1,055 new poster-clearance assertions, three arms, all landing green on the ruled street).
- **manifest validator**: OK — 0 errors, 0 warnings (48 facades · 85 skin groups · 33 GLBs · 28 audio;
atlas-QA 15 per-shop atlases valid, 15 licence lines SHOWN; depot live).
- **flags harness: 0 fails / 0 WARNS.**
- **classic covenant**: fp `0x5f76e76` · dig INERT at the bin · gig layer wholly absent ·
**162 draws / 16,642 tris** · 0 errors · **fetch surface CLEAN against `v2.1`** — 125 requests,
68 code modules / 52 same-origin v2.1 assets / 4 depot assets in v2.1's manifest / **1 named
exception** (`towns/index.json`, printed) · **the allow-list control fired** (2 injected → 2 named
violations).
- **default boot**: all four flags ON · 14 gigs / 14 posters / venue geo / tram · gig golden
`0xec7a2d39` · 131 draws / 23,382 tris @ venue block · dig REACHABLE naked.
- **`smoke_kerb` (new)**: all six arms green — §37.6. Control at exactly 14 under `?verge=0`.
- **`smoke_tram` (rebuilt)**: all arms + **both** controls green — §37.3.
- R11 audio · R12/13 gigs · R15 continuity · R29 glance · R30R35 game gates · R36 djdance ·
R24 real crate · R27 tier-2 kill-the-server: all re-green on the ruled street. `?classic=1` still
fetches zero `look.glb` and zero dance clips.
- **figure-scale gate**: 29 interior figs across 6 shops all in [1.4, 2.0] m, incl. the R36 DJ-body leg
(0.9840.989 u → 1.641.89 m).
- **MATRIX GREEN — 10 towns × 7 gates** (boot · determ · budget · district · roads · tram · noassets):
2 synthetic + 3 fixtures + 5 real caches, every town byte-equal on re-boot, 0 fetches under
`?noassets` across all ten, tram verdicts unchanged (runs on synthetic/fixtures/castlemaine/newtown;
**fenced on bendigo, fremantle, katoomba_real** — the same three the rebuilt `smoke_tram` uses for
its absence arm).
**One honest caveat on the matrix's own budget column**, so this round's central finding is not
undone by its own suite: the matrix budgets (**69161 draws**) are `DBG.shot('venue_night')` **clean-load
bookmark** numbers. §37.1 is the proof that a bookmark under-reports a walked-and-turned frame by
~120 draws. The matrix column is a *regression* signal (has this town's cost moved?), **not** the
budget of record. The budget of record is §37.1's 292 / 124,793, and nothing else in the repo
measures it. Making the matrix walk-and-turn every town is a real improvement and a real cost —
**filed to the v8 debt ledger, not smuggled into a floor round.**
**No tag.** Wave 0 levels the floor; it does not ship a version.