GitHub main silently lost the nix commit - multi-URL origin push divergence #5

Open
opened 2026-05-23 20:53:56 +00:00 by coilysiren · 0 comments
Owner

Originally filed by @coilysiren on 2026-05-22T13:27:58Z - https://github.com/coilysiren/coily/issues/324

Symptom. While landing #323, git push origin main for the nix passthrough commit (8397594) was rejected by GitHub as non-fast-forward but accepted by forgejo. origin is a multi-URL remote (git@github.com:coilysiren/coily.git plus https://forgejo.coilysiren.me/coilysiren/coily.git). The partial push left GitHub's main missing 8397594 while forgejo and local carried it. GitHub's main instead advanced to f0eca9e (v2.22.0 formula bump from a release workflow), so the two remotes genuinely diverged.

Reconciled for now. Issue #323 resolved it with merge commit adeb142, which fast-forwarded both remotes. The formula bump and the Go changes touched disjoint files, so there were no conflicts.

Root cause to fix. A multi-URL origin where one URL rejects a push leaves the other ahead, and nothing surfaces the split. The next dispatch that branches from local main inherits a history GitHub never saw. Options worth considering:

  • Make the release / formula-bump workflow not race normal feature pushes. It appears to push to GitHub directly, which is what created the non-fast-forward.
  • Split origin into named remotes (github, forgejo) behind a wrapper that fails loudly on partial success instead of a single multi-URL origin.
  • A drift check that compares github/main against forgejo/main and alerts when they part ways.

Found while landing #323 (decouple coily and agent-guard).

_Originally filed by @coilysiren on 2026-05-22T13:27:58Z - [https://github.com/coilysiren/coily/issues/324](https://github.com/coilysiren/coily/issues/324)_ **Symptom.** While landing #323, `git push origin main` for the nix passthrough commit (`8397594`) was rejected by GitHub as non-fast-forward but accepted by forgejo. `origin` is a multi-URL remote (`git@github.com:coilysiren/coily.git` plus `https://forgejo.coilysiren.me/coilysiren/coily.git`). The partial push left GitHub's main missing `8397594` while forgejo and local carried it. GitHub's main instead advanced to `f0eca9e` (v2.22.0 formula bump from a release workflow), so the two remotes genuinely diverged. **Reconciled for now.** Issue #323 resolved it with merge commit `adeb142`, which fast-forwarded both remotes. The formula bump and the Go changes touched disjoint files, so there were no conflicts. **Root cause to fix.** A multi-URL `origin` where one URL rejects a push leaves the other ahead, and nothing surfaces the split. The next dispatch that branches from local main inherits a history GitHub never saw. Options worth considering: - Make the release / formula-bump workflow not race normal feature pushes. It appears to push to GitHub directly, which is what created the non-fast-forward. - Split `origin` into named remotes (`github`, `forgejo`) behind a wrapper that fails loudly on partial success instead of a single multi-URL `origin`. - A drift check that compares `github/main` against `forgejo/main` and alerts when they part ways. Found while landing #323 (decouple coily and agent-guard).
Sign in to join this conversation.
No labels
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-bridge/coily#5
No description provided.