9.1 KiB
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
- 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.
- 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 +procitySeatedtag already exist). Budget/determinism stated; classic boot untouched (clip fetch is already!CLASSIC-gated). - 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. publish.py --verifyfalse drift (E).sit.glb(likevintage-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.- 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=1must stay byte-identical (weather is off there);?weather=0sways 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. - The real-map scout (A + E — bounded, data-first, NO new game systems).
- E: port thriftgod's
build_city()Overpass route intopipeline/build_towns.py→ produce 3–5 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 underweb/assets/towns/(or A's preferred home). Provenance: OSM is ODbL — attribution ships with the data (aSOURCES.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 3–5 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.
- E: port thriftgod's
- 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)
- Town-matrix smoke across synthetic + fixtures + real caches (after A/E land).
- Round close:
qa.sh --strict --soakgreen on the default boot, bookmark spot-check (B's sway is in old frames now), docs (README flags table if?weathersemantics grew a sway note, LANE_F_NOTES §17), tagv3.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):
- 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.
- 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.