Docs The loop
Prove the fix
Turn an incident into a regression test, and let that test gate the next release.
Fixes. A fix is proven when the run that went wrong is replayed against the change and decides correctly, and when that replay runs again before every release.
- Runs · The runStopped by a rule17 Oct 2026, 23:38 UTCsupport-refund-agent tried to refund A$250 on a disputed charge.
Technical details
- Stored status
- error
- Id
- demo-refund-ca5e01
- Stored time
- 2026-10-17T23:38:36.804+00:00
- Controls · The decisionStopped17 Oct 2026, 23:38 UTCRefund escalation (policy v3) on the refund call: disputed refunds over A$100 must be escalated to a person.
Technical details
- Stored status
- deny
- Rule
- escalate-large-disputed
- Id
- 2adcd4cd-d56d-4263-bf0f-a8b641780251
- Stored time
- 2026-10-17T23:38:38.514+00:00
- Fixes · The incidentRemediated31 Oct 2026, 10:19 UTCRefund stopped: A$250 on a disputed charge.
Technical details
- Stored status
- remediated
- Stored title
- issue_refund blocked — A$250 on a disputed charge
- Last updated
- 2026-10-31T10:19:36.655+00:00
- Id
- 2118386d-58f7-4f39-a8eb-14bc4d5ca8ad
- Stored time
- 2026-10-31T10:19:36.490364+00:00
- Fixes · The regression testApproved18 Oct 2026, 02:38 UTCThe refund run, kept as a test: disputed refunds over A$100 must be escalated to a person.
Technical details
- Stored status
- approved
- Stored detail
- issue_refund blocked — escalate-large-disputed
- Id
- bb3b19aa-7908-4c5d-af88-242cef810894
- Stored time
- 2026-10-18T02:38:37.986+00:00
- Fixes · The gateNo data24 Oct 2026, 01:28 UTCReplayed the approved tests on Claude Sonnet 4.6, the candidate to replace GPT-4o. In the demo the replay is simulated, so this test is not scored, and the gate reports no result rather than a pass it did not earn.
Technical details
- Stored status
- no_data
- From model
- gpt-4o
- To model
- claude-sonnet-4-6
- Id
- 756dea4f-8d29-45a4-a8a2-22f63f9d8314
- Stored time
- 2026-10-24T01:28:37.702+00:00
How to: gate a release on a fix
Find the failed run
In Runs, filter to failed runs and open the one you fixed. Runs that ended in an error, or were stopped by a rule, also become candidate tests on their own.
Add it as a test
On the run, select Add to golden tests. (If the run is already a test, the run shows View golden test instead.) From Growth
Approve the test
Open Fixes › Tests. Under Awaiting review, select Approve. Approved tests are the suite every gate replays.
Run a gate
Open Fixes › Gates. Choose the model you run today in From and the candidate in To, then select Run gate. From Scale
Expected outputA verdict (Pass, Warning, Fail or No data), with one row per test. A test that could not be compared counts as unverified, never as a pass.Put the gate in CI (optional)
Select Put this in CI for a ready-made job that fails your build when the gate fails.
Incidents
Open one from any run with Open as incident. It moves through four statuses, one way:
| Status in the app | The API's value | Button in the app | Can move to |
|---|---|---|---|
| Open | open | Start investigating | Investigating |
| Investigating | investigating | Mark remediated or Close incident | Remediated or Closed |
| Remediated | remediated | Close incident | Closed |
| Closed | closed | None | Stays closed |
PATCH /api/incidents/{id} takes status, severity, root_cause, remediation, golden_run_id and note, and refuses any other status or a move the table does not allow.
Regression tests
Runs a rule stopped, and runs that end in an error, become candidate tests when they arrive, and appear in Fixes › Tests. Approve one and it becomes part of the suite every gate replays. Setting an incident's golden_run_id links the incident to the test that proves its fix. From Growth
Gates
Fixes › Gates replays the approved tests against a candidate model and gives one verdict, with one row per test. A test that could not be compared counts as unverified, never as a pass. From Scale
| Gates shows | The API returns | Meaning |
|---|---|---|
| Pass | pass | The share of tests that decided as before is at or above the pass threshold. |
| Warning | warning | That share is below the pass threshold but at or above the warning threshold. |
| Fail | fail | That share is below the warning threshold. |
| No data | no_data | No test could be compared, so nothing was scored. |
In CI, poll GET /api/evals/{eval_id}/gate with a ci key. While the eval runs it answers 202 with status: "running" and a retry-after header; when it finishes it returns the verdict. See the API reference.
Next
The incident, the test and the gate are all part of the signed record. Evidence shows how a third party checks it.