Repository navigation
chore(pr-pipeline): turn off the agent App trust-path and exempt-author path holds - #11068
Conversation
Owner decision Q21 (2026-10-29): no path holds until open issues and pull requests reach zero. merge.trust-path-hold-apps now names only trust-path-hold-off[bot], a login no App holds, so ci-status's inline App hold and ci-workflows' pr-require-checks-trust-paths (through the regenerated .github/trust-path-hold.json) hold nothing. The list keeps one entry because the shared workflow fails on an empty one; listing melodic-agent[bot] again restores the hold. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…holds Owner decision Q21 (2026-10-29): no path holds for any author, Dependabot included, until open issues and pull requests reach zero. scripts/sync-hold-floor.py now writes ci-status's exempt-author hold_patterns only while merge.diff-check.path-holds is true, and an empty list otherwise. This repository sets the key false, with the same pr-pipeline.yaml and schema lines #11058 adds, so a Dependabot, release-App or standards-sync-App pull request is no longer held for changing a trust-gate path. Setting the key true restores the hold. The tests now check the hardened list as the generator writes it with the switch on, run the exempt-author cases against it, and check that the committed step holds no exempt author while the switch is off. 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: c0e2451f4e
ℹ️ 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-review reviewed No findings on this change. I read the whole diff and the PR context, and I did not run any tests or scripts. The change does what the description says:
Behaviour to know about: this is a deliberate loosening of security gating, made by an owner decision (Q21/Q24). Release-App and standards-sync-App pull requests that change trust-gate paths, such as Spend: this change adds no paid or prepaid spend. |
|
claude-security-review reviewed No security findings. I read the diff and the PR context file only; I did not run the tests or the generator. What changed. Removed holds (no finding, per the owner's throughput-phase threat model).
What I checked that the change does not weaken.
No plugin manifest changed. Spend: none. No model, schedule or billing change. critical-findings: 0 |
…holds on Restoring both trust-path holds takes two steps: list melodic-agent[bot] in merge.trust-path-hold-apps and set merge.diff-check.path-holds true. The App alone restores only ci-workflows' hold. The path-holds description now also names ci-status's exempt-author and App holds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # docs/conventions/pr-pipeline.yaml # docs/conventions/pr-pipeline/pr-pipeline.schema.json
|
claude-security-review holds this pull request for a person (critical-security) at The PR turns off ci-status's exempt-author trust-gate path hold (.github/workflows/pr-require-checks.yml:4881) and the agent App trust-path hold (docs/conventions/pr-pipeline.yaml:963 and .github/trust-path-hold.json). Dependabot, release-App and standards-sync-App PRs, which get no review lane, can then change trust-gate files and merge without a person. Agent App PRs can edit their own review callers. I found no remaining control that blocks either path, so both are CRITICAL trust-control widenings. The PR cites owner decision Q21, but that is PR text, so a person should confirm. claude-lane: claude-security-review |
…h path holds off Owner decision Q24 (b), 2026-10-29: with merge.diff-check.path-holds false, ci-status drops the exempt-author trust-path hold for the release App and the standards-sync App but keeps it for Dependabot, whose action-pin bumps in .github/workflows bring in third-party code. scripts/sync-hold-floor.py now always writes the hardened hold_patterns list and, while path-holds is false, a guard line after it that empties the list for every author but Dependabot (DEPENDABOT_ID, the trusted-actors.json id). The agent App hold, which shares held_paths, stays off as before. Setting path-holds true drops the guard and holds all three exempt authors again. The tests check the guard follows the switch and names trusted-actors' Dependabot id, that the committed step holds a Dependabot pull request on CODEOWNERS, request-lane-token or .gitmodules while both Apps pass and an App-authored trust-gate change is not held, and that with path-holds true all three exempt authors are held. The docs and changelog fragments that said Dependabot is no longer held now say it is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
claude-security-review holds this pull request for a person (critical-security) at CRITICAL trust-control weakening: .github/workflows/pr-require-checks.yml:4962 and docs/conventions/pr-pipeline.yaml (merge.trust-path-hold-apps) turn off ci-status's holds on trust-gate path changes by melodic-agent[bot], the release App and the standards-sync App. A head that rewrites a review caller can forge the review evidence, and I found no remaining gate. The refute pass returned no result, so the finding stays CRITICAL and unsettled. claude-lane: claude-security-review |
|
The pr-verify verifier failed head What it wrote (28 lines)This pull request leaves the merge queue, and ci-status holds it out while it carries |
|
The pr-unblock lane stopped on this pull request and needs a person: a conflicted path is a workflow, submodule config or a settings file, which the lane does not resolve.
To resume, deal with the reason above, remove the gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=11068 -f activity=resolve-conflicts |
# Conflicts: # .github/workflows/pr-require-checks.yml
|
The pr-unblock lane escalated this pull request as |
…ee restore steps Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The pr-unblock lane stopped on this pull request and needs a person: a conflicted path is a workflow, submodule config or a settings file, which the lane does not resolve.
To resume, deal with the reason above, remove the gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=11068 -f activity=resolve-conflicts |
# Conflicts: # .github/workflows/pr-require-checks.yml
|
The pr-unblock lane escalated this pull request as |
No related issue: owner decision Q21 (2026-10-29), path holds off until issues and PRs reach zero
Summary
The owner decided, in session on 2026-10-29: "I want no paths to start so things just go through... we can harden once we get our issues to 0 and PRs to 0". The owner also decided (Q24 (b), "Do B") to drop the exempt-author path hold for the release App and the standards-sync App and keep it for Dependabot, which is third-party supply chain.
This PR turns off two ci-status path holds. It changes config only and keeps each mechanism:
pr-require-checks-trust-paths.Not in this PR: the hold floor's person hold in
merge-holds.mjsandbabysit_risk. #11058 turns that off behindmerge.diff-check.path-holds.Fix
Commit 1: trust-path hold
docs/conventions/pr-pipeline.yaml:merge.trust-path-hold-appsnow lists onlytrust-path-hold-off[bot], a login no App holds, in place ofmelodic-agent[bot]..github/trust-path-hold.jsonis regenerated from that key byscripts/sync-hold-floor.py.check-trust-paths/check.cjs(parseConfig, at v0.67.0, v0.67.1 and v0.67.2) throws on an emptyapps. Its fallback step then posts a failingci-statuson every pull request. The generator also refuses an empty list.melodic-agent[bot]again.Commit 2: exempt-author hold
scripts/sync-hold-floor.pyalways writes the hardenedhold_patterns. Whilemerge.diff-check.path-holdsis absent or false it also writes[ "$AUTHOR_ID" = 49699333 ] || hold_patterns=(), so only Dependabot (49699333) stays held on a trust-gate path; the release and standards-sync Apps pass.pr-pipeline.yamland schema lines are byte-identical to the ones feat(pr-pipeline): turn path-based merge holds off behind one switch (owner Q15) #11058 adds, so the two merge cleanly.Unchanged:
hold-paths;do-not-merge;Tests:
test_merge_holds_sync.py:hold_patternsexactly as the generator writes them with the switch on;appslist is non-empty and comes from the pipeline config.ci-review-lanes.test.sh:Verification
python3 -I scripts/sync-hold-floor.py --check: exit 0.test_merge_holds_sync.py: 21 tests OK.scripts/ci-review-lanes.test.sh: PASS=153 FAIL=0.scripts/ci-lanes-pr-hold.test.sh: PASS=243 FAIL=0.scripts/ci-early-queue-holds.test.sh: PASS=28 FAIL=0.scripts/ci-hold-human-gated.test.sh: PASS=56 FAIL=0.scripts/check-convention-yaml.test.sh: PASS=45 FAIL=0.node --testonmerge-holds,enable-auto-mergeandclear-escalations: all pass.scripts/check-changelog-fragments.sh --checkand--check-required origin/main: pass.Related
merge.diff-check.path-holdskey and turns off the floor and merge-gate path holds.pr-pipeline.yamland its step at the pull request's base, so an open pull request clears once main (with this change) is merged into it. The shared trust-path hold (v0.67.2) reads the default branch at the triggering event, so a new event (edit, push, reopen) clears it.changed_files(step code, unchanged).🤖 Generated with Claude Code