# Release Checklist Use this checklist before publishing the Milestone #5 demo update. ## Repository readiness - [ ] `npm install` completed on a clean machine - [ ] Real `package-lock.json` generated by npm, not hand-written - [ ] `npm run build` passes - [ ] `npm run test` passes - [ ] `npm run test:e2e` passes after Playwright browser install - [ ] README quickstart verified verbatim - [ ] `.env.example` files reviewed - [ ] No secrets committed - [ ] No generated `node_modules`, `dist`, or test reports committed ## Product readiness - [ ] Onboarding flow creates a passport - [ ] Team, stadium, match, and sticker collection flows work - [ ] Duplicate collections do not award duplicate XP - [ ] Trivia answer flow works for correct and incorrect answers - [ ] Prediction submission works - [ ] Giant-killing challenge unlocks a badge - [ ] Memory creation works - [ ] Challenge grid updates after actions - [ ] Badge shelf updates after challenge completion - [ ] Achievement timeline shows action feedback - [ ] Leaderboard rank changes as XP increases - [ ] Reset demo returns app to onboarding ## Accessibility and responsive readiness - [ ] Keyboard-only journey completed - [ ] Screen reader smoke test completed - [ ] Playwright Axe scan has no critical/serious violations - [ ] Mobile viewport checked at 390 × 844 - [ ] Narrow viewport checked at 320 × 568 - [ ] Desktop viewport checked at 1440 × 900 - [ ] Browser zoom checked at 200% - [ ] Reduced-motion preference checked ## Public update assets - [ ] Demo script rehearsed - [ ] 60–90 second screen recording captured - [ ] Screenshot of challenge completion captured - [ ] Screenshot of badge shelf captured - [ ] Screenshot of leaderboard movement captured - [ ] Backer update text reviewed - [ ] Known demo constraints stated clearly ## Deployment readiness - [ ] API deployed and `/api/health` returns `ok: true` - [ ] Web deployed and points to deployed API through `VITE_API_BASE_URL` - [ ] API `CORS_ORIGIN` matches deployed web URL - [ ] Platform logs checked during demo journey - [ ] Reset policy decided for public demo - [ ] Monitoring added for API health ## Go/no-go decision Go if all of the following are true: - The demo can be completed twice in a row without manual data fixes. - The UI communicates loading, error, empty, and completed states. - The public update states that seeded content is representative. - The team is comfortable that the resettable in-memory store is appropriate for this milestone demo. No-go if any of the following are true: - User actions silently fail. - Challenge or badge state becomes inconsistent after duplicate actions. - The leaderboard does not update after XP changes. - The app cannot be used on mobile. - The API allows invalid prediction or collection data without an error.