feat(config): make codex reasoning effort configurable per role#17
Open
Quigleybits wants to merge 1 commit into
Open
feat(config): make codex reasoning effort configurable per role#17Quigleybits wants to merge 1 commit into
Quigleybits wants to merge 1 commit into
Conversation
Every codex ACP role currently runs with a hardcoded model_reasoning_effort="xhigh". Validators re-checking one assertion and terminal reviewers do not need frontier effort on every dispatch, and there was no way to dial any of it down. Add ZENITH_WORKER_REASONING_EFFORT, ZENITH_VALIDATOR_REASONING_EFFORT, and ZENITH_TERMINAL_REVIEWER_REASONING_EFFORT. Unset roles inherit down the same chain the provider/command config already uses (terminal_reviewer -> validator -> worker), and a fully unset config keeps the historical xhigh default, so behavior is unchanged unless opted in. Values are validated against an allowlist at discovery: the resolved value is spliced into a shell command line, and a typo'd downgrade silently ignored would keep spending xhigh. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Every codex ACP role — worker, validator, terminal reviewer — currently launches with a hardcoded
model_reasoning_effort="xhigh"(_augment_acp_command). Validators re-checking a single assertion and the terminal reviewer don't need frontier effort on every dispatch, and today there is no knob to dial any of it down. Effort tiering per role is the cheapest cost lever available: validation lanes typically run more often than work lanes, so that's where spend concentrates on long missions.What
Three new env vars, following the exact shape of the existing per-role provider/command config:
ZENITH_WORKER_REASONING_EFFORTZENITH_VALIDATOR_REASONING_EFFORTZENITH_TERMINAL_REVIEWER_REASONING_EFFORTSemantics:
xhigh; nothing changes unless opted in.terminal_reviewer → validator → worker, resolved infor_role()exactly likeworker_provider_name/worker_acp_command.minimal | low | medium | high | xhigh): the resolved value is spliced into a shell command line, and a typo'd downgrade silently ignored would keep spending xhigh — so an invalid value fails fast atHarnessConfig.discover()instead.-coverride; other providers pass through unchanged).Example — full-effort workers, cheaper validation lanes:
Tests
None(→ xhigh), per-role overrides, invalid value rejected with the env var named in the error.for_role()cascade: single worker-level setting reaches all three roles; explicit validator setting wins and feeds the terminal reviewer fallback._augment_acp_command: override lands in the codex command line, bypass flags unaffected, claude command untouched with or without an effort.ruff check .,mypy src, andpytest -qall pass (205 passed, 7 ACP smoke skips, Linux/py3.12, rebased on current main).🤖 Generated with Claude Code