From 87da02ee7ea8de730e9c9a4d8952c9724473b105 Mon Sep 17 00:00:00 2001 From: Roomote Date: Thu, 10 Sep 2026 02:22:59 +0000 Subject: [PATCH] fix: preserve PR labels while mergeability is pending --- .github/workflows/label-pr-review-state.yml | 7 +++++-- src/services/__tests__/pr-review-state-workflow.test.ts | 8 +++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/label-pr-review-state.yml b/.github/workflows/label-pr-review-state.yml index d2c24ce3c0..9426ec4279 100644 --- a/.github/workflows/label-pr-review-state.yml +++ b/.github/workflows/label-pr-review-state.yml @@ -721,8 +721,11 @@ jobs: continue; } if (latestPrDetail.mergeable === null || latestPrDetail.mergeable_state === 'unknown') { - desiredLabel = null; - phase = 'mergeability-pending'; + core.info(`PR #${pr.number}: mergeability pending — preserving current state labels`); + await updateReviewGate(pr, 'mergeability-pending', false); + await setCodeRabbitReviewActive(pr, false); + await updateReviewGuide(pr, 'mergeability-pending', existingGuide); + continue; } } diff --git a/src/services/__tests__/pr-review-state-workflow.test.ts b/src/services/__tests__/pr-review-state-workflow.test.ts index abc77eed2a..8b7797ac77 100644 --- a/src/services/__tests__/pr-review-state-workflow.test.ts +++ b/src/services/__tests__/pr-review-state-workflow.test.ts @@ -957,10 +957,10 @@ describe("PR review-state workflow", () => { expect(result.addLabels).toHaveBeenCalledWith(expect.objectContaining({ labels: ["has-conflicts"] })) }) - it("does not tag a PR awaiting maintainer while mergeability is unknown", async () => { + it("preserves the current state while mergeability is unknown", async () => { const result = await runWorkflow({ eventName: "push", - labels: ["awaiting-maintainer"], + labels: ["awaiting-maintainer", "coderabbit-review-active"], mergeabilitySequence: [ { mergeable: null, mergeableState: "unknown" }, { mergeable: null, mergeableState: "unknown" }, @@ -975,9 +975,11 @@ describe("PR review-state workflow", () => { ], }) - expect(result.removeLabel).toHaveBeenCalledWith(expect.objectContaining({ name: "awaiting-maintainer" })) + expect(result.removeLabel).not.toHaveBeenCalledWith(expect.objectContaining({ name: "awaiting-maintainer" })) + expect(result.removeLabel).toHaveBeenCalledWith(expect.objectContaining({ name: "coderabbit-review-active" })) expect(result.addLabels).not.toHaveBeenCalledWith(expect.objectContaining({ labels: ["awaiting-maintainer"] })) expect(latestGateStatus(result)?.description).toContain("calculating mergeability") + expect(latestGuide(result)).toContain("calculating mergeability") }) it("routes CodeRabbit change requests back to the author", async () => {