# Demo MVP Spec Gap Analysis — 2026-06-11 Spec: docs/superpowers/specs/2026-06-07-signal-demo-mvp-design.md. Read-only analysis by background agent. ## DONE - Visit date priority chain — _resolve_visit_date() coverage_calculator.py:167-183 (CSV > Supabase confirmed > shipment−30d estimate) - 6-month validation — _compute_visit_flag() + /api/confirm-visit main.py:511-523 - 90/60/45 tier system + urgency sort — _compute_priority() coverage_calculator.py:203-224 - 45-day prescriber outreach flag — FLAG_ACTIONS RENEWAL_CRITICAL - Confirm Visit workflow end to end — modal, persistence, recompute, live row update, persists across imports - Full 5-item payer-dependent doc state machine — doc_state_machine.py matches spec exactly - Cascade on expanded row + 5-dot status bar — WorklistTable.jsx:260-293, DocStatusBar.jsx - Transfer detection via Transfer_From column — normalizer.py:75-78, TRANSFER_PENDING short-circuit - CSV test suite — 50 files (PA+NJ), parameterized generators, market_data.json - Legal drafts — pitch/legal/ (LOI, NDA, BAA) ## PARTIAL - Status labels deviated from spec — RESOLVED 2026-06-11: locked to At Risk / Action Needed / On Track / Clear to Ship everywhere (see quality review doc) - Supply Lapsed alert banner — sorts to top, no banner component - Estimated label wording — spec's "Estimated — verify with prescriber office" not in UI - Cascade format — all-gaps list vs spec's single chain (deliberate redesign, commit ff657f4) - Per-item recommended actions in expanded checklist — live in cascade lines only - Cycle reset via re-import — recompute works, but NO diff vs previous import; CSV visit dates not persisted to confirmed_visits - Transfer clearing — "Verify Docs" button has no onClick handler - MFA on admin accounts NOT VERIFIED; attorney review of LOI/NDA pending ## NOT BUILT - Patient-disappeared-from-import flag (needs import diff: persistence.py previous batch load, main.py compare + new flag, frontend badge) - Transfer detection via history gap (same import-history dependency) - Duplicate patient_id detection in one file (normalizer.py has none; collapses silently) - Watcher Agent (nothing exists; demo needs it only as talking point) - 6 pilot questions in /pilot-prep skill (zero present) ## Empty-state / status legend Spec does NOT cover either — no overlap, safe to build separately. EmptyState.jsx exists (no CSV guidance); zero "legend" hits in signal-ui/src. Maps directly to the last PARTIAL pilot-readiness item. ## Recommended build order 1. Status legend + empty-state guidance (clears pilot readiness to 13/13) 2. Pilot-prep skill questions (5-minute edit) 3. Import diff package: previous-batch lookup, disappeared flag, persist CSV visit dates ("Signal gets smarter every import") 4. Wire Verify Docs transfer clearing 5. Duplicate patient_id flagging 6. Watcher Agent (trail) 7. Parallel ops: MFA verification, attorney review Beyond-spec already built: column mapping review UI (CSVImport.jsx) — spec Sec 12 excluded it; no action.