araharah-executor
|
e34c2296f5
|
feat(06-01): typed-array A* + turn classifier + step derivation + public exports (GREEN)
- routeAstar: allocation-free hot loop — binary heap of node indices over
preallocated typed arrays (grown by doubling), typed-array g/closed/
came-from, on-demand cached haversine/maxSpeed heuristic (admissible +
consistent); oneway-reverse edges never relaxed; unreachable -> null
- A1 proves A* == brute-force Dijkstra on ALL 625 mini-graph pairs
- classifyTurn: the one turn authority (compass convention — negative
delta = left; plan's (0,40)->slight-left case contradicted its own
(0,-90)/(0,90) pins, documented deviation); TURN_* constants exported
for plan 07's cron projection
- deriveSteps: splits at non-straight bearings or name changes; steps
carry kind/name/distanceM + polyline6; depart-first, arrive-last
- index.ts: engine-A named exports + ladder note updated — backend #2 is
now 'engine-a' (D-01 supersedes the wasm-router note; Valhalla port
infeasible + geojson-path-finder rejected, engine B = post-v1
evolution, D-02); createHttpRoutingSource deliberately absent (plan 04)
|
2026-10-24 12:14:37 +08:00 |
|
araharah-executor
|
3e0c5e3eb4
|
feat(05-01): geo math + fixture RoutingSource backend + public API
- geo.ts: haversineM + deriveCumulativeDistanceM (D-07 snapped-progress field)
- fixture-source.ts: backend #1 — ORIGIN_TOLERANCE_M=200 matching law,
honest-null pending semantics (D-03), defensive pair skip at index build,
lazy memoized index (LAW 1), static JSON import (LAW 2), zero
logging/storage/network (LAW 3, D-12)
- index.ts: named-export public surface, subpath-with-extension import law
- loader proven in three environments (bare Node 24, esbuild, Vite-family)
|
2026-10-24 05:03:07 +08:00 |
|