diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 9f48e1b..e220077 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -276,12 +276,52 @@ Notes: ## v1.x Candidates (post-v1, not roadmap phases) -Per research: voice guidance (gated on iOS WKWebView TTS spike), live trip share via `sendLocation(live_period)`, toll vs toll-free toggle (Valhalla `use_tolls`), speed-limit display where OSM `maxspeed` exists. These hang off validated routing + guidance — plan a v1.x milestone after user validation, do not pull into the spine above. +--- + +## Milestone v1.x — Routing Engine Upgrades + Extras (post-v1) + +**Goal**: Pay the measured engineering debts of the v1 spine: routing that no longer degrades cross-metro, the routing extras the requirements name (toll, speed limits, live share, voice), the deferred battery record, and the client-side routing endgame. +**Depends on**: v1 milestone (complete 2025-10-25). +**Ordering**: engine first (user decision) — battery is cheap but follows the engine work. + +### Phase 8: ALT Landmark Preprocessing (Routing Backend v2) +**Goal**: Cross-metro routes route in-budget on the free plan: ALT (A\*, Landmarks, Triangle-inequality) preprocessing over the CSR graph upgrades engine A's worst case while staying $0 — the c2 rung of the measured ladder, executed. +**Depends on**: Phase 6 (engine A). +**Requirements**: the routing CPU class (SC3/SC4 carry-over; no new REQ ids — the budget record's numbers improve). +**Success Criteria**: + 1. Longest KL-metro routes route within the free-plan CPU budget (p95 under the ceiling, measured by the existing CPU gate) + 2. Route optimality unaffected (ALT is admissible — the corpus re-run stays green with identical tolerance verdicts) + 3. The budget record's c3 degradation class retires; KNOWN-LIMITATIONS updated +**Notes**: graph-layout v2 with landmark distances precomputed at build time; upload script unchanged. + +### Phase 9: Routing Extras (Toll / Speed / Share / Voice) +**Goal**: The REQUIREMENTS extras go live on the engine-A stack. +**Depends on**: Phase 8. +**Requirements**: RGNG-01 (toll toggle), RGNG-02 (speed-limit display where OSM maxspeed exists — "show nothing rather than wrong values"), TRIP-01 (live trip share via sendLocation(live_period) + editMessageLiveLocation with ETA; user-initiated, expires), GUID-07 (voice guidance via Web Speech API; mute-by-default; iOS webview TTS spike gates the sendVoice fallback). +**Success Criteria**: per requirement, plus a device check per added surface; privacy laws hold (a live trip share is EXPLICITLY user-initiated and expires — no silent tracking). +**Notes**: iOS TTS spike FIRST (GUID-07 gated on it). + +### Phase 10: Battery Record + Launch-Checklist Completion +**Goal**: The deferred launch items close: the <10%/hr battery record (measured, one real ≥30min guidance drive, method + caveats documented) and any remaining Part A/B cells. +**Depends on**: Phase 9 (extras present in the driven surface). +**Success Criteria**: the battery record signed in the launch gate file; KNOWN-LIMITATIONS' battery pointer retires; the launch checklist completes 6/6. +**Notes**: smallest phase in the project; closes the loop on the honest-deferral protocol. + +### Phase 11: Engine B — Client-Side WASM Router + Turn-Card Snapshots +**Goal**: The static-hosted endgame: routing computed in the webview (graph downloaded + HTTP-cached on device; origin+destination never touch a server), RoutingSource backend #3; bitmap map snapshots in minimized turn-cards ride the same graph asset. +**Depends on**: Phase 8 (ALT benefits the client engine too). +**Success Criteria**: + 1. Routing works offline/in-webview with no Worker round-trip for the route consult (device-verified) + 2. Turn-cards gain real map snapshots rendered client-side before minimize + 3. Payload/memory budget documented honestly (download size + phone memory), privacy law re-audited (a client-side router means coordinates never leave the device — the audit's best outcome) +**Notes**: the OSS-track project formalized; the repo's biggest single upgrade. + +(Scoped into the milestone above by the user, 2025-10-25 — the v1.x candidates line is superseded.) ## Progress **Execution Order:** -Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 +Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 → 7 (v1.0, complete) → 8 → 9 → 10 → 11 (v1.x) | Phase | Plans Complete | Status | Completed | |-------|----------------|--------|-----------| diff --git a/.planning/STATE.md b/.planning/STATE.md index 57edb09..f11d8f2 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -1,7 +1,7 @@ --- gsd_state_version: 1.0 -milestone: v1.0 -milestone_name: milestone +milestone: v1.x +milestone_name: routing-engine-upgrades-and-extras status: completed stopped_at: "docs-update complete: 9 docs regenerated+verified+committed; wiki synced+pushed" last_updated: "2026-10-25T04:51:08.699Z"