Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .claude/settings.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"env": {
"BENCH_PROVIDER": "claude_code"
"BENCH_PROVIDER": "claude_code",
"BENCH_CLAUDE_TIMEOUT": "300"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Extend the outer hook timeout beyond all stages

When a non-CLEAR diff makes Challenger, Defender, and Oracle each approach the new 300-second limit, the pipeline can require roughly 900 seconds before any parse retries, but the PreToolUse command still has no explicit timeout and therefore retains Claude Code's 600-second default. Claude Code can consequently cancel the entire hook before it emits a verdict or ledger receipt, so the heavy diffs this change is intended to unblock still fail at the enclosing timeout instead. The Claude Code command-hook reference documents timeout as a per-hook setting with a 600-second default; set it above the pipeline's cumulative worst-case duration when raising this per-call value.

Useful? React with 👍 / 👎.

},
"hooks": {
"PreToolUse": [
Expand Down
6 changes: 5 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,11 @@ client = openai.OpenAI(
# The child is spawned with BENCH_SUBPROCESS=1 so Bench's own PreToolUse hook
# fails open instead of recursing. subprocess/shutil are stdlib, so this path
# adds no dependency. Per-stage timeout is BENCH_CLAUDE_TIMEOUT seconds
# (default 120).
# (library default 120). This repo sets 300 in .claude/settings.json: at 120
# the Oracle timed out on constitutionally heavy diffs, and because a timeout
# fails closed it surfaced as a VETO carrying pipeline_error, which reads like
# a ruling but is a pipeline failure. Raising the ceiling does not weaken
# enforcement; it stops a slow judge from being mistaken for a strict one.

# Model strings live in utils/api.py as CHALLENGER_MODEL, DEFENDER_MODEL,
# ORACLE_MODEL, and UTILITY_MODEL (the single source of truth). This section
Expand Down