85 lines
6.1 KiB
Markdown
85 lines
6.1 KiB
Markdown
# PROCITY — Round 18 lane instructions (from Fable, integrator)
|
||
|
||
Date: 2026-07-16 · **v3.2 SHIPPED** (tag on origin, town matrix 10×5 green). R17 review, short
|
||
version: the tail is DRAINED — wind sway shipped after ten rounds parked (and the park reason
|
||
turned out to be a phantom: the tree material was B's own all along — measurement over folklore),
|
||
D's drummer leans into the kit and street peds sit on verandah steps (with a genuine finding en
|
||
route: the seated re-plant was scale-naive and had to become scale-aware for per-citizen-scaled
|
||
rigs), C closed the backline handshake AND proactively proved 18 real OSM shop types build valid
|
||
interiors, E's 5-town pipeline is deterministic and ODbL-clean, A hardened `plan_osm` against
|
||
2,828 real Canberra shops and handed the charter its risk list, F closed the last integration gap
|
||
(the shell never loaded the caches — the classic A-publishes/F-wires seam) and gated the whole
|
||
matrix. Every lane at full quality. The scout did its job: **John chartered v4 = THE REAL MAP.**
|
||
|
||
**Read the charter first: [docs/V4_REAL_MAP.md](../V4_REAL_MAP.md).** Round 18 is
|
||
**v4.0-alpha: REAL ROADS** — one town (`katoomba_real`) gets its actual street geometry. The whole
|
||
alpha exists to surface what irregular real geometry breaks downstream. Tag **`v4.0-alpha`** at
|
||
close.
|
||
|
||
## The ledger
|
||
|
||
1. **Cache schema v2 — `roads[]` (A publishes FIRST, E builds to it).** The town cache grows an
|
||
optional `roads[]` (OSM way geometry, simplified): A defines the shape (suggested: polylines of
|
||
`{lat,lon}` points + a `kind` from the OSM `highway=*` class), bumps `schema` to
|
||
`procity-town-cache/2`, extends `validateTownCache` (v1 caches stay valid — roads absent ⇒ the
|
||
marched fallback, so nothing shipped regresses).
|
||
2. **Real road graph in the plan (A — the epoch's headline lift).** `plan_osm` consumes `roads[]`:
|
||
project to the local metre frame, simplify (Douglas-Peucker or your pick — you own the fidelity
|
||
knob, charter risk #4), build the CityPlan street graph from real topology (nodes at real
|
||
intersections, straight-segment edges), classify main/side from the OSM `highway` kind + shop
|
||
density, seat each shop's lot on its nearest real edge at its real position/side. SAME CityPlan
|
||
schema out — B/C/D/F consume it unchanged by contract. Golden per the amendment law
|
||
(`katoomba_real`'s re-pins; synthetic + fixtures untouched). District placement (`pickVenues`)
|
||
must still land 2–4 venues on the real graph.
|
||
3. **Roads fetch (E).** Extend `build_towns.py`: per-town bounded `highway=*` Overpass query
|
||
(same authorization + raw-cache discipline as R17 — commit the raw response, fetch once),
|
||
emit `roads[]` per A's v2 contract. **`katoomba_real` first** (the alpha town), then the other
|
||
four as data-only commits (A hardens against them as they land; only katoomba gates the round).
|
||
4. **Irregular-geometry audit (B — charter risk #3, the alpha's real risk).** Boot
|
||
`katoomba_real` with real roads and hunt what breaks: chunk streaming over a non-grid graph,
|
||
building/lot seating at acute intersections, footpath/verge furniture cadence on short or
|
||
curved-ish edge chains, tram (its loop assumes a spine — if the real graph breaks it, fence it:
|
||
tram disabled on roads-towns is an acceptable alpha fence, written down). Fix what's yours,
|
||
file what's A's (lot geometry) or D's (sim graph) with measurements.
|
||
5. **Citizens on real bones (D).** The sim walks the street graph + chunk-streamed rosters on the
|
||
real topology: verify walkers navigate real intersections, loiter/bench-sit/patronage behave,
|
||
identity + determinism hold on `katoomba_real`. Cheap if the graph contract really is the
|
||
contract — prove it, and file what leaks with measurements.
|
||
6. **Interior spot-soak on the alpha town (C — small).** Your R17 type-fallback proof covered
|
||
types; now enter every `katoomba_real` shop in-shell (20 doors), assert valid interiors, no
|
||
carve fails, budgets. One table. Otherwise on-call.
|
||
7. **The alpha gate (F, last).** Extend the town matrix with a roads dimension (`katoomba_real`
|
||
boots real-roads: boot/determinism/budget/district/noassets-fallback green); the classic +
|
||
default-boot gates prove the alpha changed nothing outside the flagged path; a first
|
||
real-street money shot (Katoomba main street, default flags, settled) into
|
||
`docs/shots/v4_alpha/`; docs (README gets a "real towns" paragraph, LANE_F_NOTES §18); tag
|
||
**`v4.0-alpha`**, push (standing authorization).
|
||
|
||
## Laws for the round
|
||
|
||
Everything in the charter's law section. Alpha-specific: real roads ride the **cache schema**, not
|
||
a URL flag (a v2 cache with roads = real roads; v1 = marched fallback — no new flag surface);
|
||
default + classic boots are untouched by construction (they never load a town cache); budgets
|
||
measured on `katoomba_real`'s busiest real block; every irregular-geometry failure gets WRITTEN
|
||
DOWN (fixed or fenced) — the alpha's deliverable is as much the failure list as the town.
|
||
|
||
## Order
|
||
|
||
**A first** (schema v2 contract — half-day rule), **E immediately after** (katoomba roads cache;
|
||
the other towns trail). Then **A again** (the graph lift, against real data), with **B + D + C**
|
||
auditing in parallel as soon as A's roads-plan boots (A→B/D/C handshake: "katoomba_real boots with
|
||
real roads, golden pinned"). **F last.** This round has a real serial spine (A→E→A→others→F) —
|
||
expect A to be the long pole; B/D/C, if you're blocked on A, your audit prep (test scaffolding,
|
||
assertion lists) is not.
|
||
|
||
## Standing
|
||
|
||
- **John — nothing blocks this round.** FYI: E's roads fetch rides your R17 Overpass
|
||
authorization (same API, same once-per-town + raw-cache discipline). The alpha hero town is
|
||
`katoomba_real` — if you'd rather see a different town first (Newtown/Fremantle/Bendigo/
|
||
Castlemaine), say so before E starts.
|
||
- **v4.0-beta preview (next round, do not start):** all five towns on real roads · the town
|
||
selector UI (B) · districts/gigs proven per-town · tram ruling on real graphs.
|
||
- **Backlog (unchanged):** instrument LOD · tram tri diet · audioEmitter · flag retirement ·
|
||
awning-canopy ripple (B's R17 note) · editor · multiplayer presence.
|