ouroboros/devtools
Anton 24991292e8 devtools(tb): faithful-network tool-policy + agent deadline awareness (TB2.1 methodology fix)
WIP checkpoint (local, not pushed) — to be reviewed-merged into repo/ after the re-run.

Fixes two TB2.1 methodology bugs that depressed gpt-5.5's measured score:

1. Network: the adapter set allowed_resources={web:false,network:false} on
   disable_agent_web, which blocked `git clone` even though TB2.1 tasks need it
   (every task.toml allow_internet=true; verifier clones in-container). Replace
   with a declarative `disabled_tools` tool-policy: withhold the agent's own
   web_search/browse/browser/analyze_screenshot/vlm_query tools (anti-reward-hack,
   == original _WEB_TOOLS set) while leaving shell egress (git/pip/curl) intact.
   - task_contract.disabled_tools (additive frozen-ABI field) + normalize_disabled_tools
   - registry hides disabled tools from schemas()/core_only/get_schema_by_name/
     available_tools (+ dynamic extension/MCP) and blocks them at execute
   - /api/tasks + TaskCreateRequest (+ api_types.js mirror) thread the field
   - propagates to subagents via the parent-contract spread
   - view_image intentionally kept (local image-to-model, outside _WEB_TOOLS)

2. Deadline: Harbor's per-task wall-clock cap was never plumbed into Ouroboros
   (deadline_at=""), so pacing/graceful-finalize were dormant and the agent was
   hard-killed mid-work with empty results.
   - D1: adapter resolves the per-task [agent].timeout_sec from cached task.toml,
     subtracts elapsed install/server time + 30s safety, passes timeout_sec ->
     deadline_at so the agent paces and self-finalizes a partial before the kill
   - D2: surface inherited deadline_at from task_contract into task_metadata so
     spawned subagents also pace/finalize
   - _capture_current_task_summary records captured_after_cancellation only on a
     real interruption (not a terminal infra_failed exit), so the disclosure
     ledger no longer misreads a terminal provider_unavailable as a cancellation

Plus the run_tb disclosure-ledger honest taxonomy (pass/provider_infra/cancelled/
genuine) and tests (test_disabled_tools_policy.py, test_run_tb_methodology regression,
adapter terminal-nonzero-exit test) + docs/ARCHITECTURE.md ABI rows.

Reviewed: codex (gpt-5.5) + 7 rounds triad+scope to convergence; only the
version-bump touchpoint remains, intentionally deferred to the eventual merge.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 22:09:02 +03:00
..
benchmarks devtools(tb): faithful-network tool-policy + agent deadline awareness (TB2.1 methodology fix) 2026-06-23 22:09:02 +03:00
__init__.py feat(devtools-benchmarks): add official benchmark harnesses and workspace executor 2026-06-06 12:03:30 +03:00
README.md feat(devtools-benchmarks): add official benchmark harnesses and workspace executor 2026-06-06 12:03:30 +03:00

Ouroboros Devtools

devtools/ contains operator-side and benchmark support code that should be versioned with Ouroboros without becoming part of the runtime core.

Rules:

  • Generated logs, datasets, run outputs, Docker layers, and secrets do not live here.
  • Default benchmark outputs go under /Users/anton/Ouroboros/bench_runs/.
  • Runtime modules must not import devtools.
  • This is not an immune-system bypass: touched files are reviewed normally.
  • Promote code out of devtools only through a separate reviewed runtime plan.