# Runbook - Track 10 Live Voice Reliability Use this runbook to validate lifecycle latency after Track 9 integration. ## Preconditions - Platform stack is running. - Asterisk bridge is connected (`/proxy/asterisk-bridge/asterisk/status`). - Real lab calls are already made (`1001 -> 7000`). ## 1) Generate latency report ```powershell python scripts\track10_voice_latency_report.py ` --database-url sqlite:///.data_local/mvp_cc.db ` --since-hours 8 ` --breach-mode direct ` --json-out .artifacts/track10/voice-latency-latest.json ``` For post-fix short-window validation use minutes: ```powershell python scripts\track10_voice_latency_report.py ` --database-url sqlite:///.data_local/mvp_cc.db ` --since-minutes 30 ` --breach-mode direct ` --json-out .artifacts/track10/voice-latency-30m.json ``` Optional strict gate mode: ```powershell python scripts\track10_voice_latency_report.py ` --database-url sqlite:///.data_local/mvp_cc.db ` --since-hours 8 ` --max-started-to-ended-seconds 30 ` --max-ended-to-recording-seconds 45 ` --breach-mode direct ` --fail-on-breach ``` ## 2) Review report fields Mandatory fields: - `summary.total_calls` - `summary.active_no_end` - `summary.ended_no_recording_upload` - `summary.start_to_end.p95` - `summary.end_to_recording_upload.p95` - `summary.ended_direct_calls` - `summary.ended_reconciled_calls` - `summary.direct_start_to_end.p95` - `summary.direct_end_to_recording_upload.p95` ## 3) Save acceptance evidence Create a timestamp folder: `docs/acceptance/track10//` Place: - `voice-latency-latest.json` - command output log - note with latest call IDs included in report ## 4) Decision guidance GO candidate: - `active_no_end = 0` - `ended_no_recording_upload = 0` - direct p95 metrics within Track 10 thresholds NO-GO candidate: - repeated high latency outside thresholds, - stale active calls without `call.ended`, - missing recordings after completed calls.