PROCITY/docs/LANES/ROUND37_INSTRUCTIONS.md

92 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 (99124k 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.