Files
arah2/.planning/phases/07-hardening-private-launch/07-VERIFICATION.md

34 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 7: Hardening + Private Launch — Verification
**Verified:** 2025-10-25
**Method:** goal-backward against ROADMAP §Phase 7's four success criteria; launch gate **SIGNED** (07-LAUNCH-GATE.md, commit `bac01a9`).
## Success Criteria
### SC1 (PX-04) — fullscreen + landscape across the device matrix, battery target — ✅ PASS (battery DEFERRED by user)
- Fullscreen engages on guidance start behind the 8.0 capability guard (FS1–FS9, mutation-verified); landscape cockpit geometry shipped CSS-only, token-pure, capture-verified at 390×844 rotated viewports; **one consolidated 4-client × 7-interaction walk: user verdict "Part A: Works"**.
- **Battery <10%/hr: DEFERRED by the user** (2025-10-25) — recorded honestly as a v1.x measurement item; docs/KNOWN-LIMITATIONS.md carries the gap. The requirement's honesty is the record, not a fabricated number.
### SC2 (SC2 failure states + version gating) — ✅ PASS
- FM1–FM7 failure-state matrix green (empty/error/timeout/off-road/no-geometry/old-client/version-gate); the RED gate caught a real draw-path gap (1-point geometries now refused pre-draw); the version-gate fallbacks are the phases-3–6 capability guards, re-pinned.
### SC3 (privacy verification) — ✅ PASS
- `npm run privacy-audit --live`: **7/7 gates PASS, 0 violations** — storage-API gates over all five src trees, KV-expiry live probe (0 live keys, every key TTL-only, complete pagination), log-vocabulary schema (28 call sites, zero payload carriers), runtime-hosts allowlist (printed inventory), production bundle scan (**zero analytics/beacons/crypto/storage tokens**).
- Signed record: docs/PRIVACY-AUDIT.md (D-01/D-02's zero-telemetry v1 law).
### SC4 (regression + budgets + limitations doc) — ✅ PASS
- Both golden corpora green (search ≥90% top-3; routing corpus PASS); budget-audit CLEAN live (6 gates): p95 in the c3 band, bundle 479/500KB gz, cron KV writes = 0 (source-proven), `/api/route` = 0 external subrequests.
- **KV-list over-ceiling resolved $0-safe** (user decision): cron `*/2` + 240s card cadence ⇒ 720 list-ops/day < 1,000/day ceiling; BUDGETS.md records the resolution.
- docs/KNOWN-LIMITATIONS.md shipped (7 sections, drivers + forks) + /help pointer live.
- Debts paid: IN-01 (dead export/branch deleted, intent comments), IN-02 (truthful wrangler comment), IN-03 (exact-900s boundary vector — the comparator pin), /cari menu defect **root-caused** (our `bot_command_scope` vs the API's `scope` field — silently ignored; fixed at source), A1/A3 stale-fix notes closed.
## Launch gate
**SIGNED** (Parts: A pass · B deferred · C 12/12 with real numbers · D 5/6). Open at launch (carried): the battery measurement (v1.x) and the repo's public visibility flip (user's one-time act).
## Gates at close
bot 126 · web 165 · routing 65 · search 57 · audits 7/7 + 6/6 live CLEAN · captures 22/22 · deploy `f3b662c3`.
## Verdict
**PHASE 7: PASSED — the v1 milestone's 7th and final phase.** 6/6 plans executed; all success criteria met (battery deferred by explicit user decision). The private launch is the user's to execute: flip the repo public, hand the bot link to the first KL drivers.