diff --git a/docs/LANES/ROUND40_INSTRUCTIONS.md b/docs/LANES/ROUND40_INSTRUCTIONS.md new file mode 100644 index 0000000..be2fced --- /dev/null +++ b/docs/LANES/ROUND40_INSTRUCTIONS.md @@ -0,0 +1,94 @@ +# PROCITY — Round 40 instructions (from Fable, integrator) + +Date: 2026-08-03 · R39 closed green (QA 10/0/0/0, street 292/300, interior worst 188 — margin 162). +**John's direction: "just keep building — big bugtest playthru feedback sesh later."** So round 40 +is the no-rulings round: every filed R39 debt that needs no decision, plus one new keystone — the +harness that will turn John's eventual playthrough into tickets. The three standing questions +(op-shop bin contents · fog default-on · v9 third layer) stay parked until that session; nothing +here pre-empts them. Audio stays unlistened — John has no ears free either right now; the listen +pass is part of the sesh. + +## Integrator rulings made so this round needs none from John + +- **`?classic=1` gets the town selector.** Classic is the shop-window mode; hiding the 23 towns + from it serves nobody. It's information, not gameplay state. +- **Feedback capture is a build item, not tooling fluff** — it's 40.6 and F's keystone. + +## The ledger + +### 40.1 — CLOSE THE TRANSMISSION GATE'S BLIND SPOT *(Lane E)* +R39 demonstrated it live: `check_transmission()` skips any GLB with no local +`pipeline/_normalized/` copy and never scans `web/assets/models/` — the glass asset passes rc 0 +with the local copy removed. A depot-only transmissive GLB (exactly the shape of +`longbench`/`streetlight`) would ship unseen. +- The gate must scan **every path the game can load from**: `pipeline/_normalized/`, + `web/assets/models/`, and the depot listing (fetch headers/GLB chunk over the tailnet path is + fine — it's free). +- **Control demonstrated, both arms:** plant a transmissive fixture reachable only by the + previously-unscanned path → gate goes RED; remove it → GREEN. The R39 live demo is your red-arm + spec. +- Aim the control at the code path, not the plausible path — that sentence is in the round close + because F nearly filed a false defect over it. + +### 40.2 — A's D1–D4, CLOSED OR RE-FILED WITH NUMBERS *(Lane A)* +The carried list has ridden three rounds. This round each item either closes with a measurement or +gets formally re-filed with a number and a reason it can wait. No third option, no silent carry. +Goldens must not move; say so with selfcheck numbers as always. + +### 40.3 — THE `?r=3` BREACH, AND CLASSIC'S SELECTOR *(Lane B)* +- `?r=3` measures 307 ungated against the ≤300 street law. Gate it or shave it: either the flag + page states its own budget law (and qa asserts it), or the draws come down. Numbers either way — + and the matrix budget column is bookmark numbers (R39 carry), so re-measure, don't quote. +- `?classic=1` shows the town selector (ruling above). Zero-draw in-game; selector is UI chrome. +- Consume A's address vocabulary anywhere the map/HUD still says nothing where it could say a + street name — you built the fog; finish the signage on it. + +### 40.4 — THE ARCADE'S POSTS *(Lane E, with C consulted)* +Two rows of awning posts 1.00 m apart down a 5.00 m lane. Design the posts WITH the roof as one +kit (the R39 close's instruction): re-measure the lane, one kit, placement rule stated, before/ +after shot pair. If the fix is a placement-rule change and not an asset change, say so and E hands +it to whoever owns the rule with the measurement attached. + +### 40.5 — THE DOOR POINTS AND THE FOOTPATH *(Lane D — verification-first)* +R39 measured **0 door points on a footpath across the whole corpus** (0/493, 0/72, 0/139, 0/30) — +peds ducking into the back fence since R8 — and B's two-character heading fix landed in the same +round. What this round needs is the truth of TODAY'S tree: +1. Measure the door-point-on-footpath rate corpus-wide now. +2. If B's fix covered it: close with the numbers, done. +3. If not: fix the door-point derivation (D owns where peds duck in), same gate — rate ≥95% on all + four measured towns, and the ped visibly enters through the front on a shot. +No new mechanics; this is making the R8-era claim true. + +### 40.6 — THE PLAYTEST HARNESS *(Lane F — the keystone)* +John's next session with this game is a bug-hunt playthrough. Build the thing that makes it count: +- **One key (F8) drops a note**: captures `{pos, mode, shopId+name if inside, street/locality via + A's layer, seed, town, clock seg, flags, fps, draws}` + a screenshot to downloads + a typed + one-liner (small overlay input, Esc cancels). Zero cost when unused; classic-gated by + construction like everything else. +- Notes persist under the delta law (bounded, export/import, corrupt-reject — the fog's pattern) + and **export as one JSON** John can paste back to the lanes as tickets. +- **A `?bugtour=1` mode**: strings the existing bookmarks into a guided walk (N key = next stop) + covering: spawn → street day → shop enter/buy → dig → op-shop bin (unarmed) → gig night → tram → + rain → night → map/fog → second town via selector. The point: John's session covers every system + without him needing a checklist. +- Smokes: harness off = byte-identical boot; on = note round-trips (drop → export → validate + schema); screenshot lands; qa stays green. +- Close the round: budgets re-stated (street ≤300, interior ≤350 with today's margins), tour shots + for anything visual this round touched, then STOP — no tag until John's sesh rules on the parked + three. + +## Laws + +Everything standing: zero draws for information design · pathspec-atomic commits · no pushes/tags — +Fable pushes at close · every gate ships its control demonstrated · measure the thing, not the note +about the thing · fresh browser contexts · human-sized line on humanoid shots. + +## Order + +1. **Parallel: A (40.2) · B (40.3) · D (40.5) · E (40.1, then 40.4).** +2. **Then F (40.6) last, consuming A's layer for the note metadata.** + +## Parked for John's sesh (unchanged, not blockers) + +Op-shop bin contents · fog default-on vs mode · v9 third layer (the unmarked door) · the audio +listen pass — all become tickets from the F8 harness the moment he plays.