Files
arah2/.planning/phases/06-turn-by-turn-guidance-live-driving/06-VERIFICATION.md
T

3.6 KiB
Raw Blame History

Phase 6: Turn-by-Turn Guidance (Live Driving) — Verification

Verified: 2026-10-25 Method: goal-backward against ROADMAP §Phase 6 success criteria; device-gate user verdict ("approved" — Parts A/B/C) after one in-gate bug round (a69fe31).

Success Criteria

SC1 (GUID-01/03/04) — maneuver banner, ETA progression, haptics — ✅ PASS

  • Prominent next-maneuver banner (distance + arrow + street) with the collapsible full list (GS1–GS7 gates); real OSM street names via the graph's street reconstruction (Jalan Tun Sambanthan et al., on film).
  • ETA + remaining progress per accepted fix with per-axis EMA + independent display deadbands (E1–E8) — no visible whiplash, replay-pinned.
  • Haptic cues behind capability guards: selectionChanged at maneuver approach (~300m), impact at the point; graceful no-op unsupported (GS13–GS14).

SC2 (GUID-02) — silent self-healing reroute with storm guard — ✅ PASS

  • D-04 thresholds + grace machine: ON_ROUTE → OFF_ROUTE (grace window + N consecutive off-route fixes) → REROUTING → ON_ROUTE (R1–R12 replay green incl. the storm guard + the retry-after-guard deviation fix).
  • Engine side delivered with escalation: engine A (typed-array A* over the R2-hosted 15.4MB KL CSR graph) routes arbitrary origins live — 200 + real geometry verified at the deployed origin; free-plan CPU budget honored via the measured c3 class: short product reroutes 2–8ms in-budget; cross-metro → calm NO REROUTE / honest router-pending (maintainer decision 2026-10-25: c3 now, ALT preprocessing (c2) = next-milestone upgrade lever; c1 paid tier rejected on the $0 law).
  • Verified via recorded-drive replays AND the one real drive (Part B approved).

SC3 (GUID-05/06) — backgrounded turn-cards, seamless resume — ✅ PASS

  • Minimize → the frozen envelope goes live (POST /api/guidance; claim-only identity — GW4 injection probe) → the repo's first Cron Trigger (60s) scans active guidance:, projects progress along the snapshot, pushes street-bearing glyph+text turn-cards (envelope.chat_id ONLY, zero KV writes per tick).
  • Re-open → GET resume at progressed position (G9–G12; the steps-less-resume instant-arrival bug found + fixed during the concurrent-dispatch merge).

SC4 (PX-01/PX-03) — full BackButton graph, close protections — ✅ PASS

  • BackButton walks search → routes → guidance → back to search, never dead-ends (context-aware resolver; the phase-3 two-state walk extended); closing during guidance requires the "Tinggalkan laluan?" confirm card (G7b survival gate); vertical-swipe-close disabled while guidance active; safe areas respected.

SC5 (PRIV-01 in-app half) — trip end deletes + messaging — ✅ PASS

  • Arrival and abandon both run the same teardown: watch stopped, close protection released, chrome cleared, session deleted (DELETE endpoint), trip-ended "data deleted" card in the center register (D-14) — user-confirmed on the road; optional KV spot-check showed no stale guidance: keys.

Gates at close

search 57/57 · routing 65/65 · corpus PASS · bot 125/125 · web 148/148 · typechecks ×3 clean · theme audit clean · captures 20/20 · live deploy 39045611 (web 148-gz BA9 69.5KB/204.8KB budget).

Known-open (non-blocking)

  • /cari client-menu defect (carried from Phase 4 — Telegram-side).
  • /start logo served from web/public PNG; master SVG set now in-repo (brand source).
  • R2 activation done (2026-10-25); graph uploads verified round-trip.

Verdict

PHASE 6: PASSED — 8/8 plans executed; all success criteria met. Phase 7 (Hardening + Private Launch) is next.