# Wave 2 / Track 11 - Live Operator Voice Control Status: `Accepted` Track 11 introduced the first real operator call-control loop on top of the accepted Asterisk bridge. ## Goal Move from event-only voice integration to operator-controlled live calls in the existing operator shell. Accepted control path: - operator sees a live inbound call in `/operator` - operator answers media in external `MicroSIP/Zoiper` - operator fixes ownership in the browser with `Принять в работу` - operator can `Завершить` or `Передать` Voice media stays outside the browser. No WebRTC in this track. ## Scope In scope: - bridge live-call routes under `/asterisk/live-calls` - own-call RBAC for `operator` - operator live-call block - action log and replay-safe behavior - Asterisk event `MVPCCOperatorConnected` - QA acceptance with real call and recording playback Out of scope: - ARI - attended transfer or conference - embedded browser softphone - business API redesign ## Deliverables 1. Migrations: - `migrations/sql/0011_track11_voice_control_sqlite.sql` - `migrations/sql/0011_track11_voice_control_postgres.sql` 2. Backend: - `services/asterisk_bridge_service/app.py` 3. Operator UI: - `ui/operator/index.html` - `ui/operator/app.js` 4. Asterisk templates: - `deployment/asterisk/pjsip.conf` - `deployment/asterisk/extensions.conf` 5. Evidence and docs: - `docs/runbooks/track11-live-operator-call-control.md` - `docs/acceptance/track11/track11-acceptance.md` ## Accepted baseline Track 11 is frozen with these guarantees: - live inbound call visibility works in `/operator` - `claim`, `hangup`, and `blind transfer` persist in bridge action logs - `call.connected` and `call.transferred` are written as voice events - recording import and supervisor playback stay green For the current operator UX, use the Track 12 runbook. Track 11 remains the control-path baseline.