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:
araharah-executor
2026-10-24 05:17:01 +08:00
parent 01b0ed6884
commit 4e89cff552
6 changed files with 565 additions and 8 deletions
+6 -6
View File
@@ -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}`,
);
});