Skip to content

ci: remove Mergify, restore pr-monitor as the merge gate - #950

Merged
thekevinscott merged 3 commits into
mainfrom
bot/pr-monitor-mergify-removal-tks3fe
Aug 20, 2026
Merged

thekevinscott merged 3 commits into
mainfrom
bot/pr-monitor-mergify-removal-tks3fe

Conversation

@thekevinbot

Copy link
Copy Markdown
Collaborator

Fixes #948

Removes Mergify and restores pr-monitor as the merge gate. The Mergify config on main (#945's #check-pending = 0) deadlocks every PR's Mergify Merge Protections check — Mergify counts its own pending check (proven by canary #946) — so nothing merges without an admin merge. Mergify's check-run vocabulary has no working gate construction for this repo (full rationale in #948); this PR supersedes revert #947.

Changes

  • Delete .mergify.yml.
  • Restore .github/workflows/pr-monitor.yml (thekevinscott/pr-monitor@v1): minimum-checks: 0 (post-Epic — CI: run only the checks relevant to the changed paths #834 path filtering, a PR can legitimately trigger zero checks), pre-sleep: 30, timeout: 45 (double the longest observed legit run — Release Precheck 22m21s on Aug 12), permissions: actions: read, contents: read.
  • Rewrite the AGENTS.md "PR Monitoring" section for pr-monitor (also resolves item 2 of Docs: post-#834 pass #932).

Maintainer actions after admin-merge

  1. Branch protection on main: require CI Gate; stop requiring Mergify Merge Protections.
  2. Repo settings: enable Allow auto-merge.
  3. Uninstall the Mergify GitHub App.
  4. Close 🚨 DO NOT MERGE — canary for merge-gate timing (#943) #946 (canary, done) and Revert "ci: block merge while checks are still running" #947 (superseded).

E2E Verification

N/A - docs/lint/typo only

Changelog / Migrations

  • Changelog fragment: not required — no packages/ files touched (CI config + docs only)
  • Migration fragment: not required — additive/bugfix only

Merge gating returns to pr-monitor's CI Gate check. Mergify's check-run
condition vocabulary cannot express "everything expected has finished":
`#check-failure = 0` alone is vacuously green before and during CI (#943),
adding `#check-pending = 0` deadlocks on Mergify's own in-progress check
(#832, confirmed by canary #946), and named anchors died with path
filtering (#834). pr-monitor polls workflow runs instead, so path-filtered
workflows need no enumeration, in-flight runs hold the gate, and
startup_failure is visible.

The restored workflow differs from the pre-#830 one: minimum-checks: 0
(zero-check PRs are legitimate post-#834 and the old floor of 1 burned the
timeout as a false red), pre-sleep: 30 (sole dispatch-race guard once the
floor is 0; observed fan-out is ~2s), timeout: 20 (full fan-out completes
in ~3 min, so a timeout means a hang), and the deprecated job-name input
is dropped in favor of the action's run-ID self-exclusion.

Requires maintainer follow-up outside the repo: require CI Gate in branch
protection instead of Mergify Merge Protections, enable native auto-merge,
uninstall the Mergify app.

Fixes #948
The accessible Actions history (the API serves the most recent 1,000 PR
runs) tops out at Release Precheck taking 22m21s under multi-PR
contention on 2026-08-12 -- past the old gate's 20-minute timeout, which
is what its "regular" timeout firings actually were: CI legitimately
outrunning the gate, not hangs. 45 minutes is double the observed
maximum, so a firing now means a hung job.

Fixes #948
@mergify

mergify Bot commented Aug 17, 2026

Copy link
Copy Markdown

⚠️ The sha of the head commit of this PR conflicts with #949. Mergify cannot evaluate rules on this PR. Once #949 is merged or closed, Mergify will resume processing this PR. ⚠️

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.

Remove Mergify; restore pr-monitor as the merge gate

2 participants