feat(ci): enforce the ready-for-review gate - #4188
Conversation
The gate has run dry since it merged and its verdicts hold up: the PRs it marks ready all reference an open issue, are not drafts, and are not waiting on their author. Nothing else has ever applied this label to a fresh PR, so until now the label could not be used as a review queue. No LIMIT, unlike the issue nudge. Applying a label notifies nobody and is trivially reversible, so there is no first-run blast radius to bound. A maintainer who removes it is respected: the sweep will not reapply a label a human took off. Co-authored-by: Isaac Signed-off-by: Dhruv Gupta <dhruv.gupta@databricks.com>
|
|
🏷️ Doc impact: The change only flips a CI workflow's ENFORCE flag and comments for a ready-for-review label gate, an internal CI/tooling change with no user-facing surface or integration affected. Auto-classified on merge. Set the label manually before merging to override. · run |
Related issue
Part of OMNI-2214 / OMNI-2315. Flips the flag on the gate merged in #4179; this PR
declares Test / CI below, which is one of the exempt types.
Summary
The ready-for-review gate has run dry since it merged, and its verdicts hold up: the
PRs it marks ready all reference an open issue, are not drafts, and are not waiting
on their author. Verified twice against live GitHub with the label write rigged to
throw, so "nothing was touched" was proven rather than assumed.
Until this flips, no open PR carries
waiting-for-review— the only entrance wasthe author-reply handoff, so a fresh PR that references an issue got nothing, and the
label cannot yet be used as the review queue it exists to be.
No
LIMIT, unlike the issue nudge. Applying a label notifies nobody and istrivially reversible, so there is no first-run blast radius to bound. The nudge
needed a cap because it comments on a contributor's PR; this does not.
A maintainer who removes the label is respected: the sweep will not reapply a label a
human took off (
removedByHuman), and it ignores the bot's own mutual-exclusionremovals.
Four PRs qualify at the time of writing: #4187, #4178, #4128, #4113.
Test Plan
node .github/workflows/ready-for-review.test.jspasses (all predicates andexclusions: PR / closed / draft references rejected, quoted examples rejected,
drafts skipped,
waiting-on-authorwins, idempotent, human-removal respected,bot-removal ignored, write failure does not abort the sweep).
Done (enforce=false). below bar=22 READY=3 skip=2, with the label write rigged tothrow and no write attempted.
to end on a real PR, including mutual exclusion in both directions.
Demo
N/A. One environment variable in a CI workflow.
Type of change
Test coverage
Coverage notes
Not unit-testable: this changes a workflow environment value, and both the enforcing
and dry-run paths are already covered by the existing tests. Verification was the
live dry runs described above.