Files
stoned-ai/docs/04-ACCEPTANCE-CRITERIA.md
Jason Hall fcd93ee0af Initialize project governance and baseline structure
Stoned.AI — live-streamed human + AI conversation show, both sides voiced
via local Kokoro TTS. Governance docs 00-09, README, .gitignore.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:55:46 +00:00

52 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 14 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