Limits actually enforced
A limit that is documented but not enforced is a hope. Every cap below is enforced by a component that does not trust the harness, and every attempt that hit one is reported under that reason in the failure taxonomy.
| limit | enforced by | when it binds |
|---|---|---|
| run spend cap | the run's own provider key, minted with the cap as its hard limit (ADR-0044); the gateway key carries no budget | every call from the run is refused; the run pauses and reports gateway blocked |
| per-instance cost | the local proxy shim, from the gateway's metered usage | the session is ended; the attempt lands as budget_exceeded with whatever patch exists |
| per-instance tokens | the shim | as above |
| per-instance turns | the adapter, counting tool-call rounds | max_turns_exceeded |
| wall-clock per attempt | the task's timeout | timeout |
| context window | declared to the harness so it compacts before the model rejects | not a terminal reason; visible as compaction events in the trajectory |
| provider rate limits | the pacer holds calls at the pool's discovered rates; the planner sizes the fleet | calls wait (recorded as paced wait per call); nothing fails |
The limits recorded with the MiniMax series
| limit | opencode | custom_minimal | claude_code | codex | mini_swe_agent |
|---|---|---|---|---|---|
| max_tokens | not set | not set | not set | not set | not set |
| max_cost_usd_per_instance | 2 | 2 | 2 | 2 | 2 |
| attempts_per_instance | 1 | 1 | 1 | 1 | 1 |
| temperature | 1 | 1 | not set | 1 | 1 |
max_tokens was not set for this series — the per-instance cost cap and the turn cap were the
binding limits by design. not set is shown as such rather than as 0.