cv-web v0.1 GA-Readiness Checklist¶
Audit date: 2026-05-21 (CV-210)
Site under audit: https://simplestruct.com/cv-web/
Build under audit: main @ 3053e601 (post-CV-195)
This checklist exists so we don’t point an alpha tester at a build with broken install, broken offline reopen, or known accessibility regressions. Items are marked PASS, FAIL, PARTIAL, or N/A. Every FAIL becomes a child Bug under CV-150 with a fix sprint assigned.
Summary¶
Category |
PASS |
FAIL |
PARTIAL |
N/A |
|---|---|---|---|---|
Build & deploy |
5 |
0 |
0 |
0 |
PWA install + offline (CV-195) |
5 |
0 |
0 |
0 |
Update / cache invalidation |
3 |
0 |
0 |
0 |
Accessibility |
6 |
2 |
2 |
0 |
Operational hardening |
4 |
0 |
0 |
0 |
Feature completeness |
0 |
0 |
0 |
1 |
Total |
23 |
2 |
2 |
1 |
GA blockers: 0. Two accessibility FAILs filed as child Bugs (sprintable in Sprint 22 — neither blocks GA on its own).
1. Build & deploy¶
# |
Item |
Status |
Evidence |
|---|---|---|---|
1.1 |
|
PASS |
Build run during CV-195 — 1453 modules, 18 precache entries, sw.js + manifest emitted. |
1.2 |
|
PASS |
158/158 across 11 test files (run 2026-05-21). |
1.3 |
Deploy SimpleStruct workflow green on |
PASS |
Run 26244863686 — 2m11s, S3 sync + CloudFront |
1.4 |
Source maps uploaded |
PASS |
Sentry plugin builds source maps; auth-token-less warning is expected for non-release builds. |
1.5 |
No |
PASS |
Workflow deleted in CV-543; CHANGELOG regenerates at Sphinx build time. |
2. PWA install + offline (CV-195)¶
# |
Item |
Status |
Evidence |
|---|---|---|---|
2.1 |
|
PASS |
|
2.2 |
Service worker registers ( |
PASS |
Vite plugin injects registration; verified in built |
2.3 |
|
PASS |
|
2.4 |
App boot path has no required network fetch |
PASS |
Audited boot — only lazy Nominatim / Open-Meteo fetches in |
2.5 |
Last-loaded panel restores on offline reload |
PASS |
Dexie auto-persists; verified in |
3. Update / cache invalidation¶
# |
Item |
Status |
Evidence |
|---|---|---|---|
3.1 |
|
PASS |
|
3.2 |
Update banner surfaces on new SW activation |
PASS |
|
3.3 |
Cache invalidation strategy documented |
PASS |
4. Accessibility¶
# |
Item |
Status |
Evidence |
|---|---|---|---|
4.1 |
Semantic landmarks ( |
PASS |
|
4.2 |
Image |
PASS |
Only |
4.3 |
Focus indicators visible ( |
PASS |
|
4.4 |
Color contrast — navy/blue on white |
PASS |
|
4.5 |
Form labels paired with inputs |
PASS |
|
4.6 |
|
FAIL |
4 sites in |
4.7 |
Modal close on Escape |
FAIL |
|
4.8 |
Focus management on modal open (focus moves into modal, returns on close) |
PARTIAL |
Not implemented; trapped-focus pattern would be cleaner. Tracked alongside CV-546. |
4.9 |
Automated axe-core scan integrated |
PARTIAL |
Audit was manual heuristic review. Playwright is in devDeps but |
4.10 |
Welcome banner update + install button have keyboard equivalence |
PASS |
Both are |
5. Operational hardening¶
# |
Item |
Status |
Evidence |
|---|---|---|---|
5.1 |
ErrorBoundary mounted at root |
PASS |
|
5.2 |
Sentry instrumentation initialized before React |
PASS |
|
5.3 |
Worker errors surfaced to user (CastLayoutView) |
PASS |
Shipped in CV-540 — |
5.4 |
Branch protection enforces commit conventions |
PASS |
|
6. Feature completeness¶
# |
Item |
Status |
Evidence |
|---|---|---|---|
6.1 |
Share a panel book by URL |
N/A |
CV-203 (Sprint 25). Not GA-blocking for v0.1 alpha but blocks v1.0. |
Filed FAIL items¶
CV-545 —
[Internal] cv-web: PropsPanel section headers not keyboard-accessible(Bug, Sprint 22) — Replace<div className="props-entity-header" onClick>with<button>+aria-expanded. Four sites inPropsPanel.tsx.CV-546 —
[Internal] cv-web: modal overlays missing Escape key close handler(Bug, Sprint 22) — Addkeydownlistener forEscapetoDialogRouter,SnapshotBrowser,CastSimReport. Trap focus inside open modal; return focus to opener on close.
Follow-up Tasks (not GA-blocking)¶
cv-web: wire @axe-core/playwright into CI— install dep, add a smoke test that boots the preview server and asserts no critical or serious axe violations. Sprint 23 or later.
Re-audit triggers¶
Re-run this checklist when:
Any of
vite.config.ts,App.tsx,main.tsx,index.html, orinstrument.tschanges materially.New top-level routes or modal patterns are added.
CloudFront cache rules change.
New external-network calls are introduced on the boot path.
References¶
Acceptance: CV-210 — cv-web v0.1 GA-readiness check
Parent: CV-150 — cv-web Browser App With Field Round-Trip
Companion docs:
52-cv-web-pwa-cache-strategy.md,47-gtm-plan.md