overpass-topup.mjs — maintainer-time repo tool, six hard laws: - never imported by bot/src or web/src (TP1 gate); Worker reads only the committed JSON - exactly ONE request per run: both live paths (Overpass POST, Nominatim GET) share a single requestJson helper — one fetch( call site (TP7) - identifying User-Agent araharah-gazetteer-topup/1.0 mandatory (missing UA = HTTP 406) - busy/saturated/unusable response -> 'Overpass instance busy — retry later', exit 0 (TP4) - output is a PROPOSAL only; source never names the curated file, so it cannot write it (TP6) - --source=overpass|nominatim|fixture (--fixture implies fixture), --endpoint/OVERPASS_ENDPOINT override, bbox-bounded single-family query pinned verbatim (3.05,101.55,3.25,101.80) (TP3) - --fixture selects the offline path by itself (a fixture flag silently hitting the live network would be a trap — fixed during GREEN) overpass-response.json — committed real-shape Overpass response (6 KL elements: nodes with lat/lon, ways/relation with center) so the test is deterministic. json-to-sqlite.mjs — backend #2's dataset format reachable today (D-05): - reads the same committed kl-gazetteer.json, emits kl-gazetteer.sqlite via node:sqlite (zero added deps) with the SAME id set (CV1), plus the ODbL notice embedded in a metadata table + NOTICE sidecar (ODbL s4.4, T-04-20) - deterministic: rows in dataset order, no timestamps
89 lines
2.2 KiB
JSON
89 lines
2.2 KiB
JSON
{
|
|
"version": 0.6,
|
|
"generator": "Overpass API 0.7.62.7",
|
|
"osm3s": {
|
|
"timestamp_osm_base": "2026-10-23T14:55:20Z",
|
|
"copyright": "The data included in this document is from www.openstreetmap.org. The data is made available under ODbL."
|
|
},
|
|
"elements": [
|
|
{
|
|
"type": "way",
|
|
"id": 23034336,
|
|
"center": { "lat": 3.1408, "lon": 101.7047 },
|
|
"tags": {
|
|
"name": "Merdeka 118",
|
|
"name:en": "Merdeka 118",
|
|
"building": "yes",
|
|
"building:levels": "118",
|
|
"height": "678.9",
|
|
"tourism": "attraction",
|
|
"wikidata": "Q18166176"
|
|
}
|
|
},
|
|
{
|
|
"type": "way",
|
|
"id": 12345678,
|
|
"center": { "lat": 3.1489, "lon": 101.6936 },
|
|
"tags": {
|
|
"name": "National Monument",
|
|
"name:en": "National Monument",
|
|
"alt_name": "Tugu Negara",
|
|
"historic": "memorial",
|
|
"tourism": "attraction"
|
|
}
|
|
},
|
|
{
|
|
"type": "node",
|
|
"id": 87654321,
|
|
"lat": 3.1484,
|
|
"lon": 101.6953,
|
|
"tags": {
|
|
"name": "Masjid Jamek",
|
|
"name:en": "Jamek Mosque",
|
|
"amenity": "place_of_worship",
|
|
"religion": "muslim",
|
|
"tourism": "attraction",
|
|
"wikidata": "Q2713345"
|
|
}
|
|
},
|
|
{
|
|
"type": "way",
|
|
"id": 34567123,
|
|
"center": { "lat": 3.1528, "lon": 101.7038 },
|
|
"tags": {
|
|
"name": "Kuala Lumpur Tower",
|
|
"name:en": "Kuala Lumpur Tower",
|
|
"short_name": "KL Tower",
|
|
"man_made": "tower",
|
|
"tourism": "attraction",
|
|
"wikidata": "Q265917"
|
|
}
|
|
},
|
|
{
|
|
"type": "way",
|
|
"id": 45678123,
|
|
"center": { "lat": 3.1454, "lon": 101.6953 },
|
|
"tags": {
|
|
"name": "Central Market",
|
|
"name:en": "Central Market",
|
|
"alt_name": "Pasar Seni",
|
|
"building": "retail",
|
|
"tourism": "attraction",
|
|
"wikidata": "Q5061407"
|
|
}
|
|
},
|
|
{
|
|
"type": "relation",
|
|
"id": 56781234,
|
|
"center": { "lat": 3.1436, "lon": 101.6975 },
|
|
"tags": {
|
|
"name": "Petaling Street",
|
|
"name:en": "Petaling Street",
|
|
"highway": "pedestrian",
|
|
"tourism": "attraction",
|
|
"wikidata": "Q1985815"
|
|
}
|
|
}
|
|
]
|
|
}
|