clb: forward review-mode + subagent-depth from launcher; disabled-tools from env

run_clb.py._sanitized_child_env now forwards OUROBOROS_TASK_REVIEW_MODE and
OUROBOROS_MAX_SUBAGENT_DEPTH (previously silently default auto / depth 2), and
the CLB bridge adapter honors CLBENCH_SOLVE_DISABLED_TOOLS (operator patch
clb_disabled_tools_env.v6745.patch) — together they make a submittable
review-required / no-swarm CLB run configurable from the launcher.

Scoring/tasks/grader untouched; only our launcher + our systems/ouroboros plugin.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Anton Razzhigaev 2026-07-23 07:19:27 +00:00
parent c4467147c0
commit 36ab50c021
3 changed files with 31 additions and 0 deletions

View file

@ -59,3 +59,15 @@ itself) is the supported path for v6.56.0 bridge runs.
`completed`/`degraded` outcomes before reading cost fields
(`task_cost_finalized` is never emitted for failed/cancelled — those read
immediately). Apply with `patch -p0` from the external checkout root.
## Addendum (v6.74.5, 2026-07-23)
7. `clb_disabled_tools_env.v6745.patch` — make `DISABLED_TOOLS` read from the
`CLBENCH_SOLVE_DISABLED_TOOLS` env var (forwarded by `run_clb.py`) instead of
a hardcoded `[]`. Lets a submittable no-swarm run disable `schedule_subagent`
from the launcher. Apply with `patch -p0` from the external checkout root
(after `clb_acceptance_claims.v674.patch`; different hunk, no conflict).
8. Launcher change (no patch file — `run_clb.py` is our own code): `_sanitized_child_env`
now also forwards `OUROBOROS_TASK_REVIEW_MODE` and `OUROBOROS_MAX_SUBAGENT_DEPTH`
so a "review required" / bounded-depth submittable run is configurable from the
launcher instead of silently defaulting to auto / depth 2.

View file

@ -0,0 +1,14 @@
--- src/systems/ouroboros/run_clbench_bridge_agent.py
+++ src/systems/ouroboros/run_clbench_bridge_agent.py
@@ -54,7 +54,10 @@ DOMAINS = (
# host, outside the container), not of tool restriction. The earlier web/vision self-handicap
# (vlm_query/screenshot/browse_page/web_search/...) is retired; the task-body key stays for
# protocol stability.
-DISABLED_TOOLS: list[str] = []
+import os as _os
+# Operator patch 2026-07-23: honor CLBENCH_SOLVE_DISABLED_TOOLS from env (forwarded by
+# run_clb.py) so a no-swarm submittable run can disable schedule_subagent. Empty -> default [].
+DISABLED_TOOLS: list[str] = [t.strip() for t in _os.environ.get("CLBENCH_SOLVE_DISABLED_TOOLS", "").split(",") if t.strip()]
_SCHEMA_PROMPT_HEAD = "\n\nYou MUST respond with valid JSON matching this schema exactly:\n"

View file

@ -215,6 +215,11 @@ def _sanitized_child_env(run_dir: pathlib.Path, settings: dict, args: argparse.N
# forward-channel for a patched adapter on the docker path.
"OUROBOROS_SAFETY_MODE": str(settings.get("OUROBOROS_SAFETY_MODE") or "light"),
"OUROBOROS_REVIEW_ENFORCEMENT": str(settings.get("OUROBOROS_REVIEW_ENFORCEMENT") or "blocking"),
# Operator patch 2026-07-23: forward review MODE (not just enforcement) and
# subagent depth so a submittable "review required" / no-swarm run is achievable
# from the launcher instead of silently living on defaults (auto / depth 2).
"OUROBOROS_TASK_REVIEW_MODE": str(settings.get("OUROBOROS_TASK_REVIEW_MODE") or "auto"),
"OUROBOROS_MAX_SUBAGENT_DEPTH": str(settings.get("OUROBOROS_MAX_SUBAGENT_DEPTH") or 2),
"CLBENCH_SOLVE_DISABLED_TOOLS": ",".join(settings.get("CLBENCH_SOLVE_DISABLED_TOOLS") or []),
})
if args.or_provider: