# 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.
