Repository navigation
fix(pr-pipeline): honor Hold: lines and lane escalations on owner PRs in address-feedback - #10955
Conversation
…and a lane-escalated needs-human The select job now re-reads an adopted owner PR's body when the round starts and skips awaiting-human on a `Hold:` line added after dispatch, with the same HOLD_LINE ownerSkip uses (moved to address-feedback.mjs and re-exported from feedback-dispatch.mjs for fix-ci-dispatch.mjs). On an adopted owner PR the human-gated label now holds an address-feedback dispatch and select whoever put it on, a lane escalation included; a write-access trusted fix request still dispatches and is worked. Lanes App PRs keep working past a lane escalation's label. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q3ucKDVyHvpcU5cfU8
…lation rule Replace the any-source human-gate on adopted owner PRs with the rule fix-ci already applies there: gate-source.mjs prHold (laneEscalationAllows), so a lane escalation's needs-human holds an address-feedback dispatch and select only after address-feedback's own escalation or once a person spoke after the label went on. A write-access trusted fix request still dispatches and is worked; lanes App PRs still read the escalation through gateSource alone. feedback-dispatch's API gains the review-comment and review listings prHold's reviewReader reads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q3ucKDVyHvpcU5cfU8
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. critical-findings: 0 I read the full diff, the PR context, and the unchanged This change only narrows what
Nothing here widens who is trusted, a token's scope, the kill switch, or a merge hold. The behaviour change only adds holds. No instruction-surface deletions and no plugin manifest changes are in the diff, so there are no Spend: none of this changes models, turn limits or schedules. |
|
claude-review reviewed No blocking or advisory findings. I read the diff and the PR context, and checked the changed What I checked
Security-sensitive paths in the diff: the touched files This change spends no paid plan, billing or other charge-bearing setting, so I set no hold. |
|
The unattended merge path enqueued this pull request at head |
Refs: #10848
Summary
The security review on #10848 (#10848 (comment)) found two gaps where address-feedback on an adopted owner PR could act against a person's hold:
Hold:body line added after the dispatcher adopted an owner PR was not re-checked when the round started.select()(address-feedback.mjs) now re-checks theHold:line on owner PRs, asapply-patch.mjs:256-264already does before the push.prHoldrule (gate-source.mjs), so an owner PR is worked only as that rule lets fix-ci work it.Fix
address-feedback.mjsselect(): on an owner PR, a body line startingHold:(theHOLD_LINEregex, now defined here and re-exported byfeedback-dispatch.mjsforfix-ci-dispatch.mjs) skips the round; on an owner PR it gates withprHoldinstead of passing lane escalations through.feedback-dispatch.mjs: the dispatcher gates owner PRs with the sameprHoldcall and its review reader, so dispatch and select agree.docs/conventions/pr-pipeline/README.mdstates both rules.Verification
node --testrun inside.github/scripts/pr-unblock/(the package's owntestscript) after mergingorigin/main: 980 tests, 980 pass, 0 fail.address-feedback.test.mjsandfeedback-dispatch.test.mjscover a lateHold:line and a lane-escalated human-gated owner PR.node --test .github/scripts/pr-unblock/from the repository root, which Node v24.21.0 refuses with MODULE_NOT_FOUND (it treats the directory as a module); the same tests ran from inside the directory instead.Related
🤖 Generated with Claude Code
https://claude.ai/code/session_01VQb9Q3ucKDVyHvpcU5cfU8