Skip to content

Commit 2a1cb01

Browse files
bpamiriclaudegithub-actions[bot]
authored
ci: switch wheels-bot triage from Sonnet to Opus (#2589)
* ci: switch wheels-bot triage from Sonnet to Opus Triage's job is now harder than pure classification — it reads the issue body, optionally greps the codebase, and self-rates confidence that downstream Opus stages (propose-fix, research, write-docs) auto- fire on. The auto-downgrade rules force `medium` for sensitive surfaces regardless of model, so the gate's guard-rails stay intact; upgrading the model just gives the bot a better chance of resolving genuine uncertainty (vs. hedging to `medium` when a deeper read of the code would have produced a clean `high`). Concrete example from #2582 today: triage rated `medium` because the reporter listed `/env` as working even though it routes through the same `consoleExec` function as the failing commands. An Opus pass on that issue would have either read `consoleExec` to resolve the inconsistency (likely `high`) or confirmed it as a genuine scope- initialization nuance (justified `medium` with sharper rationale). Tools and turn budget unchanged — same read-only allowlist (`gh`, read-only `git`, `Read`/`Grep`/`Glob`), same 200-turn ceiling. Cost delta is roughly 5× per triage; volume is modest (~3-4 issues/day). Also synced the model column in CLAUDE.md's bot stages table. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: address Reviewer A/B consensus findings (round 1) - docs/contributing/wheels-bot.md:260 — replace stale "only stage that runs Opus on a non-coding task" claim with advisor+triage framing (A's main finding; B confirmed) - docs/contributing/wheels-bot.md:224 — clarify "analytical Sonnet stages above" by naming Reviewer A and B explicitly (B's missed-issues finding) --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
1 parent b6d6502 commit 2a1cb01

3 files changed

Lines changed: 9 additions & 8 deletions

File tree

.github/workflows/bot-triage.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,6 @@ jobs:
7171
prompt: |
7272
/triage-issue ${{ github.event.issue.number || inputs.issue_number }}
7373
claude_args: |
74-
--model claude-sonnet-4-6
74+
--model claude-opus-4-7
7575
--max-turns 200
7676
--allowedTools "Bash(gh:*),Bash(git status),Bash(git log:*),Bash(git diff:*),Bash(git show:*),Bash(git grep:*),Read,Grep,Glob"

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1057,7 +1057,7 @@ Workflow orchestration (multi-step planning, feature development) is not a frame
10571057

10581058
| Stage | Trigger | Model | Output |
10591059
|---|---|---|---|
1060-
| Triage | issue opened/reopened | Sonnet | Comment classifying as `bug` / `framework-design` / `other` (+ confidence on `bug` path). |
1060+
| Triage | issue opened/reopened | Opus | Comment classifying as `bug` / `framework-design` / `other` (+ confidence on `bug` path). Reads code with the allowlisted tools to resolve uncertainty before rating. |
10611061
| Research | bot triage emits `framework-design` marker | Opus | Comment comparing Rails / Laravel / Django / Phoenix / Spring Boot / +1 and recommending a Wheels-idiomatic path (+ confidence). |
10621062
| Propose Fix | bot triage emits `triage-confidence:high` OR research emits `research-confidence:high` (or `workflow_dispatch`) | Opus | TDD-mandatory draft PR on branch `fix/bot-<issue>-<slug>`. Spec-then-implementation, both required by `bot-tdd-gate.yml`. |
10631063
| Reviewer A | PR opened / synchronized / ready_for_review | Sonnet | Single PR review with line comments, verdict, and `wheels-bot:review-a:<pr>:<sha>` marker. |

docs/contributing/wheels-bot.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,8 @@ loop on the updated PR state.
221221

222222
This is a *coding* stage — Opus model, 60-minute timeout, broad
223223
allowlist with the test runner (mirrors propose-fix's setup). Different
224-
from the analytical Sonnet stages above.
224+
from Reviewer A and Reviewer B, which remain Sonnet-based analytical
225+
stages.
225226

226227
The bot:
227228

@@ -257,11 +258,11 @@ round 11). The advisor reads the full A↔B exchange, the disputed
257258
code, and the canonical references (`CLAUDE.md`, `.ai/wheels/`),
258259
then issues a tie-breaking verdict.
259260

260-
**This is the only stage that runs Opus on a non-coding task.** The
261-
reasoning depth is justified because the advisor's verdict overrides
262-
the analytical reviewers' deadlock — it must be right. Address-
263-
review uses Opus because it modifies code; advisor uses Opus because
264-
it adjudicates code-related disputes Sonnet couldn't resolve.
261+
**The advisor and triage are the two stages that run Opus on
262+
non-coding tasks.** Triage justifies the cost by reading code to
263+
resolve uncertainty before rating confidence; advisor justifies it
264+
because its verdict overrides a deadlocked A↔B exchange — it must be
265+
right. Address-review and propose-fix run Opus for code edits.
265266

266267
The advisor:
267268

0 commit comments

Comments
 (0)