Closer/docs
null 7700c84e4d test(qa): add nav-scan.sh — prove navigation dead ends statically
QA had no net for navigation. Pass C already mandated "from every screen confirm
there's always a way out", and C-NAV-004 still shipped: the pack library drew no
app bar and no bottom bar, stranding the user on the system Back gesture. A human
walking ~50 routes misses one.

A dead end is statically provable, so it should not be hunted by eye. The shell
draws chrome from two hand-kept sets — topLevelRoutes (bottom bar) and
shellBackRoutes (app bar + back). A route in neither, whose screen also draws no
back of its own, has no exit by construction. nav-scan.sh cross-references both
sets against each route's screen composable and reports those as CRITICAL,
exiting 1 so it can gate. It follows the existing scanner family (theme-scan,
painter-xml-scan, wiring-scan) and is wired into Pass C as a pre-check, run
before the manual sweep like the theme scan.

Proven both ways rather than assumed: it flags QUESTION_PACKS when the fix is
reverted, and reports 0 with the fix in place. Scanning the whole route table
found no other dead ends. Excludes the entry flow (C-NAV-001: back out of Home
must not resurface onboarding) and two self-contained flows whose own CTAs are
the exit (PAIR_PROMPT, RECOVERY).

Also records the durable substance where it belongs:
- ERM landmine C-NAV-004 — the exact inverse of C-NAV-003 (wrongly *added* to
  shellBackRoutes = double app bar; wrongly *omitted* = no bar at all). The two
  failure modes point in opposite directions, so there is no safe default; the
  scanner is the guard.
- Future.md — the Tier 3 screenshot-diff idea is no longer hypothetical. Five
  visual defects surfaced in one day (star glyph fallback, "Chat Bubble Outline"
  chip leak, mid-word truncation, double back arrow, hard-edged art) and every
  one was caught only by a human reading a screenshot. They share a shape: the
  UI stays renderable and shows the wrong thing, so compile/unit/theme-scan all
  stay green. That is the class the tooling is structurally blind to.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 21:46:24 -05:00
..
brand feat(packs): add distinct pack artwork 2026-07-14 20:18:56 -05:00
crypto docs(crypto): key-storage migration design (design-only, gated) 2026-07-06 21:08:52 -05:00
qa docs: reconcile stale docs with project reality (Batch 1 doc hygiene) 2026-07-11 18:29:08 -05:00
release docs: reconcile stale docs with project reality (Batch 1 doc hygiene) 2026-07-11 18:29:08 -05:00
screenshots docs(readme): refresh ready-state home screenshots 2026-07-09 00:30:27 -05:00
store docs(store): refine banner card icon balance 2026-07-09 00:04:16 -05:00
CopyMigration.md docs: reconcile stale docs with project reality (Batch 1 doc hygiene) 2026-07-11 18:29:08 -05:00
Engineering_Reference_Manual.md test(qa): add nav-scan.sh — prove navigation dead ends statically 2026-07-14 21:46:24 -05:00
NameChange.md docs: reconcile stale docs with project reality (Batch 1 doc hygiene) 2026-07-11 18:29:08 -05:00
copy-guide.md docs: brand identity, copy guide, release checklists, store assets, README 2026-06-21 17:56:46 -05:00
date-planning-roadmap.md docs: reconcile stale docs with project reality (Batch 1 doc hygiene) 2026-07-11 18:29:08 -05:00
standardization-review.md docs: reconcile stale docs with project reality (Batch 1 doc hygiene) 2026-07-11 18:29:08 -05:00