Wave 3 — ran after A pinned the 36 goldens (3face97) and E's tri-diet fix (d81e499).
#5 — 23-TOWN DOOR-SOAK: five-town harness scaled (~10 doors/town; sample takes one of every
type present then stride-fills). 238 doors / 1,133 in-plan shops / 23 towns.
23/23 PASS — 0 throws / 0 carves / 0 path-fails / 0 over-budget; worst 159 draws (fitzroy)
<=350. All 12 archetypes covered town-set-wide (the whole registry). 23/23 towns landed 3
venues — A's cluster bias + district placement hold from the 12-shop thin tail (darwin,
toowoomba) to the 139-shop mecca (fitzroy, worst 159 = same band as everywhere: interiors
don't care about town scale). Lane G's newtown_godverse passes (18 shops, worst 134).
#3 — G2a PER-SHOP ATLAS CONTRACT (C's half), published in LANE_C_PUB §7. All three Fable priors
hold; atlas-per-shop is strictly BETTER for draws than today's type-packs. The binding constraint
is VRAM, not draws — E's dispose ask GRANTED, it's my seam:
- Draws: 1 atlas/shop = 1 draw (shared material + baked UV -> batch merges). Cap 2; 60+ item
shops spill to the type-pack. Headroom huge (stock rooms 41-58 vs the <=350 law).
- VRAM: E's 181MB audit is right, and the cause is my own design note (stockpack.js:11 caches
atlases "NOT per-room, like depot GLBs") — correct for 3 bounded type-packs, wrong for
unbounded per-shop. Ruling: <=2 resident atlases, <=8MB decoded, <=1024" typical; C lands the
LRU cap + dispose in stockpack.js. Pre-existing + ?stock=real is opt-in (index.html:196) so
it can't touch the default boot -> NOT a v4.0 blocker; C's first v4.x item, before G2a ships.
- Schema: E's index confirmed verbatim, keyed per shop; UV top-left (C flips V); C reads uv not
cell. Fail-soft/parody/?noassets unchanged. Ask to G: emit items[] in deterministic id order —
C's seeded per-bin pick indexes into it.
C->F: 23-town interior verdict GREEN. Docs-only; both C items closed for v4.0.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>