Repository navigation
fix(ci): the PR gates accept the readable rationale and let the body override a stale branch - #16053
Merged
Merged
Conversation
Contributor
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Contributor
✅ SSOT Configuration Compliance: Passing🎉 No new hardcoded values of either class — Known backlog in |
4 tasks
5 tasks
Closed
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #16050, #16051.
Thinking Path
Two gates in
.github/workflows/pr-issue-validation.ymlfailed PRs today for reasons that were correct about their own rule and wrong about their premise. Both are in one workflow and one script, so they land together as one review pass and one CI run.#16050 — the batching gate rejects the form people write
check_pr_issue_batching.pyrequiredSingle-issue rationale:with the reason on the same line. A markdown heading with the reason beneath matched nothing.Two independent sessions hit it within four hours — #16018, and #16049 which is the CRITICAL auth fix for #16040. Two authors independently choosing a form the checker rejects is the checker's defect, and the rejected form is the better one: it matches the section style the rest of the body already uses (
## Thinking Path,## What Changed,## Verification).The hint taught the failing shape. It printed the inline form indented, as an example, which reads as illustration rather than exact-match.
#16051 — the issue-link gate trusts a name that cannot be corrected
The gate derives the expected issue from the branch name. Two sessions reserved number 16040 six minutes apart; the loser's branch was already
issue-16040-*, and the number went to a CRITICAL auth issue. They rewrote their commits to the right number — and the gate then failed the PR for not referencing the wrong one, instructing them in its own error message to add it back.A gate whose remediation re-creates the defect is worse than no gate. And there is no in-place fix: GitHub does not allow changing a PR's head branch.
The decision was already made — #14241 accepts the body over the branch, and scoped it to forks on the reasoning that an outside contributor cannot be asked to rename. An internal author cannot either. The fork restriction drew the line at who could rename; the answer is nobody.
What Changed
check_pr_issue_batching.pyaccepts## Single-issue rationalewith prose beneath, scanning past blank lines and stopping at the next heading. The hint now names both forms.pr-issue-validation.ymldropsPR_IS_FORKfrom the body-over-branch escape, and its failure message now calls the branch-derived number a guess, telling the author an explicitCloses #<real issue>overrides it.Verification
31 tests pass. The two that matter are contrasts, because both changes are widenings and the cheap wrong version of each is to widen too far:
## What ChangedThe empty-section case is the load-bearing one. This gate asks whether a human justified standing alone; a fix that matches the heading and stops looking turns it into a keyword check that any PR passes with an empty heading.
The escape's regex was exercised directly:
Closes #16046, #16044(the #16047 case)Refs #16040onlythis self-closes #123So it widens who may override the inference, not what counts as one. A PR linking no issue at all still fails.
Model Used
Opus 5