Repository navigation
feat(pr-pipeline): turn on review-lane holds and require both review lanes in ci-status - #9361
Conversation
…lanes in ci-status Both review callers move to pr-review-cli v0.64.0 with hold-label needs-human and the four trust-gate hold paths. ci-status requires a counted review from each lane on the head, fails a review-lane hold lifted by anyone but a trusted person, and pr-feedback-dispatch re-runs ci-status when a review lane completes. fix-ci keys on ci-lanes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nly its comment Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 89819d5fd2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
claude-security-review reviewed Security review: PR #9361 (head 44dc7ae)I found no security issues in this pull request. critical-findings: 0 I read the whole diff (16 files) and the PR context. I read the workflow changes, the dispatch script change and the docs in full. I read the new and changed test suites only as far as they pin those step bodies, because they are test code. Reviewed
Manifest check
Instruction-surface check
Minor, not reported as findings
No hold is needed. The diff touches none of the trust-gate paths ( |
|
claude-review reviewed No findings on the code-review lane. What I read. I read the PR context and diff lines 1–1072 of 1649. That covers the changelog fragment, all workflow changes ( What I checked against the repository at the head.
Plugin manifests. The diff changes no Closing issue. The PR says Hold. None. The change adds no model call, raises no limits, and touches no |
…count lifted Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… requirement Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lanes status Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e path Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…#198) Refs: melodic-software/claude-code-plugins#9276 ## Summary PR 5 of the #9276 plan: mirrors melodic-software/claude-code-plugins#9361 into the sandbox so the canaries can run here. ## Fix - Both review callers move to ci-workflows `pr-review-cli.yml` v0.64.1 (`9aca743c`), lanes `code` and `security`, with `hold-label: needs-human` and the trust-gate `hold-paths`, the reviews role's key and subscription secrets, and a `kill-switch` job each. No `resolve-model` job: the reusable's default model. - ci-status gains #9361's three steps verbatim (human-gated label, hold lifted by an untrusted account, both review lanes on this head), a draft note, the permissions they read with, and the `ready_for_review`, `labeled` and `unlabeled` triggers. - pr-feedback-dispatch.yml gains #9361's `rerun-ci-status` job; `scripts/lanes/check-sync.sh` marks that file adapted until the next full resync. ## Verification actionlint passes on the four workflows. The canaries run after merge, since the listener runs only from main. ## Related - melodic-software/claude-code-plugins#9361 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Refs: #9276
Summary
PR 6 of the #9276 plan: turn on review-lane holds. Both review lanes now add
needs-humanwhen they hold a pull request, and ci-status, the one required check, requires a counted review from each lane on the head (github-iac ADR 0017). Under OD-8 there is nolane-offjob: a lane the kill switch stopped passes.Fix
pr-review-hosted.yml,pr-review-security-hosted.yml): pinpr-review-cli.ymlat9aca743c4ed9aaf7870288a36586c3994e9321e4 # v0.64.1. Both sethold-label: needs-humanand the samehold-paths:.github/standards/trusted-actors/**,.github/actions/check-trusted-trigger/**,**/CODEOWNERSand**/.gitmodules. Check names,docs-only-paths,cancel-in-progress: falseand secrets are unchanged. v0.63.1 to v0.64.1 is the hold step (ci-workflows#864) and a fix that reds the status job on a failed publish or hold write in comments mode (ci-workflows#868).pull_requestrun of the caller on the head, then that run's latest jobs. The jobs are the GitHub Actions check runs, and reading them through the run keeps out runs of other workflows. The status job must have succeeded and itsApply the holdstep must have run, so a summary-mode run or a run with no hold label never counts.Report the kill switch(OD-8). A failed kill-switch job fails.labeledevent bygithub-actions[bot]/claude[bot], whichever is later. The first removal of the label after it must be by ahumanof the base's trusted-actor list; otherwise the step fails. The event anchor means deleting the comment does not lift the hold. A later removal belongs to a later label, such as an escalationclear-escalationslifts.pr-feedback-dispatch.ymlrerun-ci-status(actions: write,pull-requests: read): it runs when either review caller completes on an open same-repository PR still at that head. Skipped runs, non-PR events and forks do not start it. It re-runs only the ci-status job of the newestpr-require-checksrun on the head. A ci-status that has not started yet is left alone, because it reads the reviews when it starts. One already in progress is polled every 60 s for at most 10 min. perf(pr-pipeline): skip pr-feedback-dispatch jobs that can only find nothing #9345's job gates are unchanged.ci-lanescommit status (written bygithub-actions[bot]), not on ci-status. Without this, every lanes App PR would summon fix-ci while its reviews ran, because the new step reds ci-status with no label on the PR. Hold-label filtering was already in place.timeout-minutesgoes from 5 to 7 for the new reads' retry sleeps.Verification
scripts/ci-review-lanes.test.sh(34),scripts/ci-hold-lifted-by.test.sh(30) andscripts/ci-rerun-ci-status.test.sh(34) run the step bodies against stubgh.scripts/ci-hold-human-gated.test.sh(29) covers the new outputs, andworkflow-gates.test.mjscovers the rerun gate. All of them fail on the base workflows.fix-ci-dispatch.test.mjsgains two cases that fail on the base code, a red ci-status over greenci-lanesand aci-lanesfailure or error. The fixtures indispatch.test.mjs,callers.test.mjsanddispatch-limits.test.mjsmove toci-lanes, and 684 node tests pass.scripts/check-affected.shpasses (10 passed, 3 skipped). actionlint is clean, zizmor reports no findings, the runner policy passes and lane coverage passes.Related
allowed-bot-sender-idsstay red until a trusted person pushes to the head.🤖 Generated with Claude Code