Throughput and cost-control release: host-level agent concurrency is now bounded behind an explicit acknowledgement, the auto-review loop caps itself earlier by default, and a stale persisted harness no longer warns on every restart.
Added
- Opt-in bounded host concurrency:
[workspace.execution]now supports global and per-repository agent limits behind an explicitisolation = "best_effort_host"acknowledgement. Polling tasks, retries, error fixes, PR feedback, CI repair, conflict resolution, automations, and estimations share one admission supervisor; task worktrees may overlap within a repository while jobs using its persistent base checkout remain serialized. Concurrent jobs still share host ports, processes, Docker, caches, and linked Git metadata and are documented as best-effort throughput rather than VM isolation - One shared auto-review iteration cap (DEV-121):
--auto-review-iterationsand a matchingAUTO_REVIEW_ITERATIONSenv var are now the only controls for the review–fix cycle ceiling, honored identically by direct CLI runs, workspace/worker runs (worker_task_argspasses the same flag through), and the webhook server. The webhook-onlyWEBHOOK_AUTO_REVIEW_MAX_ITERATIONSenv var still works as a deprecated fallback with a migration warning, and the--auto-review-max-iterationsname that appeared in past release notes never existed in the CLI — use--auto-review-iterations - Auto-review defaults to 2 review–fix cycles instead of 5: most PRs converge in 1–2 passes or start thrashing, so the default cap now stops self-review sooner — humans see the PR earlier and agent spend per ticket drops. The cap is a ceiling, not a quota (approval or no remaining important issues still stops the loop early),
1means a single review pass, and0is rejected rather than treated as unlimited. Invalid values (non-numeric or less than 1) for the flag or env var are rejected with a clear error before any agent runs
Fixed
- Stale persisted active harness is re-pointed on startup (DEV-122): when the saved failover harness is no longer in the current
AGENT_HARNESSchain (e.g. after editing or shortening it), the worker already fell back in memory but kept the removed name stored, repeating thePersisted active harness "..." is not in the current AGENT_HARNESS chainwarning on every restart. The selected fallback — the highest-priority available entry, or the parked primary while every entry is still limited — is now written back to the queue database, so the warning appears once and later restarts stay quiet. Unchanged chains keep their existing failover/failback behavior