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

5.2 KiB
Raw Blame History

06-08 Device Gate — THE ONE REAL DRIVE (D-16) + DSGN-02 Gallery Review

Status: BLOCKING — awaiting the human. Everything automatable is green: web 148/148 (146 pre-existing + G7b confirm-survival + G7c puck/freshness), bot 125/125, routing 65/65, all typechecks clean, npm run web:capture 20/20 with the seven guidance legs committed (ed86196, 5eeccdf). Per the plan's law: device results are never faked — this file records the protocol; the SUMMARY records the verdict verbatim once the drive runs. A FAIL holds the phase open (the Phase 3 UNVERIFIED precedent).


Open web/screenshots/guidance-gallery-compare.png (committed at 5eeccdf): the implemented cockpit (shell-guidance-active.png, ?drive=corridor-follow, harness build) beside stitch_minimalist_route_navigator/active_route_guidance/screen.png.

Confirm fidelity against 06-UI-SPEC:

  • Banner ink hierarchy: white distance (85 M), beige street (JALAN TUN SAMBANTHAN — real OSM name via the graph snap), orange arrow on the 48×48 plate, register line in chassis-subtle (GUIDE // NEXT).
  • No red anywhere in guidance chrome; radius-0 everywhere; no shadow/blur/glass.
  • Recorded calls (the spec wins over the mockup — the composite makes them visible): no incident band, no lane matrix, no speedometer/limit medallion, no REROUTE-VIA-TELEGRAM-BOT / REPORT HAZARD / AUDIO buttons, 32×32 glyph at 3px stroke, distance in pure-white (not orange).

Approve or list deviations (tokens.css wins over the mockup; the spec records calls).

Part B — THE ONE REAL DRIVE (the phase's exit gate)

One drive, phone mounted, safe location to start. Steps 2–7 each get a PASS/FAIL + verbatim notes recorded in 06-08-SUMMARY.md afterwards.

# Step Verify
1 npm run deploy -w bot (graph already uploaded — kl-roadgraph.v1.bin in R2) and open the Mini App from the bot The app boots, destination resolves, route draws
2 Pick a golden destination (e.g. Merdeka 118 from Central Market), start driving Banner shows distance + arrow + street; compact strip; guidance-card ETA progresses without whiplash; haptic at ~300 m approach and at the maneuver; the puck rides the route line (fixed this plan — b83a88e) and the strip stays LIVE past 45 s (fixed this plan — same commit)
3 Miss a turn DELIBERATELY No dialog, no blame — the banner calmly shows GUIDE // REROUTING (dash + gantry), then the new route snaps in and GUIDE // NEXT returns
4 Minimize the app mid-drive Within ~3–4 min a turn-card arrives in chat (glyph + street + ETA + distance + OPEN GUIDANCE)
5 Re-open via the card's OPEN GUIDANCE (or the chat header) Guidance resumes at the progressed position — GUIDE // RESUMING (projected numbers), then live on the first fix
6 Tap END TRIP → confirm card → YES, ABANDON "Trip ended" card + the deletion clause; the confirm card survives live fixes (fixed this plan — fca2a90); chat cards stop
7 (Optional, executor-assisted) KV spot-check npx wrangler kv key list --namespace-id=59f58a54bc44483e89872b20a005a5eb --prefix "guidance:" → no stale keys (the D-14 deletion promise on real infrastructure)

Record PASS/FAIL per step + anything that felt wrong (legibility in sunlight, haptic feel, card lag, puck smoothness).

Part C — Turn-card street-source ratification (2 min, named review item from 06-07)

Cards ship street-bearing by DEFAULT via cron-side graph reconstruction (one loadGraph R2 read per cold isolate, one snapToGraph per carded tick) — a CPU-budget tradeoff in the cron isolate. Decide:

  • Keep the default (D-12 as written — street names on every card), or
  • Ratify the street-less degradation as final (bare-verb cards; recorded in UI-SPEC's recorded-calls fidelity list; 06-07's degradation path becomes the only path).

Executor notes for the run

  • R2 activation (06-CONTEXT post-planning): the R2 bucket click-through was pending the Cloudflare dashboard (code 10042). If R2 is still unactivated, engine A answers router-pending (designed degradation) and the cron's cards degrade to bare-verb — the drive is still performable, but note it in the verdict.
  • The known-open cosmetic from Phase 4: /cari may be absent from the client command menu (Telegram setMyCommands defect; the command works when typed).
  • Never fake: if a step cannot be executed (weather, road, time), mark it NOT RUN — do not invent an outcome. The phase stays open on any FAIL or NOT RUN.

Part Verdict
A. Gallery fidelity APPROVED — banner ink hierarchy, zero red, radius-0, token-pure
B. The real drive APPROVED — banner+haptics, silent self-heal, minimize→turn-cards, resume, trip-end deletion
C. D-12 ratification STREET-BEARING KEPT (default stands)

Device-gate bug round 1 (commit a69fe31, deploy 39045611): destination card's terminal-with-no-forward gap → ROUTE button added; header title localized. Post-gate records: A1 = c3 now / c2 next milestone.