66 lines
2.1 KiB
Markdown
66 lines
2.1 KiB
Markdown
# Wave 2 / Track 10 - Live Voice Reliability and Realtime SLA
|
|
|
|
Track 10 starts after Track 9 QA acceptance is collected and frozen.
|
|
|
|
## Status Update (2026-03-05)
|
|
|
|
- Track 10 is closed using acceptance package:
|
|
- `docs/acceptance/track10/track10-acceptance.md`
|
|
- Closure mode: `GO with exception`
|
|
- direct p95 `started->ended` measured `33s` vs target `30s`
|
|
- reliability gates for stuck lifecycle/import are green (`active_no_end=0`, `ended_no_recording_upload=0`)
|
|
- Follow-up latency tightening is moved to the next track.
|
|
|
|
## Goal
|
|
|
|
Move from "Asterisk integration works" to "voice lifecycle is predictably near-realtime".
|
|
|
|
Required outcome:
|
|
- `call.started` appears in supervisor flow quickly and consistently.
|
|
- `call.ended` is not delayed by reconciliation paths.
|
|
- recording upload latency is measured and controlled.
|
|
|
|
## Scope
|
|
|
|
In scope:
|
|
- latency/SLA instrumentation for voice lifecycle (`started -> ended -> recording`),
|
|
- stricter reconcile behavior for stale AMI events,
|
|
- automated latency report as an acceptance artifact,
|
|
- Track 10 acceptance checklist and evidence structure.
|
|
|
|
Out of scope:
|
|
- ARI call control,
|
|
- operator softphone controls,
|
|
- new business voice features.
|
|
|
|
## Baseline SLO (Track 10 target)
|
|
|
|
- p95 `call.started -> call.ended` <= `30s` for lab calls.
|
|
- p95 `call.ended -> recording uploaded` <= `45s`.
|
|
- unresolved `failed bridge events` = `0` for acceptance window.
|
|
|
|
## Deliverables
|
|
|
|
1. Latency report script:
|
|
- `scripts/track10_voice_latency_report.py`
|
|
2. Runbook:
|
|
- `docs/runbooks/track10-live-voice-reliability.md`
|
|
3. Acceptance evidence folder:
|
|
- `docs/acceptance/track10/<timestamp>/`
|
|
4. Final decision doc:
|
|
- `docs/acceptance/track10/track10-acceptance.md`
|
|
|
|
## Phase 1 (implemented slice)
|
|
|
|
Completed:
|
|
- added Track 10 latency report script with SLO thresholds and JSON artifacts,
|
|
- added `direct` vs `reconciled` split in latency metrics,
|
|
- updated bridge path so `recording.ready` can close call lifecycle immediately when `call.ended` is missing.
|
|
|
|
## Acceptance
|
|
|
|
Track 10 is accepted when:
|
|
- latency report is generated from real calls,
|
|
- all mandatory checks pass for the acceptance window,
|
|
- `GO` is signed in `track10-acceptance.md`.
|