Fable (integrator): round-37 instructions — v8 WAVE 0, THE FLOOR (budget re-pin first, the kerb, two gate repairs, the chunk hooks)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
67b62389e7
commit
62c0a2185d
91
docs/LANES/ROUND37_INSTRUCTIONS.md
Normal file
91
docs/LANES/ROUND37_INSTRUCTIONS.md
Normal file
@ -0,0 +1,91 @@
|
||||
# PROCITY — Round 37 instructions (from Fable, integrator)
|
||||
|
||||
Date: 2026-07-26 · **v8 opens.** Charter: [V8_SOMEONE_LIVES_HERE.md](../V8_SOMEONE_LIVES_HERE.md)
|
||||
· evidence: [REVIEW_CITY_PATTERNS.md](../REVIEW_CITY_PATTERNS.md) (16-agent audit) ·
|
||||
[ANIMALS_ANSWER.md](../ANIMALS_ANSWER.md) (5-agent spike). **Read the charter first.**
|
||||
|
||||
Round 37 is **WAVE 0 — THE FLOOR**. No content. Five micro items that every v8 content idea
|
||||
stands on. John's rulings are made: **the kerb is FOOTPATH**, **real towns get the content**,
|
||||
**animals are generated not downloaded**. Nothing here is a design question; it is execution
|
||||
plus honest measurement. **No tag this round** — wave 0 closes when the floor is level.
|
||||
|
||||
## The ledger
|
||||
|
||||
### 0.3 — SETTLE THE BUDGET OF RECORD *(Lane F, and it goes FIRST)*
|
||||
Two independent measurements disagree and **no proposal may spend against a number nobody can
|
||||
reproduce**: the city-patterns audit measured a **walked worst frame of 280/300 draws** (8 m
|
||||
steps down the main spine, carrying the R+1 dispose window at up to 31 live chunks); the animal
|
||||
spike re-measured and got **191 default / 167 classic** by teleport-walk and could not
|
||||
reproduce 280. Both were headless (SwiftShader). Settle it:
|
||||
- Walk it properly — real continuous motion, not bookmark teleports, sampling every frame
|
||||
through the chunk dispose window, on the default boot AND `?classic=1`.
|
||||
- If you can get a real-GPU number, say so and say how; if not, state that the number is
|
||||
headless and what that costs in confidence.
|
||||
- **Re-pin the budget of record** in the docs that assert it, and state the tri number the same
|
||||
way (99–124k of 200k was the audit's range; two sessions disagreed enough that it needs a pin).
|
||||
- **Settle ONE shared instance cap** for future town-wide standing layers (three animal
|
||||
proposals independently invented 120, 250 and "plus gulls" for the same layer). One number,
|
||||
written down, with the reasoning.
|
||||
Deliverable: the pinned numbers + the method, in LANE_F_NOTES §37 and wherever the laws are
|
||||
asserted. This unblocks everyone else's budget claims for the whole epoch.
|
||||
|
||||
### 0.1 — THE KERB: FOOTPATH *(Lane A ruling-side · Lane B code · Lane F gate)*
|
||||
John's ruling: the 9 m band between kerb and shopfront is **footpath**. Lane A's published
|
||||
corridor law (`roadWidth` / `vergeBand` / `poleOffset` in `core/registry.js`) is the single
|
||||
source of truth and Lane B adopts it.
|
||||
- **B:** extend the **existing merged `footGeos` class** inward from `e.width/2` to
|
||||
`roadWidth(e)/2` in `ground.js`. **This must stay +0 draws** (same merged mesh) — if it
|
||||
cannot, stop and report rather than paying a draw. Expect ~2k tris and *better* fill-rate
|
||||
(18 m of every main street stops being painted as road). **Special-case or it breaks:**
|
||||
`arcade` (`roadWidth` 0 → zero-area road quad + coincident kerbs) and `lane`
|
||||
(`vergeBand` = [2,2]). Grass verges survive on **residential edges only**.
|
||||
- **B:** ship **`?verge=0`** — a permanent flag that reverts to the pre-ruling geometry. It is
|
||||
the gate's falsifiability control and it costs nothing; it stays in the codebase forever.
|
||||
- **A:** the corridor law is yours — confirm the exports are what B should consume, and fix the
|
||||
selfcheck's poster-clearance assertion, which currently validates against `roadWidth/2` (5 m)
|
||||
while B painted bitumen to 14 m, i.e. **the gate was green while 14 gig posters stood in the
|
||||
road on the default boot**. Say plainly whether any golden moves (it should not — this is
|
||||
render-side), and if one does, amendment law, same commit.
|
||||
- **F (after B):** the gate — assert poster clearance on the default boot, and **assert the
|
||||
same leg FAILS under `?verge=0`**. The pre-change failure is known and counted at exactly 14.
|
||||
|
||||
### 0.2 — REPAIR `smoke_tram` *(Lane F, micro)*
|
||||
`flags_check.py:617-630` asserts exactly one thing — `!!getObjectByName('tram')` — prints a SKIP
|
||||
and returns when absent, and **passes on the fenced path**, because `tram.js:110-114` adds a
|
||||
named empty group. A live vacuous-gate violation inside our own suite. Fix it so it proves the
|
||||
tram *runs* (route resolved, stops sane, moves between frames) on the towns where it runs, and
|
||||
proves it is *genuinely absent* on the fenced towns — with a control that fails.
|
||||
|
||||
### 0.5 — `classic_regression` GETS A NETWORK ALLOW-LIST *(Lane F, micro)*
|
||||
`classic_regression` (`flags_check.py:128-241`) makes **no network assertion at all**. That is
|
||||
why R36's fetch-surface widening (five DJ bodies) needed a brand-new smoke to catch it. Give it
|
||||
an **allow-list**: the four v2-era depot furniture GLBs (`bench`, `bin`, `bus_shelter`,
|
||||
`food_cart` — git-verified v2 baseline, `24cef5a`, tagged v2.0-alpha→v2.0) plus same-origin.
|
||||
**Allow-list, never deny-list** — a deny-list only catches what you already thought of.
|
||||
Prove it discriminates: point it at a fabricated extra fetch and assert it goes red.
|
||||
|
||||
### 0.4 — WIRE `ctx.onChunkBuilt` / `onChunkDisposed` *(Lane B, one line each)*
|
||||
Producer at `chunks.js:43-51`, consumer at `sim.js:203-205`. Both shipped, never connected,
|
||||
since R3. Every per-chunk entity system in the v8 slate wants it. Wire it, prove a consumer
|
||||
actually fires, and confirm zero behaviour change when nobody subscribes.
|
||||
|
||||
## Laws
|
||||
|
||||
Everything standing. This round specifically: **+0 draws is a requirement, not an aspiration,
|
||||
for 0.1** · every new/repaired gate must FAIL when its subject is absent, and each ships with
|
||||
its falsifiability control demonstrated · pathspec-atomic commits (three lanes share the tree) ·
|
||||
no pushes, no tags — Fable pushes at the close · measurement over brief: if a premise here is
|
||||
wrong, prove it with numbers and say so loudly.
|
||||
|
||||
## Order
|
||||
|
||||
1. **Parallel: F (0.3 first, then 0.2 + 0.5 — all in `tools/`) · B (0.1 code + `?verge=0` +
|
||||
0.4) · A (0.1 ruling-side + selfcheck).** Disjoint files by construction.
|
||||
2. **Then F again:** the kerb gate against B's landed code + the `?verge=0` control, full
|
||||
`qa.sh --strict --matrix`, and the round report.
|
||||
|
||||
## Standing
|
||||
|
||||
- John's three rulings are made; nothing in this round needs him.
|
||||
- Still open for later rounds, not now: the market-plaza amendment, hardyards provenance,
|
||||
where MOCAPGOD actually lives.
|
||||
Loading…
Reference in New Issue
Block a user