PROCITY/docs/LANES/ROUND17_INSTRUCTIONS.md
m3ultra b6404ff7a2 Fable: R17 kickoff rulings — v4 = THE REAL MAP (John), Overpass fetch authorized
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 14:05:50 +10:00

136 lines
9.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 17 lane instructions (from Fable, integrator)
Date: 2026-07-16 · **v3.1 SHIPPED** — THE FLIP is live on origin (`9277238`, tag `v3.1`). The
default boot is the full town: gigs + weather + winmap + tram, the seated drummer, town-wide
pools, `?classic=1` as the frozen covenant (`0x3fa36874`), default pinned to gig golden
`0xb1d48ea1`. Default-boot budgets have huge margin (worst street view 185 draws / 131k tris).
**R16 review — two lanes overrode the brief with evidence, and both were right.** D proved my
prescribed `_rotWithHips` mangles these rigs (bind-pose Hips mismatch — the exact failure
`_rotOnly`'s comment documents) and shipped the honest alternative (opt-in seated foot-replant,
byte-identical proof for every existing consumer). A proved the corner-poster "nudge" was
geometrically impossible (0/187 slides recover clearance — the crossing edge is parallel to the
facade) and fixed the root cause in `pickVenues` instead (0/851 posters below the floor across
400 seeds). This is the standard: **the brief is a hypothesis; the measurement wins.** B absorbed
the order inversion correctly (explicit all-flags URLs as the stand-in default), E's clip work was
exemplary (mesh-stripped, licence-zoned, 195/195 bind), C's backline handoff matched D's pose to
the millimetre. v3.1 was the cleanest epoch close yet.
Round 17 is **v3.2: THE TAIL + THE SCOUT** — drain the deferred-polish ledger (each item small,
each named for rounds), and run bounded groundwork for the next epoch so John can charter v4 on
evidence instead of promises. Tag **`v3.2`** at close.
## Where v4 stands (Fable's assessment — John picks, see Standing)
The V2_IDEAS parking lot has three surviving epoch-scale candidates (dig/real-stock ALREADY
SHIPPED in v2 — the README flags table, not the round ledgers, is the source of truth for what's
live): **the real map** (thriftgod `build_city()` route — Overpass → ~2,918 real AU shops → real
geography through the same CityPlan contract), **the in-game editor** (seeded-everything +
override tables), and **multiplayer presence**. My recommendation is **THE REAL MAP**: it's the
most PROCITY-native (the generator eating real geography), it has a proven reference
implementation and a proven consumer (`?plansrc=osm` + three fixtures incl. A's silverton), and it
composes with everything shipped — venues, citizens, interiors, and the dig all hang off the plan
contract and never change. R17 scouts it with real data (A+E below); the full charter is R18,
after John sees a real town boot.
## The ledger
1. **Drummer pelvic-lean pass (D — the R16 honest limit).** The upright bent-leg sit reads stiff
from side/overhead angles. A manual pelvic-lean on top of the played clip (a small constant
Spine/Hips lean applied post-mix for seated figs only, or a hand-keyed additive — D's call).
Same byte-identical discipline: seated-only path, standing untouched.
2. **Bench-sit loiter (D — the carried R16 stretch).** Same `sit.glb`, the sim loiter hook has
waited since v1: street peds occasionally sit at benches/verandah steps (seeded choice, seeded
duration, the seated re-plant + `procitySeated` tag already exist). Budget/determinism stated;
classic boot untouched (clip fetch is already `!CLASSIC`-gated).
3. **Backline render confirmation (C — close the R16 pending line).** C's verify of D's wired GLB
at `backline[0]` was "pending D's R16 commit"; D landed. One render pass per archetype
(pub/band_room/rsl), confirm no interpenetration at the measured clearances, one line in your
notes. The handshake closes.
4. **`publish.py --verify` false drift (E).** `sit.glb` (like `vintage-cash-register.glb`) is
non-`procity_`-prefixed, so the drift filter reports it "not live" when it IS live. Teach the
verifier the published-name list instead of the prefix heuristic — it bites every future clip.
5. **Wind sway (B — parked since R7; ship it or kill it).** The one missing weather element now
that weather is default-on. Vertex-shader sway on trees/awnings, weather-driven (calm → rain
gusts). It touches shared materials — the reason it's been parked; coordinate the material
seam with C/E only if actually needed (trees/awnings are B-built street geometry — verify
first, it may be entirely yours). `?classic=1` must stay byte-identical (weather is off there);
`?weather=0` sways nothing. If a real cross-lane material conflict surfaces, write it up and
KILL the item permanently instead — either way it leaves the backlog this round.
6. **The real-map scout (A + E — bounded, data-first, NO new game systems).**
- **E**: port thriftgod's `build_city()` Overpass route into `pipeline/build_towns.py`
produce **35 real AU town caches** (`city_source.json`-shaped; Katoomba-real should be one,
for the fixture comparison) with the dedupe/suburb/parody-name/seeded-hours pipeline.
Committed as data under `web/assets/towns/` (or A's preferred home). **Provenance: OSM is
ODbL — attribution ships with the data** (a `SOURCES.md` + an in-repo notice; you own the
licence table). Overpass fetch is outward-facing network — John OK'd the scout (Standing),
cache aggressively, hit the API once per town.
- **A**: define/pin the cache contract (E builds to it), feed the real caches through
`plan_osm` — real towns are messier than fixtures (dead ends, no spine, odd densities);
harden until all 35 boot with valid plans + district placement. Pin a golden per real town;
add them to the sweep. **Scope fence: no new plan features** — the scout proves the existing
contract eats real data, nothing more.
7. **Town-matrix smoke (F).** The gate side of the scout: run the core smokes (boot, determinism,
budgets, district placement, `?noassets`) across the full town matrix — synthetic hero seeds +
3 fixtures + E's real caches. One table in your notes: town × gate. This is the evidence John
charters v4 on.
Parked still (v3.3+/v4 backlog): instrument `_lo` LOD · tram_stop close-ped tri diet ·
`audioEmitter` · flag retirement (classic keeps soaking) · the editor · multiplayer presence.
## Lane A — the cache contract + real towns through the plan (ledger #6)
Publish the contract FIRST (half-day rule — E builds the pipeline against it; you own what
`plan_osm` accepts). Then harden against E's real caches as they land, pin per-town goldens,
extend the sweep. Report the ugliest real-geometry failure you had to absorb — that list is the
v4 charter's risk section.
## Lane B — wind sway ships or dies (ledger #5)
Weather-driven vertex sway, classic/weather-off byte-identical, budget stated (it's a shader —
expect ~0 draws). If shared-material reality kills it, the kill write-up is a full deliverable —
name the exact conflict so it never haunts the backlog again.
## Lane C — close the backline handshake (ledger #3)
One render pass, three archetypes, one note line. Then on-call (A may want interior sanity checks
on real-town shop types — your registry fallbacks should already cover unknown types; confirm if
asked).
## Lane D — the drummer's dignity + the bench (ledger #1, #2)
Pelvic-lean first (small, contained), bench-sit second. Both ride existing seams (`sit.glb`,
seated re-plant, loiter hook, `procitySeated`). Byte-identical proofs as R16 — the parallel-path
discipline is now your signature; keep it.
## Lane E — the town pipeline + the verify fix (ledger #4, #6)
The scout pipeline is the round's biggest single item — data discipline over cleverness: cache the
Overpass responses raw (re-runs must not re-fetch), ODbL attribution in-repo, parody names through
the existing generator, provenance table amended (v3.2 marker). The verify fix is a warm-up.
## Lane F — the matrix + the close (ledger #7)
1. Town-matrix smoke across synthetic + fixtures + real caches (after A/E land).
2. Round close: `qa.sh --strict --soak` green on the default boot, bookmark spot-check (B's sway
is in old frames now), docs (README flags table if `?weather` semantics grew a sway note,
LANE_F_NOTES §17), tag **`v3.2`**, push main + tag (standing authorization).
## Order
**A publishes the cache contract first**; E's pipeline + B/C/D tail items run in parallel (all
disjoint); A hardens as E's caches land; **F last** (matrix needs A+E; close needs everyone).
Handshakes: A→E the contract; E→A each cache as it lands; D→C n/a this round; B→F "sway shipped"
or "sway killed"; A+E→F "matrix inputs ready".
## Standing
- **John — both items RESOLVED at kickoff (2026-07-16):**
1. **v4 headline — DECIDED: THE REAL MAP.** John chose it at kickoff. R17's scout is therefore
not speculative — it's the v4.0 groundwork; the full charter lands with the R18 instructions.
2. **Overpass fetch — AUTHORIZED.** John OK'd the real-map scout, which inherently includes E's
handful of public Overpass API requests (once per town, raw responses cached in-repo so
re-runs never re-fetch). E: proceed; keep the ODbL attribution discipline.
- **v3.3+/v4 backlog:** instrument LOD · tram tri diet · audioEmitter · flag retirement · the two
unpicked v4 candidates.