Files
konstruct/.planning/phases/08-mobile-pwa/08-VALIDATION.md

86 lines
3.1 KiB
Markdown
Raw 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: 8
slug: mobile-pwa
status: draft
nyquist_compliant: false
wave_0_complete: false
created: 2026-03-26
---
# Phase 8 — Validation Strategy
> Per-phase validation contract for feedback sampling during execution.
---
## Test Infrastructure
| Property | Value |
|----------|-------|
| **Framework** | ESLint + TypeScript strict + Next.js build (existing) |
| **Config file** | `eslint.config.mjs`, `tsconfig.json` |
| **Quick run command** | `cd packages/portal && npm run lint` |
| **Full suite command** | `cd packages/portal && npm run build` |
| **Estimated runtime** | ~45 seconds |
---
## Sampling Rate
- **After every task commit:** Run `npm run lint` in packages/portal
- **After every plan wave:** Run `npm run build` in packages/portal
- **Before `/gsd:verify-work`:** Full build must pass + Lighthouse PWA audit score >= 90
- **Max feedback latency:** 45 seconds
---
## Per-Task Verification Map
| Task ID | Plan | Wave | Requirement | Test Type | Automated Command | File Exists | Status |
|---------|------|------|-------------|-----------|-------------------|-------------|--------|
| 08-xx | 01 | 0 | MOB-04 | build | `npx next build` | ✅ | ⬜ pending |
| 08-xx | 02 | 1 | MOB-01,02 | build | `npx next build` | ✅ | ⬜ pending |
| 08-xx | 03 | 1 | MOB-03 | build | `npx next build` | ✅ | ⬜ pending |
| 08-xx | 04 | 2 | MOB-04,05 | build | `npx next build` | ✅ | ⬜ pending |
| 08-xx | 05 | 2 | MOB-06 | build | `npx next build` | ✅ | ⬜ pending |
*Status: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky*
---
## Wave 0 Requirements
- [ ] `public/icon-192.png` — K monogram icon (192x192)
- [ ] `public/icon-512.png` — K monogram icon (512x512)
- [ ] `public/icon-maskable-192.png` — Maskable variant with safe-zone padding
- [ ] `public/apple-touch-icon.png` — iOS home screen icon (180x180)
- [ ] `public/badge-72.png` — Notification badge (72x72, monochrome)
- [ ] VAPID keys generated and added to `.env`
- [ ] `npm install @serwist/next serwist web-push idb` + `npm install -D @types/web-push`
---
## Manual-Only Verifications
| Behavior | Requirement | Why Manual | Test Instructions |
|----------|-------------|------------|-------------------|
| Pages render at 320px1024px | MOB-01 | Device emulation | Chrome DevTools device mode, check all pages |
| Bottom tab bar on mobile | MOB-02 | Visual layout | Resize below 768px, verify tabs appear |
| Chat full-screen on mobile | MOB-03 | UI interaction | Tap conversation, verify full-screen with back arrow |
| PWA installable | MOB-04 | Browser behavior | Lighthouse PWA audit, manual install from Chrome |
| Push notification received | MOB-05 | Requires HTTPS + real device | Install PWA, send test message, verify notification |
| No hover-stuck interactions | MOB-06 | Touch device | Tap all buttons/links on real touch device |
---
## Validation Sign-Off
- [ ] All tasks have `<automated>` verify or Wave 0 dependencies
- [ ] Sampling continuity: no 3 consecutive tasks without automated verify
- [ ] Wave 0 covers all MISSING references
- [ ] No watch-mode flags
- [ ] Feedback latency < 45s
- [ ] `nyquist_compliant: true` set in frontmatter
**Approval:** pending