Extend build_towns.py: bounded way[highway](bbox) out geom per town -> raw cached in-repo -> roads[]
in A's v2 contract ({id,kind,pts:[[lat,lon]]}, kind=raw OSM highway class). katoomba_real is now
schema v2 with 484 real streets (Bathurst Rd, Cliff Drive, ...). Fidelity cut (charter risk #4, flagged
to A): fetch every ROAD_KIND tier -> raw; EMIT the town street tier only, excluding service/track/
footway/path/steps/cycleway (1461 of 2506 Katoomba ways = bushwalking tracks/sidewalks/stairs/driveways).
A's lift builds a real town from it (verified): 484 streets -> 872 nodes/799 edges (main 232 side 531
arcade 36) -> 12 blocks, 20 lots, 3 venues (pub/band_room/rsl), 12 gigs. pickVenues lands venues on the
real graph (ledger #2 met).
FINDING for A (alpha failure-list, charter risk #3): on the real graph, spine posters overhang crossing
carriageways -- selfcheck kerb-clearance fails on 4 seeds (-1.6 to -2.5m; e.g. seed 20261990 poster 50 vs
edge 58 = -2.42m). Same class as A's R15/R16 corner-poster fix, now on real cross-street geometry. Owner:
A (pickVenues/POSTER_CLEAR on the real graph, the 'A again' harden step) -- my roads data is VALID (cache
validates; failures are plan-level poster placement). Golden settles after A's fix (pre-fix 0x6014a8e6).
ODbL: raw roads committed, SOURCES.md updated.
-> Lane A: katoomba roads live; harden the lift + resolve the poster finding + re-pin the golden.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.3 KiB
Town-cache data sources & licence (web/assets/towns/)
Lane E owns this file (ROUND17 ledger #6). Every real-town cache here is derived from
OpenStreetMap data and ships under OSM's licence. This notice + the license/attribution
fields on every <key>.json are the attribution that travels with the data.
Licence — OpenStreetMap, ODbL 1.0
© OpenStreetMap contributors. Data available under the Open Database License (ODbL) 1.0. https://www.openstreetmap.org/copyright · https://opendatacommons.org/licenses/odbl/1-0/
The caches are a produced work derived from OSM via the Overpass API (overpass-api.de), filtered
to on-theme shop=* points, deduped, suburb-filled, and type-mapped by pipeline/build_towns.py.
Attribution ships in-repo (this file) and in every cache ("license":"ODbL 1.0",
"attribution":"© OpenStreetMap contributors"). If a rendered/public build surfaces this data, keep
the "© OpenStreetMap contributors (ODbL)" credit visible.
Provenance table
| cache | town | source | licence | fetched | shops | raw response |
|---|---|---|---|---|---|---|
katoomba_real.json |
Katoomba, NSW | OSM Overpass (bounded) | ODbL 1.0 | 2026-07-16 | 20 | _raw/katoomba_real.overpass.json |
newtown_real.json |
Newtown, Sydney NSW | OSM Overpass (bounded) | ODbL 1.0 | 2026-07-16 | 18 | _raw/newtown_real.overpass.json |
fremantle_real.json |
Fremantle, WA | OSM Overpass (bounded) | ODbL 1.0 | 2026-07-16 | 21 | _raw/fremantle_real.overpass.json |
bendigo_real.json |
Bendigo, VIC | OSM Overpass (bounded) | ODbL 1.0 | 2026-07-16 | 9 | _raw/bendigo_real.overpass.json |
castlemaine_real.json |
Castlemaine, VIC | OSM Overpass (bounded) | ODbL 1.0 | 2026-07-16 | 6 | _raw/castlemaine_real.overpass.json |
Raw responses (_raw/)
The raw Overpass JSON is cached in-repo (wrapped with fetchedAt, endpoint, query, bbox):
_raw/<key>.overpass.json (shops) and _raw/<key>.roads.overpass.json (OSM highway ways, schema v2).
Re-runs reuse the raw cache and never re-hit Overpass — the fetch is outward-facing network
(John-authorized scout, once per town). --refetch forces a deliberate re-fetch. selfcheck.js reads
only top-level *.json, so _raw/ is never loaded as a cache.
Roads — schema v2 (ROUND18, v4.0-alpha REAL ROADS)
A v2 cache carries roads[] — the town's real OSM street geometry (highway=* ways), same ODbL licence
and attribution as the shops. Fidelity cut (charter risk #4): the raw fetch grabs every ROAD_KIND
tier, but the emitted roads[] is the town street graph only — drivable roads + pedestrian malls;
service/track/footway/path/steps/cycleway are excluded (in Katoomba, 1461 of 2506 ways —
bushwalking tracks, sidewalks, stairs, driveways). The excluded tier stays in the raw response if a
tier is wanted back. katoomba_real is v2 (the alpha); the other towns' roads land as data-only.
Names — parody vs factual
Big trademarked charity/franchise chains are parodied in build_towns.py (Salvos→Slave-ohs,
Vinnies→Sinnies, Anglicare→Tanglecare, Cash Converters→Cashtheists, …) for the game's comic tone.
Independent shops keep their real OSM name — factual, publicly-mapped POI data under ODbL. No
private-individual data is carried (name/type/coordinate/suburb only).