Skip to content

review: #1425 did not fix the CodeRabbit label deadlock — labels: [] does not override the inherited gate #1482

Description

@groupthinking

Summary

c576b54 ("fix(review): stop the inherited label gate deadlocking CodeRabbit auto-review", #1425) merged to main at 20:44 UTC today. It sets reviews.auto_review.labels: [] in .coderabbit.yaml, on the reasoning that setting the schema default explicitly would override the inherited required-labels list.

It does not. The gate is still active.

Evidence

#1478 was opened at 20:55 UTC — eleven minutes after the fix landed, on a base that contains it. CodeRabbit's response:

Review skipped
Auto reviews are limited based on label configuration.
Required labels (at least one) (1): ['architecture-gap', 'bug', 'ci-cd', 'ci/cd', 'copilot-rabbit', 'documentation', 'duplicate', 'enhancement', 'frontend', 'github_actions', 'good first issue', 'help wanted', 'high-priority', 'invalid', 'javascript', 'ml-model', 'needs-triage', 'pipeline-critical', 'placeholder-code', 'priority:high', 'python', 'python:uv', 'question', 'styling', 'tests', 'v0']

Configuration used: Repository YAML (base), Repository UI (inherited), Organization UI (inherited)

Run ID: 1437a307-6667-4b50-851b-45fb34a1e3e4

That is the same ~26-label list .coderabbit.yaml describes in its own comment, still being applied. The "Configuration used" line is explicit that the UI layers are still in effect.

Earlier data points are consistent but were not proof, because they predate the fix — #1439's CodeRabbit commit status read "Review skipped: excluded by label configuration" at 19:12 UTC, ~90 minutes before c576b54 merged. #1478 is the first PR opened after the fix, and it is the one that settles it.

Root cause

.coderabbit.yaml sets inheritance: true. An empty array is evidently treated as "unset" and merged with — not substituted for — the inherited value, so the org/repo UI list survives.

The file's own header already predicts this:

inheritance: true still lets the org-level config layer underneath this file — so any setting this file leaves unset can be silently overridden from the dashboard.

The fix assumed "set explicitly, even at its default" was enough to count as set. For an empty list under a merging inheritance model, it is not.

Why it matters

Proposed fix

Set inheritance: false in .coderabbit.yaml, making the committed file authoritative and stopping the UI layers from contributing the label gate at all.

This is consistent with the file's stated purpose ("Single source of truth for CodeRabbit … so every change is reviewable in a PR") and it already sets its settings explicitly rather than relying on inherited ones.

Caveat worth a human's eye before landing: inheritance: false drops all inherited configuration, not just the label gate. Someone should confirm nothing else is being relied on from the Repository UI / Organization UI layers — that is a dashboard state not visible from the repo, which is why this is filed rather than silently changed.

The alternative — clearing the required-labels list in the CodeRabbit dashboard — also works, but leaves the setting outside version control, which is what this file exists to avoid.

Acceptance criteria

  • A PR opened with no labels receives an automatic CodeRabbit review.
  • The "Configuration used" line no longer reports an inherited label gate.
  • Whatever else the UI layers were contributing is either re-declared in .coderabbit.yaml or confirmed unnecessary.
  • The stale claim in .coderabbit.yaml's comment — that labels: [] overrides the inherited gate — is corrected, so the next reader does not re-derive the same wrong conclusion.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions