diff --git a/docs/LANES/ROUND21_INSTRUCTIONS.md b/docs/LANES/ROUND21_INSTRUCTIONS.md new file mode 100644 index 0000000..19d2750 --- /dev/null +++ b/docs/LANES/ROUND21_INSTRUCTIONS.md @@ -0,0 +1,91 @@ +# PROCITY — Round 21 lane instructions (from Fable, integrator) + +Date: 2026-07-16 · **R20 verdict: the density round delivered — but the beta is NOT tagged.** +What landed (all verified in notes): **A** capped posters 438→31 (+ a new `REAL_TOWN_GIG_GOLDENS` +guard) and absorbed the 3–6× densities (292 shops across five towns, drops down to 5.5% and now +counted BY CAUSE, pub facade bias extended, goldens re-pinned once); **C** published the +class→archetype mapping; **E** widened the fetch under John's SUBTLE directive — enforced by +construction (heroes never subsampled, texture capped at 3× heroes, deterministic seed-subsample, +every drop counted); **B** ruled the tram by shop adjacency (the alpha tram fronted 0 shops on 4 +of 5 real towns — "it really was a highway bus"), fenced katoomba/fremantle/bendigo per the +fallback, and found+fixed the phantom-stop bug (Newtown: 149 stops → 16); **D** delivered the +density A/B — heroes kept footfall (17→19 visits) while the street got 3.8× busier — and published +a model self-correction (the sparsity null% was an artefact of measuring at 21:00 from the one +isolated venue; the record is corrected in place). Quality is at series-best. + +**Open (why there's no tag):** F never ran (gate + tag), C's density door-soak (R20 ledger #6) +wasn't done, B never consumed E's `index.json` (`hud.js:11` still hardcodes `REAL_TOWNS`), and D +filed the **main-street relocation finding**: katoomba's pub sits 1,000 m from the retail cluster +(1 shop within 160 m vs the RSL's 13) — a gig with no passing crowd. Round 21 closes all of it. +Tag **`v4.0-beta`** at close. + +## The ledger + +1. **Venue cluster bias (A — D's relocation finding).** At real-town density, venue candidates + should prefer retail-cluster adjacency: bias `pickVenues` toward candidates with ≥N shops + within ~160 m (you own N and the weighting; keep the kind placement flavors — pub corner, + band_room fringe, rsl off-spine — as biases within the cluster-adjacent set, not absolutes). + **Synthetic + fixtures must be a no-op** (goldens frozen — the synthetic town is one dense + cluster anyway); real-town goldens re-pin ONCE (base+gig, amendment law). Acceptance: no venue + in any of the five towns sits with <3 shops in its 160 m radius unless the town genuinely has + no better candidate (castlemaine's floor may — say so if it does). +2. **Selector from the index (B — the missed R20 #5).** Drop the `hud.js:11` hardcode; fetch + E's `web/assets/towns/index.json` (fail-soft: index missing → current hardcode as fallback, + zero errors). Selector shows shop counts from the index if it's cheap. Nothing else — your + tram/ground work is done and verified. +3. **Density door-soak (C — the missed R20 #6).** The five towns at their new densities, sampled + doors per town (~25/town covers every archetype incl. the texture classes' first real + appearance — milkbar/dept/stall interiors on real shops), assert valid interiors / no carve / + budgets / types resolve per your §6 table. One table, five rows. **Run AFTER A lands** (venue + relocation changes which lots are venues). +4. **Relocation verify (D).** After A: re-run the katoomba venue-adjacency numbers (the pub + should now sit in/near the cluster; your venue-win % and the "gig with no passing crowd" + observation should improve). One before/after line per town. Your GIG_RANGE chunk-blindness + finding stays filed for v4.x (agreed — not a mid-beta hot-path change). +5. **Town-pack pull-forward (E — NON-GATING for the tag).** Begin v4.0's curated pack: propose + the candidate list (~15–25 AU towns with real secondhand density — you have the data instincts + from the first five), fetch + emit as **data-only commits** (same discipline: bounded bbox, + raw snapshots, C's mapping, SUBTLE guardrails, index.json grows). A absorbs + pins in R22 — + do NOT block the beta tag on any of it. If Overpass rate-limits at pack scale, batch politely + (sleep between towns) — the standing auth covers the fetches, courtesy covers the cadence. +6. **The beta gate (F, last).** + a. Five-town matrix at density (boot/determinism/budget/district/noassets/roads), against A's + R21 re-pinned goldens. + b. **`venue_night` re-measure** — A's poster cap must close your +965-tri edge; record the + new number. + c. Tram in the matrix: newtown + castlemaine RUN (stops sane), the three fenced towns show + no tram and no errors (B's fence signal). + d. **Selector gating ruling** (your R19 open call): always-in-HUD vs `?dbg`-gated — rule it, + one line, done. + e. Beta money shot: the densest real main street at golden hour (fremantle or katoomba + post-widening — continuous shopfronts, crowd, heroes among texture), into + `docs/shots/v4_beta/`. + f. Docs (README beta paragraph, LANE_F_NOTES §20/§21 incl. the honest why-R20-had-no-tag + record), tag **`v4.0-beta`**, push (standing authorization). + +## Laws + +Charter unchanged. One golden move this round (A's #1, batched base+gig, once). Synthetic +`0x3fa36874`, gig `0xb1d48ea1`, fixtures, classic — frozen. E's pack commits are data-only and +touch no golden until A absorbs them (R22). + +## THE EXACT RUN ORDER (John asked) + +1. **Start together: A + B + E.** (A: venue bias — the only golden-moving item, the round's + spine. B: selector-from-index — independent. E: town-pack fetches — independent, non-gating.) +2. **When A commits (goldens re-pinned): start C + D.** (C: door-soak on the relocated world. + D: relocation verify. Both read A's handshake note for the new goldens.) +3. **When C + D have committed (and B is in): start F.** (E does NOT gate F — if E's pack is + still fetching, F tags without it.) + +Three waves: **[A, B, E] → [C, D] → [F].** + +## Standing + +- **John — nothing blocks this round.** FYI: Fable assigned D's relocation finding to A as a + cluster-adjacency bias (real towns only, synthetic untouched); E begins the v4.0 town pack + early as data-only commits. Both are course-corrections inside the chartered epoch. +- **v4.0 preview (R22, do not start beyond E's data):** A absorbs + pins the pack · the release + tour on real streets · docs freeze across lanes · the `v4.0` tag · then the epoch retro. +- **Backlog:** GIG_RANGE chunk-neighbour lookup (D, v4.x) · instrument LOD · tram tri diet · + audioEmitter · flag retirement · awning ripple · editor · multiplayer.