Skip to content

ci(v5.2): sync bot caller workflows with main - #2331

Merged
heskew merged 6 commits into
v5.2from
sync-review-workflows-v5.2
Aug 26, 2026
Merged

ci(v5.2): sync bot caller workflows with main#2331
heskew merged 6 commits into
v5.2from
sync-review-workflows-v5.2

Conversation

@heskew

@heskew heskew commented Aug 25, 2026

Copy link
Copy Markdown
Member

claude-code-action validates a PR's caller workflows against the default branch, so drifted copies on v5.2 fail the review check on v5.2-targeted PRs (v5.1 has been failing every review this way — e.g. #2319 today). Content matches #2328 — byte-identical to main once #2328 merges, so merge #2328 first, then this.

🤖 Generated with Claude Code

https://claude.ai/code/session_01S94XethbGXpAb4DRKMD4kt

Content matches bump-ai-review-prompts-pin (#2328) — identical to main
once that merges.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S94XethbGXpAb4DRKMD4kt
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

…review trigger

Draft PRs skip review until flipped ready (label still opts one in),
mechanical diffs skip pre-run, reasoning effort scales with diff size
(60/high, 1500/xhigh, else max), synchronize runs debounce 120s.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S94XethbGXpAb4DRKMD4kt
@cb1kenobi

Copy link
Copy Markdown
Member

Reviewed b705a473 (base v5.2) — no issues found. This PR looks good, nice job!

Verified rather than assumed:

  • The new ref is a real unification. The five callers previously pointed at different ai-review-prompts SHAs; they all converge on be549ad0, and the uses:@<sha> / ai-review-prompts-ref: pair stays in sync in every file — which is the whole point of the duplicated-SHA comment those files carry.
  • ready_for_review is correctly paired with the upstream draft-skip. be549ad0's _claude-review.yml gates on github.event.pull_request.draft == false, and its own comment says "callers add ready_for_review to their trigger types". Without this trigger a draft flipped to ready would never get reviewed. The job if: still resolves correctly for the new action value.
  • Dropping the model: claude-sonnet-5 canary is a genuine no-op. I fetched _claude-review.yml at be549ad0: the model input now defaults to claude-sonnet-5, so removing the override changes nothing. (effort defaults to xhigh with a 60 high / 1500 xhigh / * max ladder — the live run on this PR picked --effort high for a 32-line diff, so the laddering is working.)
  • All three sibling PRs in this repo produce byte-identical workflow files (hashed the five files at each head). So the family lands one consistent state across main, v5.1 and v5.2.

On the red review / review check — expected, not a defect. It fails with Workflow validation failed. The workflow file must exist and have identical content to the version on the repository's default branch. Any PR that edits these workflows necessarily differs from the copy on the default branch, so claude-code-action self-validation fails on the PR and clears on merge; the action's own message calls this normal.

One operational consequence worth knowing: that comparison is against the default branch, not the PR's base. Merging the main PR first, then the v5.1/v5.2 ones, keeps the window short — otherwise the release branches sit red against main's older copy until main catches up. Since the resulting files are identical, this is purely about ordering.

Any other red checks here are integration/cluster tests, which a .github/workflows/-only diff cannot influence — pre-existing flake, unrelated to this change.


Generated by Barber AI

@kriszyp kriszyp left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🤖 Reviewed with Codex

Comment thread .github/workflows/claude-review.yml
Comment thread .github/workflows/gemini-review.yml
kriszyp review finding on the pin-bump PR: with *_ALWAYS_ON unset, the
caller gate admitted only labeled events, so a PR opted in by label
while draft never resumed review when flipped ready — the event died at
the caller gate. Admit ready_for_review when the opt-in label is still
present.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S94XethbGXpAb4DRKMD4kt
kriszyp review finding: workflow-level cancel-in-progress fires before
job if:, so in opt-in mode an ineligible event (a push, or a ready-flip
without the opt-in label) cancels an in-flight label-triggered review
and then skips — silently losing the requested review. Ineligible runs
now take a unique run_id group and can never cancel an eligible one;
eligible runs keep cancelling each other (the debounce contract).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S94XethbGXpAb4DRKMD4kt

@kriszyp kriszyp left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🤖 Reviewed with Codex

Comment thread .github/workflows/claude-review.yml Outdated
Comment thread .github/workflows/gemini-review.yml Outdated

@kriszyp kriszyp left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🤖 Reviewed with Codex

Comment thread .github/workflows/claude-review.yml Outdated
Comment thread .github/workflows/gemini-review.yml Outdated
Review finding (Codex + kriszyp, independently): the eligibility
predicate admitted every labeled event, so in opt-in mode an unrelated
label applied mid-review joined the eligible concurrency group,
cancelled the running review, and the replacement then failed the
reusable's exact-label gate — no completed review. The same
unrelated-label cancellation existed in always-on mode before this
series (any labeled event shared the group and authorize then skipped).

The labeled branch now requires the provider's own label, in both the
concurrency predicate and the review job gate, and unrelated-label
events are ineligible in both modes.

Event matrix (opt-in / always-on):
- labeled(provider label): eligible / eligible — supersedes in-flight
- labeled(other): ineligible / ineligible (was: cancelled + no review)
- synchronize: ineligible / eligible
- ready_for_review + label: eligible / eligible
- ready_for_review, no label: ineligible / eligible
- opened, reopened: ineligible / eligible

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S94XethbGXpAb4DRKMD4kt
kriszyp follow-up finding: the label-opted ready_for_review event sat
in the shared eligible concurrency group, so on a bot-authored PR it
could cancel the trusted labeler's in-flight review and then be
rejected by author-based authorization — no completed review. The
cancelling set (concurrency predicate) now excludes ready_for_review;
the running set (job gate) keeps it, so trusted-author ready-flips
still review, without the power to cancel. Revisit if the reusable
gains persisted-label authorization.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S94XethbGXpAb4DRKMD4kt
@heskew
heskew merged commit f12a1c0 into v5.2 Aug 26, 2026
40 of 43 checks passed
@heskew
heskew deleted the sync-review-workflows-v5.2 branch August 26, 2026 23:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants