PROCITY/docs/LANES/ROUND20_INSTRUCTIONS.md
2026-07-16 18:14:53 +10:00

7.5 KiB
Raw Blame History

PROCITY — Round 20 lane instructions (from Fable, integrator)

Date: 2026-07-16 · v4.0-alpha SHIPPED (tag on origin, ddd1e68). The alpha close was textbook: A's junction-protected DouglasPeucker + bridge/cull took Katoomba from 105 components → 1 (100% street-metres connected, 0 silently-stranded shops — every drop counted), D re-measured with the R18 harness and confirmed the ruling landed clean (near-crowd on fragments: ~10% → 0%), F landed B's BIG_CITY one-liner early exactly as ordered (280k → 12k tris in play) and gated the close, B shipped the town selector with zero shell seam (hud.js owns it end-to-end) plus the corner-strip spot-check, C re-soaked 19/19 doors, E stayed cleanly on-call. The money shot is the epoch thesis made real: Katoomba's actual main street — asphalt, zebra crossing, walking crowd, gig posters, PROCITY's look on real bones. All five real-town goldens are pinned.

Round 20 is v4.0-beta: THE FIVE TOWNS — the two honest alpha findings become the beta's headline (density), the tram gets its ruling, and every real town is proven end-to-end. Tag v4.0-beta at close.

The two filed findings that shape this round

  1. Poster density scales with edges, not shops (A's R19 finding + F's one open budget edge): real Katoomba emits 438 posters (~14 on synthetic), which reads busy and drives the one matrix breach — venue_night at 200,965 tris (+0.5% over the 200k soft ceiling). In-play views are fine (121k); this is the stress view.
  2. Real towns are sparse (F's density note): 19 secondhand shops spread across a whole real town ⇒ a real street with life on it, not a retail strip. The vision says "walk the actual main street" — main streets have bakeries, cafes, chemists, clothes shops. We fetch only the thriftgod heritage classes.

The ledger

  1. Poster cap (A). Cap spine posters per real town — seeded subsample of the pole run, scaled by shop count not edge count (you own the number; ~23× the synthetic feel is the target, not 438). Real-town goldens re-pin (amendment law, one commit); synthetic + gig frozen. This closes F's venue_night edge — tell F to re-measure.
  2. THE DENSITY WIDENING (the beta headline — C rules, E fetches, A absorbs). Fable's ruling (John veto in Standing): real towns fetch general retail, not just secondhand — the main street should hold its real bakery, cafe, chemist, newsagent, clothes shops. Mechanics:
    • C publishes FIRST: the OSM-class → registry-archetype mapping table (e.g. cafe/bakery → milkbar, pharmacy/newsagent/clothes → retail/opshop flavors — C owns which existing archetype each class wears; no new archetypes this round, the mapping is the deliverable; your R18 proof says unknowns degrade safely anyway). Publish in LANE_C_PUB (v4-beta marker).
    • E re-fetches with the widened shop=* class list (same bbox, raw-cached, one more Overpass pass per town under the standing authorization), maps per C's table, re-emits the five caches (v2, deterministic) + web/assets/towns/index.json (key, town, state, shop count, roads flag) so B's selector stops hardcoding REAL_TOWNS.
    • A absorbs the density: five towns re-run at 36× shop count — seating capacity, overflow accounting (norm.dropped stays honest), venue placement still lands, goldens re-pin once at the end. If a town's real density overwhelms an edge, widen capacity or split runs — your R18 overflow fence, now load-tested.
  3. The tram ruling (B). Alpha left the tram on an arbitrary longest-chain (21% of mains). Beta ruling: route by shop adjacency — pick the main chain whose edges front the most shops (the actual high street; on synthetic towns this must resolve to the current spine so the goldens/feel don't move). If the shop-adjacent chain reads wrong on any real town, fence the tram per-town instead (the edges > 200 signal you left ready) and say which towns run it.
  4. Ground polish at real intersections (B). The R19 spot-check accepted overlap-fill; now the finer pass: acute-angle junctions and z-fighting at the 58 degree-4 intersections. Fix what's cheap, file what's structural (A's lot geometry) with measurements.
  5. Selector polish (B + F). Derive towns from E's index.json (drop the hardcode); F rules the gating (always-on HUD vs ?dbg) at close — F's call, one line either way.
  6. Interiors across the five (C). After E's widened caches land: sampled door-soak per town (the R18/R19 harness — every town, sampled doors at the new density, all types resolve, no carve fails, budgets). One table, five rows.
  7. Citizens at density (D). Re-run the R18 audit on the densest post-widening town: patronage at 36× targets, chunk rosters, determinism, identity — and the gig crowd on all five towns' venues (the district gate covers placement; you cover behaviour). Cheap by design — your scaffolds exist. File anything that leaks with measurements.
  8. The beta gate (F, last). Full five-town matrix on real roads (boot/determinism/budget/ district/noassets/roads per town), the venue_night re-measure post-poster-cap (the +965 edge must close), classic + default gates frozen as ever, selector gating ruling, beta money shot (the densest real main street at golden hour — the retail strip reading), docs (README beta paragraph, notes §20), tag v4.0-beta, push (standing authorization).

Laws

Charter (V4_REAL_MAP.md) unchanged. Golden discipline this round: real-town goldens re-pin twice at most (A's poster cap; A's density absorb — batch them if the timing allows), each under the amendment law; synthetic 0x3fa36874, gig 0xb1d48ea1, fixtures — frozen. E's caches stay deterministic (same raw → same cache); the widened fetch is a NEW raw snapshot, committed like the first. Budgets unchanged and now measured at real density — if the widened towns bust them in play (not just stress views), that's a Fable scope call, say so loudly.

Order

C's mapping table first (half-day rule — E builds to it), A's poster cap in parallel (independent). Then E (fetch + re-emit + index), then A absorbs, then B / C / D verify at density (B's tram + ground items are independent of density — start anytime). F last. Handshakes: C→E the table; E→A "caches re-emitted"; A→all "densities absorbed, goldens pinned"; B→F tram verdict + selector; C/D→F density verdicts.

Standing

  • John — the density widening is APPROVED (kickoff, 2026-07-16), with one directive: SUBTLE. John: "subtle changes are great." Interpretation for C + E: general retail is texture, not takeover — the secondhand shops stay the heroes of the town (they're the game). Practically: keep the widened class list tasteful (the everyday main-street staples, not every OSM shop=* value); if a real town's retail would drown the secondhand strip visually, E may seed-subsample the texture classes (count it, like every drop). The player should notice the town feels more alive, not that the game changed. FYI standing: tram routes by shop adjacency (B may fence per-town); the selector ships from an index; poster density gets capped.
  • v4.0 preview (next round, do not start): the curated town pack (~1525 towns through E's pipeline at scale) · the release tour on real streets · docs freeze · the v4.0 tag.
  • Backlog: instrument LOD · tram tri diet · audioEmitter · flag retirement · awning ripple · editor · multiplayer.