Live Recording Session
Domain execution constraints, capabilities, and test cases.
Live Recording Session
Owner: AI Domain: core Complexity: L Prerequisite: Milestone 3 Completed
This slice achieves the core orchestration of a live audio recording session. It introduces the meeting_recordings schema, updates the asynchronous API specifications, and implements the RecordingService to coordinate the WebSocket lifecycle and manage state transitions from active to stopping.
Required Capabilities
- Create
meeting_recordingsschema with status enums and sequence tracking. - Define
StartRecordingCommandandStopRecordingCommandWebSocket contracts inasyncapi-ws.yaml. - Implement the
RecordingServiceorchestrator in Core. - Emit
com.wordloop.meeting.session.terminated.v1to trigger ML finalization. - Persist live session state in Postgres.
Dependencies
- Milestone 3 (
reusable-note-components) must be merged and verified.
Domain Notes
Schema Notes:
| Table | Keys | Description |
|---|---|---|
meeting_recordings | meeting_id (PK) | Tracks the active recording session status and audio gap markers. |
State Transitions:
active: Session is actively receiving WebSocket audio chunks.stopping: Client requested a stop; buffers are flushing.draining_ml: Emitting the termination event to ML and awaiting final segments.completed: Processed successfully.
Test Cases
| Test | Location | Assertion |
|---|---|---|
| Start Recording Idempotency | test_core | Starting an already active recording returns 200 OK (idempotent). |
| Start Recording Creates DB Record | test_core | The meeting_recordings table gets a new row in active state. |
| Stop Recording Transitions State | test_core | Stopping a recording sets status to stopping and publishes the termination event. |
Completion Checklist
- Code merged and deployed
- Bet progress tests pass (
./dev test bet meeting-recording) - Permanent service tests implemented per testing strategy
- Code review completed
- API review completed
- Testing review completed
- System documentation updated