# Voice-agent release gate template

Fill this record before the final run. The point is to stop a team from moving thresholds after it sees the results.

The sample language is not a universal policy. Replace it with rules approved for your workflow, risk, callers, and jurisdictions.

## 1. Release identity

```text
Release candidate:
Prompt version:
Model and voice versions:
STT / TTS / VAD versions, if separate:
Tool and policy versions:
Build owner:
Evaluation owner:
Decision owner:
Planned release date:
```

## 2. Tested scope

```text
Workflows included:
Workflows excluded:
Languages and speech slices:
Phone routes and devices:
Audio and network conditions:
Caller populations represented:
Known evidence gaps:
```

Do not label an excluded lane as passed. Put exclusions beside the release decision where product and operations teams can see them.

## 3. Evidence contract

For every case, require only the evidence your team can collect lawfully and protect safely.

- [ ] Approved audio or a documented privacy-safe substitute
- [ ] Transcript revisions and entity corrections
- [ ] Prompt, model, voice, tool, and policy versions
- [ ] Ordered tool requests, results, and idempotency keys
- [ ] Playback, interruption, and cancellation events
- [ ] Initial and final authoritative system state
- [ ] Scorer version, reviewer notes, and case ID
- [ ] Retention, deletion, and access-control record

Missing required evidence is not a pass. Mark it `Not Enough Data`.

## 4. Gates written before execution

| Gate | Critical? | Evidence | Pass rule | Owner |
| --- | --- | --- | --- | --- |
| Intended account or record | Yes | identity assertions, tool payload, audit event | Only the approved fixture may change |  |
| Spoken status matches system state | Yes | played audio, tool result, final state | No false completion or invented status |  |
| Required disclosure | Set by workflow owner | audible recording, policy assertion | Approved disclosure rule passes |  |
| Authorization and consent | Yes for protected actions | factor state, approval event, tool ledger | No action before approved authorization |  |
| Duplicate or stale side effect | Yes | idempotency key, request history, final state | One current-intent mutation at most |  |
| Handoff recovery | Set by workflow owner | route result, context envelope, caller audio | No silent limbo; safe fallback works |  |
| Conversation timing | Usually lane-specific | monotonic event timestamps | Approved p50/p95/p99 budget passes |  |
| Caller experience | Lane-specific | reviewed audio and rubric | No severe experience failure |  |

## 5. Result sheet

| Case or stratum | Repeats | Passed | Failed | Not enough data | Worst failure | Evidence link |
| --- | ---: | ---: | ---: | ---: | --- | --- |
|  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |
|  |  |  |  |  |  |  |

Keep results split by workflow, language, speaker or caller slice, phone route, audio condition, and risk tier. Do not let a large easy stratum hide a small harmful one.

## 6. Exceptions

```text
Exception:
Why release is still permitted:
Affected scope:
Compensating control:
Named owner:
Expiry date:
Re-test date:
Approver:
```

No owner or expiry means no exception.

## 7. Rollback and kill switch

- [ ] Name the signal that triggers rollback.
- [ ] Name the person or service allowed to stop new calls.
- [ ] Confirm queued work rechecks eligibility before execution.
- [ ] Rehearse the stop path across every worker and vendor.
- [ ] Define how partial and committed actions are reconciled.
- [ ] Keep the last known safe version ready.

## 8. Decision

```text
Decision: Ready / Caution / Blocked / Not Enough Data
Tested scope attached:
Critical failures:
Open non-critical failures:
Exceptions and expiry:
Rollback owner:
Decision owner:
Decision date:
Next mandatory review:
```

If a critical gate fails, block. If required evidence is missing, say so. A quick call with a wrong final state is still a failed release.
