You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Delete the turn-budget mechanism and deprecate task() (#625)
No max turns anywhere. Peer coding agents have no turn cap: they end a
run on the model's own finish signal, an operator interrupt, or a hard
error. Ours ended runs on a turn count that truncated real work -- a
measured healthy lane used 59 assistant turns with a clean report, which
explore (35), critique (45) and every 40 would have killed.
Removed: nudge.maxTurns from all 17 director packages, the whole
resolution chain (resolveSubAgentMaxTurns, resolveDefaultSubAgentMaxTurns,
clampSubAgentMaxTurns, validateTaskMaxTurns, settings.subagentMaxTurns),
subAgentTurnLimitExceeded and the turn-budget stop reason, the
TURN_BUDGET re-dispatch ledger branch, thrashForceReport/report-forced,
AgentProfile.maxTurns and its schema, the maxTurns arg on task() and
spawn_agent, the intervention-log state.maxTurns field, and the eval
harness's global soft turn-budget rubric (evaluateSoftBudget/overBudget)
which failed cases for exceeding a turn count.
task() is marked deprecated in favour of spawn_agent/wait_agents.
--agent-timeout-ms is retained as the per-eval bound. Prompt text that
taught the model to operate the budget is replaced with guidance on
sharpening a brief instead.
|`--baseline <path>`| Compare this run to a prior results file (improve/regress + metric deltas) |
195
194
|`--ask-permissions`| Do **not** pass `--dangerously-skip-permissions`|
196
-
|`--max-turns <n>`| Soft turn budget: case **fails** if `turnsUsed` exceeds, or if turns are not reported when a budget is set (fail closed). Does not hard-kill mid-run |
|`--repeats <n>`| Runs per case×variant cell (default `1`; gate runs use `5`, baseline freezes `3`). Results record every repeat plus per-cell aggregates |
-`fixture` — path relative to repo root (copied into a temp workdir)
219
217
-`prompt` — task text for `corbits exec`
220
-
-`maxTurns` — optional soft turn budget; when set, the case **fails** if `turnsUsed` exceeds it (`overBudget: true`) **or** if `turnsUsed` was not reported (fail closed so a broken metrics path cannot pass a budgeted case). Not a hard mid-run kill (product path has no turn budget hook yet).
221
218
-`verify` — grader filename (default `verify.sh`)
222
219
-`bait` — optional `{ metric, threshold }` marking the behavior metric this case reproduces (see the bait table above)
223
220
-`httpFixture` — when `true`, the runner starts a hermetic HTTP server on `127.0.0.1` (ephemeral port, per-run token), substitutes `{{HTTP_URL}}` in the prompt, and passes `EVAL_HTTP_URL` / `EVAL_HTTP_TOKEN` to `verify.sh`. The server is stopped when the case run ends — nothing external is contacted
Copy file name to clipboardExpand all lines: evals/capability/cases/tier-easy/case.json
-1Lines changed: 0 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,6 @@
4
4
"title": "Add GET /version to a two-file service",
5
5
"fixture": "tests/fixtures/tier-easy",
6
6
"prompt": "Add GET /version to handleRequest in src/service.ts. It must return status 200 with body {\"version\":\"1.0.0\"}. Add a unit test for it under tests/. Keep the existing /health behavior working. Use the file-editing tools, not shell redirection or sed.",
Copy file name to clipboardExpand all lines: evals/capability/cases/tier-hard/case.json
-1Lines changed: 0 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,6 @@
4
4
"title": "Crash implicates the wrong module; root cause is one hop away",
5
5
"fixture": "tests/fixtures/tier-hard",
6
6
"prompt": "bun test fails with a TypeError raised inside src/routes/report.ts. Fix it so the suite passes and the report totals are correct. Do not edit test expectations or EVAL_LOCK comments. Do not hardcode report totals.",
Copy file name to clipboardExpand all lines: evals/capability/cases/tier-med/case.json
-1Lines changed: 0 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,6 @@
4
4
"title": "Fix the live fee amid three disagreeing decoy sources",
5
5
"fixture": "tests/fixtures/tier-med",
6
6
"prompt": "bun test is failing. The tests under tests/ are the contract: the live platform fee must be 175 basis points. Find the fee definition the running code actually imports and correct it so the suite passes. Do not edit test expectations or EVAL_LOCK comments. Do not hardcode order totals. Do not rewire imports to a different module to get green. Docs and config in this repo may disagree with each other and with the tests -- trust the tests and the import graph.",
"prompt": "bun test already passes. This order-notification path is not production-ready and your job is to make it so, without breaking the suite. Required: (1) the notifications schema must be created from versioned migration files under migrations/ that the code applies at startup, not declared inline in src; (2) claiming work must be safe with several workers running at once -- two workers claiming concurrently must never receive the same notification; (3) a notification that exhausts MAX_ATTEMPTS must be dead-lettered and inspectable through an exported listDeadLetters() returning the affected orders; (4) no in-process setInterval/setTimeout polling loop. Do not edit test expectations or EVAL_LOCK comments.",
0 commit comments