From 02b4986bd1fa1ea7e6e138b56a31875a716776a1 Mon Sep 17 00:00:00 2001 From: Amp Date: Sun, 20 Sep 2026 14:12:38 +0000 Subject: [PATCH 1/2] fix(ci): queue pending PR review reconciliation runs Preserve serialized review-state writes while allowing up to 100 pending runs instead of replacing the previous pending event. Add a regression assertion for the concurrency configuration. Fixes Zoo-Code-Org/Zoo-Code#1707 Amp-Thread-ID: https://ampcode.com/threads/T-01a0bf0f-6f0a-724b-8d1f-69c1f1bfe3fc --- .github/workflows/label-pr-review-state.yml | 3 +++ src/services/__tests__/pr-review-state-workflow.test.ts | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/.github/workflows/label-pr-review-state.yml b/.github/workflows/label-pr-review-state.yml index 98f7428c7a..b6cda9b84a 100644 --- a/.github/workflows/label-pr-review-state.yml +++ b/.github/workflows/label-pr-review-state.yml @@ -35,7 +35,10 @@ permissions: statuses: write concurrency: + # Serialize sweeps and PR events together, but do not replace pending runs (#1707). + # GitHub allows up to 100 waiting runs with queue: max; excess arrivals are cancelled. group: label-pr-review-state + queue: max cancel-in-progress: false jobs: diff --git a/src/services/__tests__/pr-review-state-workflow.test.ts b/src/services/__tests__/pr-review-state-workflow.test.ts index 9cb178f774..49a04ebc3b 100644 --- a/src/services/__tests__/pr-review-state-workflow.test.ts +++ b/src/services/__tests__/pr-review-state-workflow.test.ts @@ -442,6 +442,14 @@ function latestGateStatus(result: Awaited>) { } describe("PR review-state workflow", () => { + it("queues reconciliation bursts without replacing pending runs or overlapping writers", () => { + expect(workflow.concurrency).toEqual({ + group: "label-pr-review-state", + queue: "max", + "cancel-in-progress": false, + }) + }) + it("uses supported CodeRabbit access and review controls", () => { expect(codeRabbitConfig.chat.allow_non_org_members).toBe(false) expect(codeRabbitConfig.reviews.pre_merge_checks.override_requested_reviewers_only).toBe(true) From 0859a75b89d6858b3fdd9175b8abf17e0eabdb66 Mon Sep 17 00:00:00 2001 From: Amp Date: Mon, 21 Sep 2026 18:14:46 +0000 Subject: [PATCH 2/2] docs(ci): cite supported reconciliation queue syntax Amp-Thread-ID: https://ampcode.com/threads/T-01a0c52b-dceb-726a-912a-b0ac5db6bae5 --- .github/workflows/label-pr-review-state.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/label-pr-review-state.yml b/.github/workflows/label-pr-review-state.yml index b6cda9b84a..3ecddba298 100644 --- a/.github/workflows/label-pr-review-state.yml +++ b/.github/workflows/label-pr-review-state.yml @@ -37,6 +37,9 @@ permissions: concurrency: # Serialize sweeps and PR events together, but do not replace pending runs (#1707). # GitHub allows up to 100 waiting runs with queue: max; excess arrivals are cancelled. + # Supported since May 2026 (older actionlint versions may reject this property): + # https://github.blog/changelog/2026-05-07-github-actions-concurrency-groups-now-allow-larger-queues/ + # Keep one group: per-PR groups would let sweeps and PR events write concurrently. group: label-pr-review-state queue: max cancel-in-progress: false