ci: run Claude Opus 5.5 with a supported CLI - #3432
Conversation
Pin Claude Code 2.1.282 and update the Claude action in each workflow before selecting Opus 5.5.
The Claude CLI package has no regular dependencies, and all native optional packages are version pinned to 2.1.282. Record the narrow Zizmor exception for this explicit compatibility pin.
There was a problem hiding this comment.
Findings marked 🟡 are optional suggestions and need no follow-up push.
Additional findings (outside the current diff — GitHub can't attach inline comments there):
-
🟡
docs/klaud.md— Maintainers reading docs/klaud.md (and docs/klaud_zh.md) after this merge see stale model and action-pin info that no longer matches the workflows. Line 11 still says the PR review usesclaude-opus-5and candidate execution usesclaude-fable-5-1, and the table at line 121 still listsanthropics/claude-code-actionasv1.0.218/0d0e0876d3ea, but this diff changes klaud-plan.yml and klaud-candidate.yml toclaude-opus-5-5and bumps the action pin tov1.0.234/9171db3e57d6everywhere. Fix: update docs/klaud.md and its Chinese counterpart docs/klaud_zh.md (line 11 prose and the Action/Version/Commit table) to match the new model name and action pin, per AGENTS.md's rule to update the nearest English guide plus its Chinese counterpart when implementation changes.Why this was flagged
AGENTS.md:8 states: repository workflows are authoritative and documentation disagreeing with implementation must be updated (nearest English guide plus its Chinese counterpart). This diff changes klaud-plan.yml's and klaud-candidate.yml's
--modelflag to 'claude-opus-5-5' and the anthropics/claude-code-action pin to 9171db3e57d6a3140a37ddc2ba92788584e0ead6 (v1.0.234) in all five workflow files. docs/klaud.md:11 and docs/klaud_zh.md:11 still say the PR review usesclaude-opus-5and candidate execution usesclaude-fable-5-1; docs/klaud.md:121 and docs/klaud_zh.md:121 still list the action pin as v1.0.218 / 0d0e0876d3ea. A maintainer or contributor consulting these guides after merge gets incorrect model/version info, violating the AGENTS.md doc-sync rule; no safeguard catches doc drift automatically.Verification: normal (documentation regression the base does not have). CLAUDE.md points to AGENTS.md, whose rule at AGENTS.md:8 states: "Repository source, schemas, workflows, launchers, and collectors are authoritative. If documentation disagrees with implementation, follow the implementation and update the nearest English guide plus its Chinese counterpart." The diff changes the implementation but not…
| - name: Install Claude Code 2.1.282 | ||
| id: claude_cli | ||
| if: vars.PRIORITY_SCHEDULER_ENABLED == 'true' && github.event_name == 'pull_request' | ||
| run: | | ||
| npm install --prefix "$RUNNER_TEMP/claude-code" --no-audit --no-fund @anthropic-ai/claude-code@2.1.282 | ||
| claude_cli="$RUNNER_TEMP/claude-code/node_modules/.bin/claude" | ||
| test "$("$claude_cli" --version)" = "2.1.282 (Claude Code)" | ||
| echo "path=$claude_cli" >> "$GITHUB_OUTPUT" |
There was a problem hiding this comment.
🔴 The new Install Claude Code step has no continue-on-error, so an npm hiccup or a CLI version mismatch now hard-fails the job even though the Claude action step right after it still has continue-on-error: true. In run-sweep.yml this is inside the 'setup' job (run-sweep.yml:269-276); every eval job is gated on needs.setup.result == 'success' (run-sweep.yml:860), so a flaky install now skips the whole sweep instead of degrading to the '["patchwork"]' fallback at run-sweep.yml:329. Same gap in klaud-plan.yml:69-76 (continue-on-error at klaud-plan.yml:80) and klaud-candidate.yml:65-71 (continue-on-error at klaud-candidate.yml:74). Fix: add continue-on-error: true to each new Install step so it fails no harder than the step it precedes. [also at: .github/workflows/klaud-plan.yml:75 - Maintainers now get a hard job failure (and skipped downstream steps) from a transient npm/CLI issue, where the base only failed the Claude call itself.]
Why this was flagged
Trigger: an npm registry blip or claude-code version drift makes the test "$("$claude_cli" --version)" = "2.1.282 (Claude Code)" assertion fail in the 'Install Claude Code 2.1.282' step (run-sweep.yml:269-276, klaud-plan.yml:69-76, klaud-candidate.yml:65-71). That step lacks continue-on-error, so GitHub Actions marks the whole job failed regardless of later steps' continue-on-error. In run-sweep.yml this step lives in 'setup'; 'Classify priority criteria' (run-sweep.yml:277-282) has continue-on-error: true and 'Normalize priority classification' (run-sweep.yml:319-331) already falls back to '["patchwork"]', proving the workflow was built to tolerate Claude-call failures. But the Install step now fails 'setup' outright, so every downstream eval job gated on needs.setup.result == 'success' (run-sweep.yml:860) is skipped. Before this diff there was no Install step, so only the continue-on-error-protected action could fail, and 'setup'…
Verification: normal (conflicts with stated purpose, partially): merging introduces a new hard-fail point that the base branch does not have, in code whose whole design is best-effort/non-blocking. Facts, run-sweep.yml: - The new step (269-276) Install Claude Code 2.1.282 has no continue-on-error; line 275 test "$("$claude_cli" --version)" = "2.1.282 (Claude Code)" (and the npm install at 273)…
Restore Claude Opus 5.5 in the six Claude Code calls changed by #2805. Pin the action to v1.0.234 and install Claude Code 2.1.282 explicitly before each call, passing its executable path to the action.
The earlier sign-off failure used Claude Code 2.1.265. Anthropic's reported compatibility error for Opus 5.5 requires 2.1.280 or newer; the workflow previously installed the older stable channel. The explicit version check makes a CLI mismatch fail before invoking the model.
Validation:
claude-opus-5-5(is_error: false).actionlintpassed for all five workflows after filtering the repository's existing$/.github/workflows/...reusable-workflow references.git diff --checkpassed.