Skip to content

ci: adopt ai-review-prompts #89 — sonnet-5/xhigh/96-turn review defaults - #2328

Merged
heskew merged 4 commits into
mainfrom
bump-ai-review-prompts-pin
Aug 26, 2026
Merged

ci: adopt ai-review-prompts #89 — sonnet-5/xhigh/96-turn review defaults#2328
heskew merged 4 commits into
mainfrom
bump-ai-review-prompts-pin

Conversation

@heskew

@heskew heskew commented Aug 25, 2026

Copy link
Copy Markdown
Member

Bumps every ai-review-prompts pin (claude-review, gemini-review, claude-mention, claude-issue-to-pr, validate-caller-workflows) to be549ad — current main, which carries:

  • ai-review-prompts#90: cost gates — draft PRs skip review until flipped ready (label opts a draft in), mechanical diffs skip before the agent runs, reasoning effort scales with diff size (≤60 → high, ≤1500 → xhigh, larger → max), synchronize runs debounce 120s. Both review callers gain the ready_for_review trigger type.
  • #89: fleet defaults — claude-sonnet-5, 96-turn review budget, 30m timeouts.
  • #88: sibling-implementations and cannot-fail-test lenses; #85/#87: calibration prompt edits.

Expected on this PR: the claude-review check errors with the workflow-must-match-default-branch validation — normal for workflow-editing PRs.

Merge order: this PR first, then #2330 and #2331 (the release-branch syncs, refreshed to matching content).

🤖 Generated with Claude Code

https://claude.ai/code/session_01S94XethbGXpAb4DRKMD4kt

…op the sonnet-5 canary override

Bump every ai-review-prompts pin (claude-review, gemini-review,
claude-mention, claude-issue-to-pr, validate-caller-workflows) to
8401fe1, which raises the fleet defaults: claude-sonnet-5 model,
--effort xhigh, 96-turn review budget (mention 96, issue-to-pr 100),
30m timeouts. The claude-review model: claude-sonnet-5 canary override
is now the fleet default, so it comes out.

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.

/#87 calibration edits

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S94XethbGXpAb4DRKMD4kt
…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 f9351d54 (base main) — 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
@heskew
heskew merged commit f59fca0 into main Aug 26, 2026
9 of 11 checks passed
@heskew
heskew deleted the bump-ai-review-prompts-pin branch August 26, 2026 15:40
heskew added a commit that referenced this pull request Aug 26, 2026
* ci(v5.1): sync bot caller workflows with main

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

* ci: adopt ai-review-prompts #90 cost gates (pin be549ad) + ready_for_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

* ci: admit ready_for_review on label-opted PRs in opt-in mode

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

* ci: keep ineligible runs out of the review concurrency group

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

* ci: only the provider's own label makes a labeled run eligible

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
heskew added a commit that referenced this pull request Aug 26, 2026
* ci(v5.2): sync bot caller workflows with main

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

* ci: adopt ai-review-prompts #90 cost gates (pin be549ad) + ready_for_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

* ci: admit ready_for_review on label-opted PRs in opt-in mode

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

* ci: keep ineligible runs out of the review concurrency group

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

* ci: only the provider's own label makes a labeled run eligible

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

* ci: ready_for_review runs review but never cancels

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
heskew added a commit that referenced this pull request Aug 27, 2026
* ci(v5.1): sync bot caller workflows with main

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

* ci: adopt ai-review-prompts #90 cost gates (pin be549ad) + ready_for_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

* ci: admit ready_for_review on label-opted PRs in opt-in mode

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

* ci: keep ineligible runs out of the review concurrency group

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

* ci: only the provider's own label makes a labeled run eligible

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

* ci: ready_for_review runs review but never cancels

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

* ci: exclude ready_for_review from the always-on cancelling arm (see #2357)

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
heskew added a commit that referenced this pull request Aug 27, 2026
* ci(v5.2): sync bot caller workflows with main

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

* ci: adopt ai-review-prompts #90 cost gates (pin be549ad) + ready_for_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

* ci: admit ready_for_review on label-opted PRs in opt-in mode

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

* ci: keep ineligible runs out of the review concurrency group

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

* ci: only the provider's own label makes a labeled run eligible

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

* ci: ready_for_review runs review but never cancels

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

* ci(v5.2): sync the always-on ready_for_review cancelling fix (see #2357)

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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