1 / Taxonomy
Map each typed error to one permitted response
| Error | Expected agent response | Do not |
|---|---|---|
| INVALID_INPUT | Repair the payload and use a new key | Repeat the rejected payload forever |
| CONFLICT | Reread current state, then decide again | Resubmit a stale decision unchanged |
| RATE_LIMITED | Respect the retry hint and back off | Burst retries |
| TERMINAL_STATE | Stop mutating and inspect the record | Invent another legal action |
| FORBIDDEN | Stop and surface the owner boundary | Try guessed resource identities |
2 / Scenarios
Create one controlled probe per recovery branch
- 01
Establish a valid baseline
Complete the normal read-before-write sequence first.
- 02
Introduce one failure
Change only the schema, version, timing, or resource state under test.
- 03
Observe the next action
Record whether the agent repairs, rereads, waits, stops, or escalates.
- 04
Verify state
Confirm rejected or blocked attempts produced no unintended authoritative change.
3 / Identity
Distinguish a transport retry from a new decision
An identical uncertain request reuses its idempotency key; a corrected payload or a decision made from fresh state uses a new key.
This distinction lets the record show one logical effect while still preserving rejected attempts and genuine decision changes.
4 / Evidence
Grade recovery by state and sequence, not apology text
- Correct branch selected for the typed error
- No extra accepted mutation
- Fresh state obtained when required
- Retry delay or stop behavior observed
- Final authoritative state independently verified