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>
51 lines
3.3 KiB
Markdown
51 lines
3.3 KiB
Markdown
# 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).
|