Repository navigation
fix(pr-pipeline): keep needs-human a review lane holds in clear-escalations - #9313
Conversation
…ations clear-escalations treats bot comments as silence and reads markers only on lanes App comments, so a review lane's hold that sat under the App's own needs-human label was cleared with the escalation. The sweep now keeps the label while a review-lane hold comment (a line opening `<!-- claude-lane-hold lane=`, by claude[bot] or by github-actions[bot] ending in the `claude-lane:` footer) was written or edited since the label was last removed. A person unlabeling lifts the hold, so an older hold no longer blocks a later escalation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
claude-security-review reviewed No security findings in this pull request. I read the diff through The change makes
The register file critical-findings: 0 |
|
claude-review reviewed No findings. I read the full diff (
Minor observation, not a finding: any |
Refs: #9276
Summary
The pr-merge
clear-escalationssweep can takeneeds-humanoff a pull request while a review lane is holding it. It now keeps the label whenever a review-lane hold comment was written or edited since the label was last removed. This is PR 2 of the #9276 plan: once the review lanes applyneeds-humanthemselves, the escalation sweep must not lift that hold.Fix
labeledevent, so its hold can sit under the App's own label, and a clearing pr-unblock or pr-merge escalation removed it.verdict()now checks, right after the labeled-actor check and before both the pr-unblock path and the pr-merge head-moved path, for a review-lane hold: a comment with a line opening theclaude-lane-hold lane=HTML-comment marker, authored byclaude[bot], or bygithub-actions[bot]when its last non-blank line is theclaude-lane: <lane>footer. That is the same lane-comment rule as feat(pr-pipeline): run the security review on pr-review-cli with key-first funding #9307'saddress-feedback.mjs(LANE_FOOTER). It is matched by login plustype: Bot, because timeline items carry no author id field.unlabeledevent (any time, when there is none). A person removing the label is the approval, so an older hold does not block a later escalation, but a hold the lane edits afterwards does. A tie or an unparsable time keeps the label.Verification
node --test .github/scripts/pr-merge/clear-escalations.test.mjs: 34 pass, 0 fail. The 6 new tests were written first: 4 failed before the guard and the 2 control cases passed. They cover:github-actions[bot](with footer) orclaude[bot]hold surviving a pr-unblock escalation that would otherwise cleargithub-actions[bot]marker or another bot's marker not countingnpm testin.github/scripts/pr-merge: 163 pass, 0 fail.scripts/check-affected.sh --tests: 9 passed, 5 skipped.Related
ci-statusfails whileneeds-humanis on.claude-lane:footer rule. Follow-up once it merges: share one lane-comment predicate instead of the copiedLANE_FOOTER.🤖 Generated with Claude Code