Repository navigation
Conversation
Add a reusable workflow that enables auto-merge for Dependabot pull requests whose every update is a semver patch or minor update, and disables it for anything else. Allow auto-merge in every active repository and allow dependabot/fetch-metadata in the Actions allowlist. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Dependency Review✅ No vulnerabilities or license issues found.Scanned Files
|
Run the apply job after a failed classification, fail closed when the commit list cannot be read, compare excluded names case-insensitively, restrict the caller template to main, test auto-merge drift in the audit, and correct the rollout, rebase and merge-queue notes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Self-review of #103. Full review. A fresh-context subagent reviewed f99a5fa against main (9e5aa0c) using the intent brief. It covered the workflow, config, bin/audit, the publisher/validate/test call sites, and the fetch-metadata v3.1.0 source. It ran actionlint, bin/validate and tests/*.sh. Findings and how each was handled:
Delta review. The same reviewer reviewed 76b6efe. It found the cancellation ordering safe (an older run cannot override a newer decision) and the always-run apply fail-closed. It left two P3s:
ad9da89. This commit is docs-only README wording: the recovery note, the hedged rebase claim, and an explicit accepted-risk note for minor GitHub Actions updates plus the unverified |
|
Closing: the owner decided against Dependabot auto-merge (Oct 22, 2026). Grouping, cooldown and single-source pins stay. |
Summary
The owner approved auto-merging Dependabot patch and minor updates once required CI passes (2026-10-22). This adds the shared policy for Atrinik:
.github/workflows/dependabot-auto-merge.yml, that component repositories call from a thinpull_requestcaller;allow_auto_merge: trueinconfig/repository-defaults.json, checked bybin/audit;dependabot/fetch-metadata@*in the selected-actions allowlist.Majors, updates of unknown type, and anything failing CI stay manual.
Implementation / behavior
classifyjob (read-only token): runs only on pull requests authored bydependabot[bot]. It requires that Dependabot triggered the run and authored every commit. It runsdependabot/fetch-metadata(pinned to v3.1.0 by SHA), which verifies the signed first commit. The pull request is eligible only when every entry inupdated-dependencies-jsonissemver-patchorsemver-minor. The action's ownupdate-typeoutput ignores entries of unknown type, so the job does not use it. That way a grouped PR with a bare SHA or digest change is not let through on the strength of its minor siblings. Updates todependabot/fetch-metadataor toatrinik/github-settingsalways need a person, because such a PR would classify itself with the new code.applyjob (contents: write,pull-requests: write): runs onlygh, with no checkout. If the PR is eligible it runsgh pr merge --auto --squash --match-head-commit <classified head>. Otherwise it disables any earlier auto-merge request. That covers a grouped PR that Dependabot later widens to include a major, and a person's push, including Update branch.required_approving_review_count: 0in02 - Changes through pull requests), so no bot approval is needed.can_approve_pull_request_reviewsstaysfalse. Required CI, thread resolution and the strict up-to-date policy are unchanged, and no protection is loosened.Validation
bin/validate: valid.tests/*.sh: all pass locally.dependabot/fetch-metadataupdate, anatrinik/github-settingsupdate and malformed input. Only the first is eligible.bin/publishplan: as expected, it shows the selected-actions PUT and the repository-defaults PATCH for every active repository. The plan also contains already pending, unrelated mutations from earlier merged changes: the playtester merge queue (feat(rulesets): pilot a merge queue on playtester #102), the pathfinder required-CI ruleset (feat(repositories): require pathfinder CI #98), and deletion of the editor/renderer rulesets (chore: drop editor and renderer after transfer to Seraphina Studios #99). A broad--applywould apply those too.Limitations / follow-up
GITHUB_TOKEN, so the push tomaindoes not triggerpushorworkflow_runworkflows (main-branch Check, releases, development deploys). Those pick the change up with the next merge by a person. Changing this needs a dedicated GitHub App credential; that is an owner decision and out of scope here.0.xminor bumps count as minor, as GitHub reports them.metaserver-worker.🤖 Generated with Claude Code