docs(v1.3): milestone audit — 63/63 requirements, 3 integration gaps
This commit is contained in:
parent
b019db7a0e
commit
021ac1a299
1 changed files with 109 additions and 0 deletions
109
.planning/v1.3-MILESTONE-AUDIT.md
Normal file
109
.planning/v1.3-MILESTONE-AUDIT.md
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
---
|
||||
milestone: v1.3
|
||||
audited: 2026-04-02T02:45:00Z
|
||||
status: tech_debt
|
||||
scores:
|
||||
requirements: 63/63
|
||||
phases: 6/6
|
||||
integration: 47/50
|
||||
flows: 9/12
|
||||
gaps:
|
||||
requirements: []
|
||||
integration:
|
||||
- from: "server/src/routes/chat.ts"
|
||||
to: "server/src/services/pushService.ts"
|
||||
issue: "sendPushToAll never called — push notifications infrastructure complete but no trigger fires"
|
||||
requirements: [PWA-06]
|
||||
- from: "ui/src/components/MobileChatView.tsx"
|
||||
to: "ui/src/hooks/useOfflineQueue.ts"
|
||||
issue: "Mobile handleSend has no offline guard — messages fail instead of queuing"
|
||||
requirements: [PWA-01]
|
||||
- from: "ui/src/components/ChatPanel.tsx"
|
||||
to: "useStreamingChat"
|
||||
issue: "Path 1 (new conversation) never calls startStream — first message gets no agent response"
|
||||
requirements: [CHAT-01]
|
||||
flows:
|
||||
- name: "Push notification on agent response"
|
||||
breaks_at: "No call to sendPushToAll after streaming completes"
|
||||
- name: "Offline message queue on mobile"
|
||||
breaks_at: "MobileChatView.handleSend bypasses useOfflineQueue"
|
||||
- name: "New conversation streaming"
|
||||
breaks_at: "Path 1 handleSend sets activeConversationId but never calls startStream"
|
||||
tech_debt:
|
||||
- phase: 23-brainstormer-flow
|
||||
items:
|
||||
- "human_needed: 2 must-haves need manual verification (brainstormer UX flows)"
|
||||
- phase: 24-search-history-branching
|
||||
items:
|
||||
- "gaps_found: 1/4 success criteria unverified (search does not index file attachment names)"
|
||||
- phase: 25-file-system
|
||||
items:
|
||||
- "human_needed: 8 items need browser testing (drag-drop, paste, voice, git log)"
|
||||
- phase: 26-pwa-performance
|
||||
items:
|
||||
- "vendor-react chunk empty due to Vite plugin-react JSX runtime interaction"
|
||||
- "InstallPromptBanner only renders on desktop ChatPanel, not MobileChatView"
|
||||
- "NotificationPermissionPrompt only renders on desktop ChatPanel, not MobileChatView"
|
||||
nyquist:
|
||||
compliant_phases: [21, 22]
|
||||
partial_phases: [23, 26]
|
||||
missing_phases: [24, 25]
|
||||
overall: partial
|
||||
---
|
||||
|
||||
# Milestone v1.3 — Audit Report
|
||||
|
||||
**Audited:** 2026-04-02
|
||||
**Status:** tech_debt (all requirements checked, 3 integration gaps, accumulated debt)
|
||||
|
||||
## Requirements Coverage
|
||||
|
||||
**Score:** 63/63 requirements checked in REQUIREMENTS.md
|
||||
|
||||
All requirement IDs across phases 21-26 are marked `[x]` complete.
|
||||
|
||||
## Phase Verification Summary
|
||||
|
||||
| Phase | Name | Status | Score |
|
||||
|-------|------|--------|-------|
|
||||
| 21 | Chat Foundation | passed | 13/13 |
|
||||
| 22 | Agent Streaming | passed | 28/28 |
|
||||
| 23 | Brainstormer Flow | human_needed | 13/15 |
|
||||
| 24 | Search, History & Branching | gaps_found | 3/4 |
|
||||
| 25 | File System | human_needed | 15/15 |
|
||||
| 26 | PWA & Performance | gaps_found | 8/10 |
|
||||
|
||||
## Cross-Phase Integration Issues
|
||||
|
||||
### 1. Push notifications never fire (PWA-06)
|
||||
`sendPushToAll` in pushService.ts is defined but never called from any server-side event handler. The SSE streaming endpoint in chat.ts completes without dispatching push. Infrastructure is complete; trigger is missing.
|
||||
|
||||
### 2. Mobile offline queue not wired (PWA-01 partial)
|
||||
`MobileChatView.tsx` does not use `useOfflineQueue` or `useOnlineStatus`. Its `handleSend` makes direct network calls with no offline guard. The `OfflineBanner`, `InstallPromptBanner`, and `NotificationPermissionPrompt` are also absent from the mobile layout.
|
||||
|
||||
### 3. New conversation streaming broken (CHAT-01 Path 1)
|
||||
After creating a new conversation, `ChatPanel` and `MobileChatView` set `activeConversationId` but never call `startStream`. The first message in any new conversation gets no agent response until the user sends a second message.
|
||||
|
||||
## Tech Debt Summary
|
||||
|
||||
**Total:** 8 items across 4 phases
|
||||
|
||||
- Phase 23: 2 human verification items pending
|
||||
- Phase 24: Search does not index file attachment names
|
||||
- Phase 25: 8 human verification items pending (drag-drop, paste, voice, git)
|
||||
- Phase 26: vendor-react chunk empty, install/notification prompts missing on mobile
|
||||
|
||||
## Nyquist Validation Coverage
|
||||
|
||||
| Phase | VALIDATION.md | Compliant |
|
||||
|-------|---------------|-----------|
|
||||
| 21 | exists | true |
|
||||
| 22 | exists | true |
|
||||
| 23 | exists | false (partial) |
|
||||
| 24 | missing | — |
|
||||
| 25 | missing | — |
|
||||
| 26 | exists | false (partial) |
|
||||
|
||||
## Recommendation
|
||||
|
||||
All 63 requirements are formally checked. The 3 integration gaps are real wiring bugs but are each a 5-15 line fix. The tech debt is manageable. Milestone can proceed to completion with these items tracked.
|
||||
Loading…
Add table
Reference in a new issue