From 021ac1a299051c862fd96135ceb534a71dc71c73 Mon Sep 17 00:00:00 2001 From: Nexus Dev Date: Thu, 2 Apr 2026 10:43:00 +0000 Subject: [PATCH] =?UTF-8?q?docs(v1.3):=20milestone=20audit=20=E2=80=94=206?= =?UTF-8?q?3/63=20requirements,=203=20integration=20gaps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .planning/v1.3-MILESTONE-AUDIT.md | 109 ++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 .planning/v1.3-MILESTONE-AUDIT.md diff --git a/.planning/v1.3-MILESTONE-AUDIT.md b/.planning/v1.3-MILESTONE-AUDIT.md new file mode 100644 index 00000000..b1a493c3 --- /dev/null +++ b/.planning/v1.3-MILESTONE-AUDIT.md @@ -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.