src/execute.rs:141 — The update-work-item and comment-on-work-item budget checks are now duplicated blocks (~35 lines each). If a third capped tool lands later this duplication will grow. A small helper fn check_budget(entries, i, tool_name, executed, max) -> Option(ExecutionResult) would keep this DRY without changing behaviour.
src/execute.rs:141 — The update-work-item and comment-on-work-item budget checks are now duplicated blocks (~35 lines each). If a third capped tool lands later this duplication will grow. A small helper fn check_budget(entries, i, tool_name, executed, max) -> Option(ExecutionResult) would keep this DRY without changing behaviour.