feat(05-02): pinned golden-pair corpus + OSRM-demo fetch tool + populated committed dataset (GREEN)
- routing/test/fixtures/golden-pairs.json: the hand-authored 15-pair pinned
corpus (D-02/D-12) — origins AND destinations are gazetteer landmarks,
klBbox + 100 KB gz budget + probe id + alternatives floor pinned
- routing/scripts/fetch-route-fixtures.mjs: the maintainer build tool
(overpass-topup.mjs pattern) — D-12 boundary in the header, pre-flight
public-coordinate proof against the gazetteer (1e-4 deg), mandatory
User-Agent, 1200 ms inter-request delay, one retry on network/5xx,
collect-then-write, --only=<pairId> single-pair repair merge
- routing/src/data/route-fixtures.json: 15 real OSRM-demo pairs committed
(1-3 verbatim polyline6 routes each; 8 pairs carry >= 2 alternates),
ODbL header fields preserved (T-05-06)
- loader-env L3 armed (RED commit 01b0ed6) + C6 re-pinned from the empty-seed
state to the populated corpus (05-01 documented both as 05-02 handoffs)
- npm delegates: root routing:fixtures; routing fixtures + corpus scripts
This commit is contained in:
@@ -141,9 +141,9 @@ test("C5 zero runtime dependencies — routing/package.json has no dependencies
|
||||
);
|
||||
});
|
||||
|
||||
/* ————— C6 — the committed seed's ODbL header (T-05-06) ————— */
|
||||
/* ————— C6 — the committed dataset's ODbL header (T-05-06) ————— */
|
||||
|
||||
test("C6 ODbL header present — the committed seed carries license + attribution + notice", () => {
|
||||
test("C6 ODbL header + populated corpus — the committed dataset carries license, attribution, notice, and the golden pairs", () => {
|
||||
const seed = JSON.parse(
|
||||
readFileSync(path.join(srcDir, "data", "route-fixtures.json"), "utf8"),
|
||||
);
|
||||
@@ -155,9 +155,9 @@ test("C6 ODbL header present — the committed seed carries license + attributio
|
||||
assert.ok(String(seed._notice).includes("ODbL"), "the notice must name ODbL");
|
||||
assert.equal(seed.version, 1);
|
||||
assert.ok(Array.isArray(seed.pairs), "pairs must be an array");
|
||||
assert.equal(
|
||||
seed.pairs.length,
|
||||
0,
|
||||
"the seed ships EMPTY — plan 05-02's build-time script populates it",
|
||||
assert.ok(
|
||||
seed.pairs.length >= 10 && seed.pairs.length <= 20,
|
||||
`the committed corpus carries the golden pairs (10..20) — 05-01 shipped an EMPTY seed ` +
|
||||
`explicitly so plan 05-02's build-time script could populate it; found ${seed.pairs.length}`,
|
||||
);
|
||||
});
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"_comment": "Pinned golden-pair corpus (D-02/D-12). Origins AND destinations are gazetteer landmarks (public data). RT2b proves every origin equals a gazetteer coordinate. national-museum is never a destinationId (RT4) — it is the 05-05 pending-probe carrier.",
|
||||
"klBbox": { "minLat": 2.9, "maxLat": 3.4, "minLng": 101.4, "maxLng": 102.0 },
|
||||
"fixtureGzipBudgetBytes": 102400,
|
||||
"pendingProbeDestinationId": "national-museum",
|
||||
"alternativesFloorPairs": 4,
|
||||
"pairs": [
|
||||
{ "pairId": "kl-tower-to-kl-sentral", "originId": "kl-tower", "origin": { "lat": 3.1528, "lng": 101.7038, "label": "Kuala Lumpur Tower" }, "destinationId": "kl-sentral" },
|
||||
{ "pairId": "kl-sentral-to-suria-klcc", "originId": "kl-sentral", "origin": { "lat": 3.1343, "lng": 101.6869, "label": "KL Sentral" }, "destinationId": "suria-klcc" },
|
||||
{ "pairId": "suria-klcc-to-bangsar", "originId": "suria-klcc", "origin": { "lat": 3.1578, "lng": 101.7117, "label": "Suria KLCC" }, "destinationId": "bangsar" },
|
||||
{ "pairId": "mid-valley-to-bukit-bintang", "originId": "mid-valley", "origin": { "lat": 3.118, "lng": 101.6779, "label": "Mid Valley Megamall" }, "destinationId": "bukit-bintang" },
|
||||
{ "pairId": "bukit-bintang-to-mid-valley", "originId": "bukit-bintang", "origin": { "lat": 3.1466, "lng": 101.7106, "label": "Bukit Bintang" }, "destinationId": "mid-valley" },
|
||||
{ "pairId": "pwtc-to-sunway-velocity", "originId": "pwtc", "origin": { "lat": 3.1768, "lng": 101.698, "label": "PWTC" }, "destinationId": "sunway-velocity" },
|
||||
{ "pairId": "masjid-jamek-to-lake-gardens", "originId": "masjid-jamek", "origin": { "lat": 3.1484, "lng": 101.6953, "label": "Masjid Jamek" }, "destinationId": "lake-gardens" },
|
||||
{ "pairId": "titiwangsa-to-petaling-street", "originId": "titiwangsa", "origin": { "lat": 3.1714, "lng": 101.7016, "label": "Taman Tasik Titiwangsa" }, "destinationId": "petaling-street" },
|
||||
{ "pairId": "sunway-pyramid-to-pavilion-kl", "originId": "sunway-pyramid", "origin": { "lat": 3.0726, "lng": 101.6069, "label": "Sunway Pyramid" }, "destinationId": "pavilion-kl" },
|
||||
{ "pairId": "central-market-to-merdeka-118", "originId": "central-market", "origin": { "lat": 3.1454, "lng": 101.6953, "label": "Central Market" }, "destinationId": "merdeka-118" },
|
||||
{ "pairId": "little-india-brickfields-to-aquaria-klcc", "originId": "little-india-brickfields", "origin": { "lat": 3.1306, "lng": 101.6869, "label": "Brickfields" }, "destinationId": "aquaria-klcc" },
|
||||
{ "pairId": "national-museum-to-pudu-raya", "originId": "national-museum", "origin": { "lat": 3.1378, "lng": 101.687, "label": "National Museum" }, "destinationId": "pudu-raya" },
|
||||
{ "pairId": "mid-valley-to-ioi-city-mall", "originId": "mid-valley", "origin": { "lat": 3.118, "lng": 101.6779, "label": "Mid Valley Megamall" }, "destinationId": "ioi-city-mall" },
|
||||
{ "pairId": "kl-sentral-to-sunway-pyramid", "originId": "kl-sentral", "origin": { "lat": 3.1343, "lng": 101.6869, "label": "KL Sentral" }, "destinationId": "sunway-pyramid" },
|
||||
{ "pairId": "berjaya-times-square-to-titiwangsa", "originId": "berjaya-times-square", "origin": { "lat": 3.1421, "lng": 101.7101, "label": "Berjaya Times Square" }, "destinationId": "titiwangsa" }
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user