Skip to content

July 9 incident post-mortem: force-push auto-closed 23 PRs — recovery complete #261

Description

@zeshi-du

On 2026-07-09 at 00:59 UTC, a release-snapshot force-push replaced this repository's main history. GitHub reacted by auto-closing all 23 open community PRs within one second. That was our mistake, not yours — this post explains what happened, what we did about it, and what's different now.

What happened

Our release pipeline used to publish by force-pushing a freshly generated snapshot of main. The v0.3.0 cut did exactly what the (flawed) runbook said — and rewriting the base branch's history breaks every open PR's merge tracking. Once that happens, GitHub cannot reopen those PRs, even after main was restored to the identical pre-incident commit the same day.

The recovery — complete as of July 17

Every one of the 23 closed PRs is accounted for:

As of today, 13 recovered/resubmitted PRs have been merged, several more are approved pending a rebase, and the rest carry detailed review feedback. Nothing was lost.

What's different now

  • Force-pushing main is impossible: branch rulesets now block non-fast-forward pushes and deletions on main, and releases are published append-only.
  • Release tags are ruleset-protected too.
  • A CI issue that showed a false-red gate check on every PR (an actions/github-script Node-24 breakage, unrelated to your PRs) was fixed on July 17 — your PR's next push or re-run will show it green.

If you contributed before July 9

If you had a PR closed by the incident and don't see a successor for it, comment here or reopen from your fork branch — we'll prioritize the review. Sorry again for the disruption, and thank you for building with us.

Metadata

Metadata

Assignees

Labels

in-progressAssigned and actively being worked on

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions