From 4034502bb3119c8c04d0149ffafcb4326f86fea1 Mon Sep 17 00:00:00 2001 From: Nathan Heskew Date: Wed, 26 Aug 2026 16:53:32 -0700 Subject: [PATCH] ci: exclude ready_for_review from the always-on cancelling arm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Codex follow-up on #2353: ready_for_review is a non-labeled event, so the ALWAYS_ON arm of the concurrency predicate still placed it in the shared cancelling group in always-on mode — a label-opted bot PR's ready-flip could cancel the labeler's in-flight review and then fail author-based authorization. The cancelling set now excludes ready_for_review in BOTH modes; the job gates are unchanged (ready-flips run review, in their own run_id group). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01S94XethbGXpAb4DRKMD4kt --- .github/workflows/claude-review.yml | 2 +- .github/workflows/gemini-review.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/claude-review.yml b/.github/workflows/claude-review.yml index cc90d00c78..25be8d9f31 100644 --- a/.github/workflows/claude-review.yml +++ b/.github/workflows/claude-review.yml @@ -29,7 +29,7 @@ concurrency: # Ineligible events (per the review job's opt-in gate) get a unique # run_id group so they can never cancel an in-flight eligible review — # workflow-level cancel-in-progress fires before job `if:` is evaluated. - group: claude-review-${{ github.event.pull_request.number }}-${{ ((github.event.action == 'labeled' && github.event.label.name == 'claude-review') || (github.event.action != 'labeled' && vars.CLAUDE_ALWAYS_ON == 'true')) && 'eligible' || github.run_id }} + group: claude-review-${{ github.event.pull_request.number }}-${{ ((github.event.action == 'labeled' && github.event.label.name == 'claude-review') || (github.event.action != 'labeled' && github.event.action != 'ready_for_review' && vars.CLAUDE_ALWAYS_ON == 'true')) && 'eligible' || github.run_id }} cancel-in-progress: true jobs: diff --git a/.github/workflows/gemini-review.yml b/.github/workflows/gemini-review.yml index bcab436224..dbd8ae302a 100644 --- a/.github/workflows/gemini-review.yml +++ b/.github/workflows/gemini-review.yml @@ -45,7 +45,7 @@ concurrency: # authorization is author-based, so on a bot-authored PR they could # kill a labeler-authorized run and then be rejected themselves. # Ineligible events get a unique run_id group — see claude-review.yml. - group: gemini-review-${{ github.event.pull_request.number }}-${{ ((github.event.action == 'labeled' && github.event.label.name == 'gemini-review') || (github.event.action != 'labeled' && vars.GEMINI_ALWAYS_ON == 'true')) && 'eligible' || github.run_id }} + group: gemini-review-${{ github.event.pull_request.number }}-${{ ((github.event.action == 'labeled' && github.event.label.name == 'gemini-review') || (github.event.action != 'labeled' && github.event.action != 'ready_for_review' && vars.GEMINI_ALWAYS_ON == 'true')) && 'eligible' || github.run_id }} cancel-in-progress: true jobs: