Skip to content

feat(dependabot): merge every Dependabot PR through the all-checks gate - #206

Merged
twistedmelonman merged 1 commit into
mainfrom
claude/feat-automerge-all-3638fd83
Oct 29, 2026
Merged

twistedmelonman merged 1 commit into
mainfrom
claude/feat-automerge-all-3638fd83

Conversation

@twistedmelonman

Copy link
Copy Markdown
Member

Why

Andrew decided on 2026-10-25 that no human approves Dependabot updates (smartwatermelon/dev-env#229). v2 merged patch/minor with --auto, which waits on required checks only, and skipped untrusted majors and groups with a notice nobody saw.

Change

  • Every PR with dependency names goes through the all-checks gate, then merges with --match-head-commit. Deadline 60 minutes, job timeout 70.
  • A PR the gate does not merge gets dependabot-blocked plus one reason label: red-check, main-red, timeout, no-checks, cannot-evaluate, merge-failed. A later merge clears them. Label calls degrade to a warning, so the run is never red (dependabot-auto-merge is inert in 29/51 fleet repos: can_approve_pull_request_reviews unset by installer #87).
  • main-red means every failing check also fails on the base branch head. If the base branch cannot be read, the label is red-check.
  • trusted_namespaces and allow_major are accepted and ignored for one release.

Decisions from dev-env#229: short cooldown kept (README says so), all-checks gate, new v3 tag with a canary first.

Not in this PR

  • Tags dependabot-auto-merge-v3.0.0 and -v3: Andrew cuts them after merge.
  • Canary caller (projectinsomnia, pinned to -v3.0.0), then the fleet.
  • Label permissions: the docs list both label endpoints under Pull requests: write. The canary run confirms it with GITHUB_TOKEN.

Tests

tests/test-dependabot-auto-merge.sh: 31 pass. Covers main-red vs red-check, unreadable head, all-skipped checks, merge failure, stale label cleanup.

Advances #203

Andrew decided on 2026-10-25 that no human approves Dependabot
updates (dev-env#229). v2 merged patch/minor with --auto, which waits
on required checks only, and skipped untrusted majors and groups with
a notice nobody saw.

Every PR with dependency names now goes through the gate: wait for
every check on the head to finish green, then merge with
--match-head-commit. The deadline is 60 minutes (job timeout 70).

A PR the gate does not merge gets dependabot-blocked plus one reason
label: red-check, main-red (every failing check also fails on the base
branch), timeout, no-checks, cannot-evaluate or merge-failed. The
digest reads them. A later merge clears them. Label calls degrade to a
warning, so the run is never red (#87).

trusted_namespaces and allow_major are accepted and ignored for one
release. Callers stay on v2 until the v3 tag is cut and a canary passes.

Advances #203
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant