# Acceptance Criteria ## Functional Criteria - Criterion 1: The host can open `/host`, start a session, type a message, and submit it. - Criterion 2: The host's typed message is synthesized to WAV audio using the host's selected Kokoro voice and played back. - Criterion 3: After the host submits, the AI backend generates a response and it is synthesized to WAV audio using the AI's selected Kokoro voice and played back. - Criterion 4: Both the host message and the AI response appear as conversation cards in the feed on both `/host` and `/broadcast`. - Criterion 5: The `/broadcast` view contains no interactive controls — only the scrolling conversation feed and audio playback. - Criterion 6: OBS Studio can use `/broadcast` as a browser source and capture the conversation cards and audio. - Criterion 7: The host and AI each have an independently selectable Kokoro voice. - Criterion 8: The host can stop an in-progress session from the host view. - Criterion 9: A new session can be started after a previous one ends without restarting the server. ## Non-Functional Criteria - Performance: TTS synthesis must begin immediately after a turn is received. The next card must not appear until the current turn's audio has finished playing. - Reliability: The server must not crash if the AI backend times out. A timeout must surface as an error card in the feed, not a silent hang. - Security: The server is local-network only (`svc-ai`). No authentication is required. The WAV serving path must be sandboxed to the session audio directory to prevent path traversal. - Maintainability: AI backends must be swappable without changes to the web server or TTS layer. Adding Claude in Phase 2 must require changes only to `ai.py` and `pyproject.toml`. ## Documentation Criteria - `README.md` updated with installation and usage instructions. - `docs/09-PROJECT-STATUS.md` updated to reflect completed phases. - `docs/06-WORKER-HANDOFF.md` updated with current build state before each implementation handoff. ## Validation Criteria - Test evidence required: unit tests for `tts.py` voice listing, `clean.py` noise filtering, `ai.py` CLI argument construction. - Review evidence required: supervisor review of Phase 1 and Phase 2 output before Phase 3 begins. - Manual validation required: OBS browser source audio capture verified by Jason. ## Definition Of Done The project is done (Phase 1–4 complete) only when: - all functional criteria above are satisfied - the server runs stably on `svc-ai` - OBS can capture the broadcast view end-to-end - Jason has completed at least one test conversation from start to finish using the host view and the broadcast view simultaneously - required documentation is updated - supervisor review is complete ## Signature - Document role: governing - Created by: Claude (supervisor) - Created at: 2026-04-12 - Revision status: initial - Future revision rule: this document may be revised only by the user or by an explicitly authorized supervisor revision