83 lines
5.2 KiB
Markdown
83 lines
5.2 KiB
Markdown
# 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).
|
||
|
||
---
|
||
|
||
## Part A — Gallery fidelity review (5 min, no device needed)
|
||
|
||
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.
|
||
|
||
---
|
||
|
||
## FINAL VERDICT — 2026-10-25: **APPROVED** (user drive + gallery + ratification)
|
||
|
||
| 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.
|