# MVP Acceptance The MVP is complete only when the following scenarios work together in the production Swift application. Passing the current native capability proof alone is not sufficient. ## Product scenario Given that enabled Collectors have observed normal work, when the user opens the Companion Island and asks, "What was I working on, and what should I do next?", then Mastermind: - responds through the configured Local Provider; - uses relevant knowledge from screen, workspace, calendar, terminal, and audio Sources; - distinguishes user-confirmed Facts from inferred Assertions; - identifies conflicting or stale knowledge; - states when evidence is insufficient; - attaches an inspectable Context Receipt. ## Presence - Mastermind launches as a menu bar application without a Dock icon. - Only the stable Menu Bar Item is visible at rest. - Hover reveals the Companion Island on the primary display. - Click expands it and focuses text input. - Show Mastermind in the menu provides a reliable fallback. - The expanded surface contains assistant, history, source, provider, graph, audit, and privacy controls. ## Continuous collection - Enabled Collectors start after launch unless paused state was persisted. - Screen collection follows the display containing the key window and processes meaningful changes rather than every full frame. - Microphone and system audio remain separate through local ASR. - Workspace collection is limited to explicitly connected roots. - Calendar and Reminders are read-only and limited to selected calendars and lists. - Terminal collection retains command metadata but not stdout or stderr by default. - Low Power Mode and thermal pressure reduce processing without corrupting state. - One failed Collector does not stop healthy Collectors. ## Local-only processing - Packet inspection and integration tests confirm that Source content does not leave the Mac. - The configured Local Provider accepts only loopback or Unix-socket endpoints. - OCR, ASR, embeddings, Fact extraction, retrieval, and answer generation work without internet access. - Raw screen frames, audio, OCR text, and full transcripts are destroyed after local reduction. - When a required local processor is unavailable, Mastermind records a Gap and does not queue raw content. ## Knowledge integrity - Observations are immutable until retention removes them. - Assertions retain time, confidence, and Provenance. - Conflicting Assertions coexist and produce an explicit conflict instead of silent overwrite. - Only explicit user confirmation or correction creates a Fact. - Confirmed Facts survive normal age and size eviction. - Ambiguous entity matches stay separate until confidence is sufficient or the user merges them. - Context retrieval treats instructions inside Source content as untrusted data. ## Retention and control - Inferred context defaults to 90 days and 2 GB and can be reconfigured. - Eviction uses `lastObservedAt` and does not evict confirmed Facts. - Assistant History has no automatic TTL. - The user can delete one Assistant Session or all Assistant History. - Pause All immediately stops every Collector and remains paused after relaunch. - Resume All restarts only enabled and permitted Collectors. - The encrypted archive round-trips context, history, policies, and settings without Provider credentials. ## Trust and diagnostics - The Menu Bar Item menu shows the real state of every Collector despite the stable glyph. - macOS capture indicators and permission surfaces remain unmodified. - Activity Log records Collector lifecycle, Gaps, permission errors, and Provider requests without Source content. - Context Receipts name the Provider and all supporting Sources and Observations. - The sanitized diagnostic bundle contains no prompts, answers, Facts, OCR, ASR, or Provider payloads. - Mastermind's windows are excluded from its own screen context. - Third-party capture exclusion is presented and tested as best effort, never guaranteed. ## Assistant boundary - The assistant streams text answers in Russian, English, and mixed-language work. - Outputs are answers, plans, or drafts only. - The production target contains no Computer Control, Tool Executor, autonomous action, Codex login, Codex app-server, or hidden experimental Cloud Provider. - If the Local Provider is unavailable, existing graph search, history, settings, and diagnostics remain accessible. ## Definition of done - Automated tests cover domain invariants, retention, encryption boundaries, policy defaults, independent Collector failure, and raw-buffer disposal. - Integration tests use synthetic Sources and local mock sidecars. - Manual tests cover macOS permissions, microphone, system audio, screen exclusion, primary-display changes, Launch at Login, sleep/wake, Low Power Mode, and relaunch while paused. - Logs and fixtures contain no captured user content. - Canonical documentation and implementation vocabulary agree with `CONTEXT.md`. ## Architectural compliance - [ ] Code follows **Strict Clean Architecture** with capability modules. - [ ] Dependency Rule is enforced at compile-time between targets. - [ ] No global EventBus; communication uses ports and typed async streams. - [ ] Context Graph updates are performed by idempotent projectors with durable checkpoints. - [ ] Privacy-sensitive egress is gated by a central fail-closed Egress Gate. - [ ] Swift 6 Strict Concurrency is enabled and produces no warnings. - [ ] All semantic declarations have Russian DocC per the **Commenting Standard**.