3.4 KiB
PROCITY v4 — THE REAL MAP (epoch charter)
Fable, 2026-07-16. John's pick (R17 kickoff). Grounded in the R17 scout: 5 real AU town caches
boot through the full gate matrix — deterministic, in-budget, districts place, ?noassets silent.
The existing CityPlan contract eats real shop data. What it does NOT yet eat is real geography:
plan_osm marches real shops onto synthesized parallel avenues. v4 closes that gap.
The vision
Walk the actual main street of a real Australian town. Katoomba's real high street with its real secondhand shops in their real order, PROCITY's stylized look (this is not photorealism — the town is real, the rendering is PROCITY), the gig district, the citizens, the dig, the weather — everything shipped, on real bones. The default boot stays the synthetic town; real towns are a destination you pick.
The stages
- v4.0-alpha (R18): REAL ROADS, one town. Real OSM street geometry (simplified to the
CityPlan edge schema — straight segments, real topology) for
katoomba_real, shops seated along their real streets, everything downstream unchanged by contract. Opt-in via the town cache (schema v2 carriesroads[]; caches without roads keep the marched fallback). - v4.0-beta: the district on real bones, five towns. All scouted towns get roads; venues, posters, queue, tram(?), citizens proven on irregular graphs; the town selector (B) so a player can pick a town without URL surgery.
- v4.0: the town pack + the tour. A curated pack (~15–25 towns, E's bbox discipline), the release tour shot on real streets, docs, tag. Default boot still synthetic; flag-flip for real towns is a v4.x decision AFTER soak (the v3 pattern, proven twice).
The laws (inherited, plus two new)
Classic covenant untouched (?classic=1 byte-identical forever) · default boot untouched through
alpha/beta (real towns opt-in) · determinism from (town, citySeed) · budgets unchanged (≤300/200k
street, ≤350 interior) · asset law (cache fetch fail-soft; ?noassets falls back to fixtures) ·
amendment law for goldens · atomic pathspec commits · measurement over brief.
New — the bbox law (A's R17 risk #1): a town cache is ONE compact town (span ≤ 5 km,
validator-enforced); town selection discipline lives in E's pipeline, because the generator
cannot rescue an over-broad query. New — the ODbL law: every cache ships
license/attribution + SOURCES.md; raw Overpass responses are committed so re-runs never
re-fetch; only public POI/way data, never private-individual data.
The risk list (from the R17 scout, kept current)
- Mega-strip / over-broad bbox — mitigated by the bbox law; watch per-town.
- Sparse towns (< 6 shops) — curation floor;
MIN_TOWN_SHOPSenforced. - NEW, the alpha's real risk: irregular geometry downstream. B's chunks/buildings/furniture and D's sim have only ever seen A's synthetic graphs and the marched-avenue osm towns. Non-grid intersections, acute angles, short edges, dead ends — the alpha exists to surface exactly these. Every failure gets written down, fixed or fenced.
- Road simplification fidelity — too coarse reads wrong, too fine costs edges; A owns the knob.
- Settled non-risks: facade clearance on osm towns (R17), interior types (C proved 18 real
shop=values degrade cleanly), plan-side determinism (E's pipeline is byte-identical re-run).