fix(ai-review): default opus-model to the bare "opus" alias - #47
Conversation
Drops the pinned version from the review stage's Opus default so the gate always runs the current model in that tier instead of going stale against a hardcoded ID.
There was a problem hiding this comment.
✅ PASS
1 P2 / 0 P3 finding(s) noted — non-blocking.
Confidence: 95 · Merge risk: low
P0: 0 · P1: 0 · P2: 1 · P3: 0
Summary
This is a minimal, well-scoped fix: it changes opus-model's default from the pinned claude-opus-5 to the bare tier alias opus in exactly three places — the README docs table, the action.yml input's declared default, and the shell routing step's ${OPUS:-...} fallback — plus the matching README prose. All three are updated consistently and no stale reference to claude-opus-5 remains anywhere in the repo.
Intent alignment: ✅ Aligned. The PR body states the change precisely ("opus-model now defaults to opus instead of a pinned version... matching the review stage's own routing fallback in the shell step... Updated the README table to match") and the diff implements exactly that, nothing more, nothing less.
P0 — Blockers
None.
P1 — Should Fix
None.
P2 — Nice-to-Have
ai-review/README.md:149(andai-review/action.yml:114/487) — Onlyopus-modelwas switched to a bare tier alias.sonnet-model(claude-sonnet-5) andhaiku-model(claude-haiku-4-5) remain pinned to versioned IDs and are exposed to the exact same "default goes stale against a hardcoded model ID" failure mode this PR just fixed for Opus. Worth a follow-up PR applying the same treatment, so the fix doesn't have to be rediscovered independently for the other two tiers later.
P3 — Nits
None.
Strengths
- Precisely scoped: the diff does exactly what the PR description says and nothing else — no scope creep.
- All three occurrences of the old pinned value were updated together and consistently (docs table, declared input default, and the shell fallback that actually drives runtime behavior), so there's no risk of the README and the runtime default drifting apart.
- Verified no dangling reference to
claude-opus-5remains anywhere in the repository after the change. - Verified no other workflow/consumer in this repo overrides
opus-model, so nothing downstream is broken by the new default. - The PR body's claim that these two lines aren't unit-test-covered checks out —
ai-review/lib/*.test.jscontains no reference to either changed string. - This is a Docs/Config-only change (composite-action default value + doc text, no unit-testable logic), so the missing-tests exemption in the rubric's §12 applies cleanly; no test-coverage gap here.
✅ ai-qa: PASSMerge commit
Posted by |
Summary
opus-modelnow defaults toopusinstead of a pinned version (claude-opus-5), matching the review stage's own routing fallback in the shell step.Why
Avoids the default going stale against a hardcoded model ID —
opusalways resolves to the current model in that tier.Test plan
node --test lib/*.test.js— 145/145 passing (unaffected; these two lines aren't covered by unit tests)ai-reviewrun resolves theopusalias correctly viaclaude-code-action🤖 AI Review — checklist verification
node --test lib/*.test.js— 145/145 passing (unaffected; these two lines aren't covered by unit tests) — Test execution is out of scope for this review session (no toolchain access, per rubric §12 — test_execution is reported as skipped). Structurally confirmed via grep that ai-review/lib/*.test.js contain no references toclaude-opus-5oropus-model, which supports the 'unaffected' claim, but the 145/145 pass count itself could not be independently reproduced without running the suite.ai-reviewrun resolves theopusalias correctly viaclaude-code-action— This is an explicit manual/post-merge verification step (left unchecked by the author) that requires observing a live workflow run; it cannot be checked from static code or tests.Verification evidence:
gh pr view 47 --json headRefOid,baseRefOid; cat .ai-review/manifest.json→ headRefOid and baseRefOid fromgh pr view 47exactly match manifest.json's head_sha/base_sha — confirmed reviewing the correct range.git diff 103518154652db3c4f99170a77bd43f3fc80fd9d d0009200119bcc1e27d3aa9fc1307c5b31993549 -- ai-review/README.md ai-review/action.yml→ 3 one-line hunks: README.md table row defaultclaude-opus-5→opus; action.yml inputdefault:claude-opus-5→opus; action.yml shell fallback${OPUS:-claude-opus-5}→${OPUS:-opus}. No other lines touched.grep -r 'claude-opus-5' (via Grep tool, repo-wide)→ No files found — the removal is complete, no dangling references.grep -r 'opus-model|opus_model' (via Grep tool, repo-wide)→ Only ai-review/README.md, ai-review/action.yml, and an unrelated ADR prose mention (docs/adr/0003) referenceopus-model— no consumer workflow in this repo sets it explicitly.grep -r 'claude-opus-5|opus-model' ai-review/lib/→ No matches — confirms ai-review/lib/*.test.js does not reference the changed strings/lines.Last updated by ai-review · verdict: pass.
✅ ai-qa: PASS
Deploy health: healthy · findings P0 0 · P1 0 · P2 0 · P3 0
Last updated by ai-qa · QA run