Repository navigation
feat(dependabot-policy): merge every Dependabot pull request without a human - #793
Conversation
…a human Replace the manual lane with a review tier: an auto-tier pull request (every update non-major, Actions only from actions/github/anthropics, ci-status not red, metadata and title agree) merges once ci-status passes; any other merges on an AI review lane's merge verdict at its current head. The publisher tier enum becomes auto | review. The GITHUB_TOKEN reusable stays documented for repositories without a merge queue, since GITHUB_TOKEN cannot add a pull request to one. Refs: melodic-software/claude-code-plugins#7699 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LN2UYVaEoezf3FxZY72hsS
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 finished @kyle-sexton's task in 2m 15s —— View job CI code review: no findings
This is a docs-only rename of the Dependabot merge model (auto/manual → auto/review tiers) across
No paved-path row applies here (docs/policy change, not a new way of doing something already-listed). No correctness or maintainability issues met the high-signal bar for this lane; no security-relevant logic changed (security lane runs separately for this repo). claude-lane-summary: lane=claude-review sha=51f6c69f2827c1e31366f5bd8908701a30770bc3 run=38995254590 |
|
Claude finished @kyle-sexton's task in 4m 29s —— View job Security review complete
Scope: Instruction-surface deletion considered. The diff removes the prior "manual lane" text that required a human to review and merge any Dependabot pull request from a non-allowlisted publisher or any semver-major bump, replacing it with a "review tier" merged solely on an AI review lane's verdict, and broadens scope from GitHub-Actions-only to every Dependabot ecosystem ( No other security-relevant issues (injection, auth/access-control gaps, secret handling, logic flaws) found in the changed files. GitHub Actions workflow hardening is out of scope for this lane (zizmor's lane) and no workflow files are changed here anyway. Findings: 0 claude-lane-summary: lane=claude-security-review sha=51f6c69f2827c1e31366f5bd8908701a30770bc3 run=38995254585 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 51f6c69f28
ℹ️ 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 has reviewed this pull request through b3d7ff5; a later push is reviewed from there. |
|
claude-security-review has reviewed this pull request through b3d7ff5; a later push is reviewed from there. |
…review tier Add autoMerge.reviewOnly: dependencies a threat model singles out, scoped by repository, ecosystem and directory, never take the auto tier, and a merge verdict on one cites the threat-model control it checked. The distribution parser's yaml is the first entry, and distribution/THREAT-MODEL.md now states that control in place of human review. Refs: melodic-software/claude-code-plugins#7699 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LN2UYVaEoezf3FxZY72hsS
|
Claude finished @kyle-sexton's task in 3m 43s —— View job CI code review: incremental (since
|
|
Claude finished @kyle-sexton's task in 2m 24s —— View job CI security review: no findings
Scope (incremental since What I checked:
Findings: 0 claude-lane-summary: lane=claude-security-review sha=fe6980f7b137e3f82836dceea3006d731d98e414 run=38995849308 |
…ields Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LN2UYVaEoezf3FxZY72hsS
|
Claude finished @kyle-sexton's task in 1m 20s —— View job CI code review: incremental (since
|
…credentialed CI tools (#794) No related issue: a supply-chain hardening follow-up to #793 for melodic-software/claude-code-plugins. ## Summary A hijacked non-major npm release of a claude-code-plugins root devDependency is tier `auto` today and merges on a green `ci-status` with no review. Two of those packages run inside a job holding a secret, so this lists them under `autoMerge.reviewOnly` and syncs `policy.json` to claude-code-plugins so its classifiers can read it. ## Fix - `components/dependabot-policy/policy.json`: two `reviewOnly` entries for `melodic-software/claude-code-plugins`, ecosystem `npm`, directory `/`: - `@anthropic-ai/claude-code`: `eval-browser-dispatch.yml:153` runs `npm ci` on the root lockfile, `:251` runs its `claude` CLI with `AUTOMATIONS_CLAUDE_CODE_OAUTH_TOKEN` in the step env (`:203`). It is the only root package with an install script, and `.github/dependabot.yml:65-66` exempts it from the cooldown. - `@playwright/cli`: installed in that job, `:163` runs the playwright it pulls in, `:189` runs `playwright-cli`, and `:45` makes `Bash(playwright-cli *)` the eval's default tool, so it runs beside the claude process that holds the secret. - `distribution/sync-manifest.yml`: a new `dependabot-policy` component that ships `policy.json` alone to `.github/standards/dependabot-policy/policy.json`, managed in claude-code-plugins. - `components/managed-files-guard/managed-files-guard.yml`: that destination joins the guard's `paths` union, as its contract test requires. - `components/dependabot-policy/README.md`: one paragraph on the sync component. Not listed, with the reason: `@biomejs/biome`, `markdownlint-cli2` and `htmlhint` run in `pr-require-checks.yml` jobs that hold a read-only `GITHUB_TOKEN` and no secret. In the eval job they sit on PATH and run only if an eval target's plugin hooks call them. Every `control` names `docs/conventions/pr-pipeline/README.md#review-only-dependencies` in claude-code-plugins, a section the companion PR adds. ## Verification - `npm run test:dependabot-policy`: 51 pass, 0 fail. - `npm run lint:dependabot-policy`: "Dependabot policy passed." - `bash distribution/sync-manifest.test.sh`: 0 FAIL lines. - `bash harness/shell/run-tests.sh components/managed-files-guard/managed-files-guard.test.sh`: 1 passed. ## Related - Companion: melodic-software/claude-code-plugins#7717. Merge order: this PR first, then the standards sync PR that lands `policy.json` in claude-code-plugins, then the companion. Before the file arrives, the companion's classifiers fail closed and send every Dependabot PR to review with `dependabot-policy-unreadable`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01LN2UYVaEoezf3FxZY72hsS --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Refs: melodic-software/claude-code-plugins#7699
Summary
The owner decided (2026-10-16) that no Dependabot pull request waits on a human: "AI is smart enough to know if a dependabot PR should be auto-merged or not. If there's any that you're like, 'Oh, we should hold this back and make a human do it,' then have an AI do it", and, asked whether the merge lane may merge risky Dependabot PRs on an AI review verdict, "Yes, merge on AI verdict". The dependabot-policy component and
REVIEW.mdstill said any other publisher and any major waits for a human to merge. This rewrites them to the tiered autonomous model claude-code-plugins implements.Fix
components/dependabot-policy/README.md: the section "Merge lanes for GitHub Actions bumps" becomes "Merge tiers for Dependabot pull requests" (new anchor#merge-tiers-for-dependabot-pull-requests).actions/*,github/*,anthropics/*,ci-statusnot red, update metadata and title agree; merges onceci-statuspasses.merge,fix,closewith an ignore-entry proposal,escalate; security updates never closed), and the merge lane merges only onmergeat the current head withci-statusgreen.GITHUB_TOKENcannot add pull requests to a merge queue. The ci-workflowspr-automerge-dependabot.ymlreusable is documented as valid only without a merge queue.REVIEW.md: the Dependabot bullet states the new rule and points at the new anchor.policy.schema.json: publishertierenumauto | manualbecomesauto | review(no entry usedmanual);automerge-lockstep.test.mjsrenamed to match. The lockstep logic is unchanged: it still compares the reusable'sPUBLISHER_ALLOWLISTwith thetier: autokeys.THREAT-MODEL.md: residual risk now says no person reads a Dependabot pull request before it merges.components/runner-policy/policy.jsonis unchanged: thepr-automerge-dependabot.ymlcontracts stay because standards, songwriting, ci-runner and medley still call the reusable, and none of them uses a merge queue (gh api repos/melodic-software/<repo>/rules/branches/main --jq '[.[]|select(.type=="merge_queue")]|length': claude-code-plugins 1, the other four 0).Verification
npm run test:dependabot-policy: 50/50 pass.npm run lint:dependabot-policy: passed.npm run lint:dependabot-automerge-lockstep: matches at both approved SHAs (ab83b01, 594987a).npm run lint:runner-policy: passed.Related
🤖 Generated with Claude Code
https://claude.ai/code/session_01LN2UYVaEoezf3FxZY72hsS