Fable (integrator): budget PINNED 292/124,793 (the 280-vs-191 split was camera bearing) + ruling on classic's post-v2 fetch delta; stale numbers corrected in Fable-owned docs

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-08-03 17:22:59 +10:00
parent 6afd1ed7a3
commit 4a7c0f1295
4 changed files with 44 additions and 6 deletions

View File

@ -107,6 +107,42 @@ starts to fork, the fence comes down and classic takes the footpath.
*John may overrule; it is a one-token change (drop `!classic`), and B has proven both sides *John may overrule; it is a one-token change (drop `!classic`), and B has proven both sides
render identically to their intended baselines.* render identically to their intended baselines.*
## FABLE'S SECOND MID-ROUND RULING — CLASSIC'S POST-v2 FETCH DELTA (F's escalation, §0.5)
F built the allow-list by deriving it from the **v2.0 tag at gate time** rather than from my
brief's literal ("four depot GLBs + same-origin"), and was right to: my shape **would have gone
green straight through the R36 breach**, because `models/peds/woman_dj_01.glb` is same-origin.
Deriving from `git ls-tree v2.0` enumerates the covenanted 21 ped files where today's directory
holds 32. That is the correct mechanism and it stands.
Doing it, F measured a **+6 file delta** between the real v2.0 tree's wire and today's
`?classic=1`, and refused to improvise a verdict on a six-epoch-old fact. **RULED:**
- **The 5 audio files (R11, `f7dd44f`): RATIFIED as baseline.** The covenant preserves "the
exact v2 town", and **v2.1 was v2's final tagged state** — audio shipped inside v2, so
classic fetching it is classic being correct, exactly as the four furniture GLBs are.
- **`assets/towns/index.json` (R20/R21): NOT baseline — carried as a NAMED, PRINTED exception,
not silently.** It is v4 selector machinery in a v2 museum. It changes nothing about the
classic town (a UI list, no geometry, no identity, no seeded draw), so it is not the R36
species and it does not get gated in a floor round. It goes on the allow-list **labelled as a
post-v2 exception** so it can never read as baseline.
- **Filed to the v8 debt ledger, for R38 or later:** *should `?classic=1` show the town selector
at all?* In v2 there was no selector (it landed R19). Hiding it under classic would retire the
exception at the source and cost one branch — but it is a question about what classic *means*,
which is a design ruling, not a leak to plug mid-round.
**Also ratified from F's report:** the budget of record is **292 draws / 124,793 tris** (the
280-vs-191 split was **camera bearing** — 110 draws of spread, the audit took `DBG.teleport`'s
default yaw 0 which is the worst bearing, the spike took a travel-facing yaw; both correct,
different quantities). My "viewport is the variable" hypothesis was **disproven** — F ran
1280×720 vs 2560×1440 with everything else fixed and got byte-identical counts; three's culling
is frustum-shaped, not pixel-shaped. Shared instance cap: **256**, binding companions ≤24
tris/instance and proximity-first spending. **Margin is 8 draws, not twenty.**
**Filed, not fixed (R38+):** `?r=3` on the default town measures **307 draws** — an ungated
override that breaches the ≤300 law, with no gate covering it. Documented in the README as a
diagnostic, not a supported boot; whether `?r=` gets clamped is a later ruling.
## Standing ## Standing
- John's three rulings are made; nothing in this round needs him. - John's three rulings are made; nothing in this round needs him.

View File

@ -22,7 +22,7 @@ The visible cost of that, today, on the boot every player gets: **all 14 gig pos
Every street-side content idea in this review — a bus stop with a real platform, a vendor pitched on a verge, a dog on a nature strip, a parked car at a kerb — collides with this before it collides with anything else. **The highest-leverage change available is not new content. It is deciding where the kerb is.** It costs about twenty lines and zero draws. Every street-side content idea in this review — a bus stop with a real platform, a vendor pitched on a verge, a dog on a nature strip, a parked car at a kerb — collides with this before it collides with anything else. **The highest-leverage change available is not new content. It is deciding where the kerb is.** It costs about twenty lines and zero draws.
**Two corrections to house folklore, both measured.** First: the draw budget. The "~131 draws / ~185 worst street view, roughly 100+ draws of headroom" figure is a *teleport-to-bookmark* number and it does not survive a walk. Walked in 8m steps down the main spine, the default boot peaks at **280 draws of 300**. The real margin is about twenty. Triangles, however, are wide open — 99k124k of 200k, with the two independent measurement sessions disagreeing enough that the tri baseline needs a re-pin. **Spend triangles, not draws.** A town-wide single `InstancedMesh` costs 1 draw regardless of population (venue.js runs 381 light pools that way, verified); a new per-chunk instanced type costs +1 draw × up to 31 live chunks. **Two corrections to house folklore, both measured.** First: the draw budget. The "~131 draws / ~185 worst street view, roughly 100+ draws of headroom" figure is a *teleport-to-bookmark* number and it does not survive a walk. Walked in 8m steps down the main spine, the default boot peaks at **280 draws of 300** *(R37 re-measured and PINNED it at **292 draws / 124,793 tris**; the 280-vs-191 split was camera bearing, not method — see LANE_F_NOTES §37)*. The real margin is about twenty. Triangles, however, are wide open — 99k124k of 200k, with the two independent measurement sessions disagreeing enough that the tri baseline needs a re-pin. **Spend triangles, not draws.** A town-wide single `InstancedMesh` costs 1 draw regardless of population (venue.js runs 381 light pools that way, verified); a new per-chunk instanced type costs +1 draw × up to 31 live chunks.
Second, and larger: **all 21 real towns are 100% `use:'shop'` lots with exactly one district, `mainstreet`.** No house lots, no yard lots, no stall lots, no market block, no residential backstreets. The town the design language describes — the market square, the backstreets, the yards — exists on precisely one town: the synthetic one, which is also the classic one. This kills or halves a third of what was proposed, and it is the most important strategic finding in the packet. Second, and larger: **all 21 real towns are 100% `use:'shop'` lots with exactly one district, `mainstreet`.** No house lots, no yard lots, no stall lots, no market block, no residential backstreets. The town the design language describes — the market square, the backstreets, the yards — exists on precisely one town: the synthetic one, which is also the classic one. This kills or halves a third of what was proposed, and it is the most important strategic finding in the packet.

View File

@ -142,7 +142,7 @@ Candidates, ranked by honest cost:
A 16-agent top-down review (5 lane cartographers · asset-capability audit · design research · A 16-agent top-down review (5 lane cartographers · asset-capability audit · design research ·
4 design themes × adversarial verify · synthesis) measured this shelf against the code and 4 design themes × adversarial verify · synthesis) measured this shelf against the code and
corrected several of its assumptions. **Read that review before charting anything below.** corrected several of its assumptions. **Read that review before charting anything below.**
Headlines that change this document: the draw budget of record is **280/300 walked**, not the Headlines that change this document: the draw budget of record is **292/300 walked** (R37-pinned; 280 was the same measurement at a coarser step), not the
~131 bookmark figure (spend TRIS, not draws) · **all 21 real towns are 100% `use:'shop'` lots ~131 bookmark figure (spend TRIS, not draws) · **all 21 real towns are 100% `use:'shop'` lots
with one district** — every residential/market/yard idea here is synthetic-town-only until the with one district** — every residential/market/yard idea here is synthetic-town-only until the
civic-layer fetch lands, which promotes the civic layer from "nice" to **the strategic v9** · civic-layer fetch lands, which promotes the civic layer from "nice" to **the strategic v9** ·

View File

@ -127,10 +127,12 @@ the baseline the covenant preserves. The hazard is real; the breach is not.)*
**WAVE 0 — THE FLOOR** *(one round, three lanes, all micro, must precede content)* **WAVE 0 — THE FLOOR** *(one round, three lanes, all micro, must precede content)*
0.1 the kerb ruling landed as code + the `?verge=0` control · 0.2 repair `smoke_tram` (it 0.1 the kerb ruling landed as code + the `?verge=0` control · 0.2 repair `smoke_tram` (it
asserts one thing, prints a SKIP when absent, and **passes on the fenced path** — a live asserts one thing, prints a SKIP when absent, and **passes on the fenced path** — a live
vacuous-gate violation inside our own suite) · **0.3 SETTLE THE BUDGET OF RECORD — now the vacuous-gate violation inside our own suite) · **0.3 SETTLE THE BUDGET OF RECORD — DONE (R37)**: the 280-vs-191 split was the CAMERA
round's FIRST job**: two independent measurements disagree (280/300 walked vs 191 default / BEARING (110 draws of spread; the audit took `DBG.teleport`'s default yaw 0 = the worst
167 classic by teleport-walk), so nothing spends against a number nobody can reproduce; walk bearing, the spike supplied a travel-facing yaw = mid-range — both correct, different
it on a real GPU, re-pin, and settle ONE shared instance cap while you are there · 0.4 wire quantities). **PINNED: 292 draws / 124,793 tris**, worst-draw and worst-tri on DIFFERENT
frames, 8 draws of margin. Shared instance cap **256**, with ≤24 tris/instance and
proximity-first spending · 0.4 wire
`ctx.onChunkBuilt`/`onChunkDisposed` (producer and consumer both shipped since R3, never `ctx.onChunkBuilt`/`onChunkDisposed` (producer and consumer both shipped since R3, never
connected) · **0.5 give `classic_regression` a network allow-list** (the four v2-era depot connected) · **0.5 give `classic_regression` a network allow-list** (the four v2-era depot
GLBs + same-origin) — it currently makes no network assertion at all, which is why the R36 GLBs + same-origin) — it currently makes no network assertion at all, which is why the R36