coily GitHub and Forgejo mirrors have forked divergent feature work on both sides #148
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptom
coily'soriginhas two push URLs (GitHub + Forgejo mirror), butgit push origin mainsucceeds on GitHub and is rejected (fetch first) on Forgejo. The two remotes have forked, not merely fallen behind.As of 2026-05-28, fetching both
maintips shows divergent history:dca52c5 chore(formula): bump to v2.46.0 [skip ci],2822824 fix(forgejo): rename max var to avoid revive redefines-builtin-id,2865833 feat(forgejo): add fj alias for coily ops forgejo,ebf6574 lockdown: sync to coily v2.45.0 [skip ci],3a2ca1c chore(formula): bump to v2.45.0 [skip ci],df5a17f feat: add sync-lockdown release job, fix reserved FORGEJO_PAT secret name,8be1ccd feat(forgejo): read actions task logs over HTTPS, drop SSH, plus a9b96635lockdown-sync.f6e9ba5(this isolation-inversion bump),1e4faf6(expose consult surface),96d828f(a .claude lockdown sync).So real feature work (fj alias, forgejo actions-log reader, sync-lockdown release job) lives only on Forgejo, while the consult surface + dispatch isolation work lives only on GitHub.
Impact
closes #Ntrailers pushed to GitHub never auto-close the matching Forgejo issue (had to close coilysiren/coily#145 manually).Likely cause
Automated jobs (
[skip ci]formula/lockdown syncs) and some feature commits land directly on Forgejomainwithout replaying to GitHub, while developer/dispatch work lands on GitHub. Neither remote is a strict ancestor of the other anymore.Ask
Decide the single write source of truth for
coily(GitHub vs Forgejo), reconcile the twomainhistories (merge the divergent commits, or replay one side), and fix the automation so the mirror stops forking. Sibling drift in cli-guard is filed as coilysiren/cli-guard#36. Surfaced while landing coilysiren/coily#145.History reconciled (merge
9ee11f8)Merged the two forked
maintips with a merge commit whose parents are the GitHub tip (f6e9ba5) and the Forgejo tip (dca52c5). Because each tip is an ancestor of the merge, pushing it fast-forwarded both remotes - no commits lost, no force-push.Both remotes now point at
9ee11f8(verified viagit ls-remoteon each). Both feature lines are reachable fromHEAD:fjalias, forgejo actions-log reader over HTTPS, sync-lockdown release job, formula v2.45/2.46 bumps, lockdown syncs.The file sets were disjoint except
.claude/settings.json. That is a generated lockdown artifact, so I resolved it by keeping the stricter render (the larger fine-grained deny list + vault Read allows). The only delta vs the Forgejo render was Forgejo'sBash(mcporter:*)allow entry, which is dropped - losing an allow fails safe (mcporter will prompt), never fail-open. I did not regeneratesettings.jsonfrom the merged binary: that would rewrite the lockdown permission posture, which is out of scope here and a separate lockdown-sync concern.Merged tree verified green:
tidy,build,test,vet,lintall pass (Forgejo'sops_forgejo*code builds fine against the GitHub-side cli-guard bump).Still open: the automation that lets the mirrors fork
This merge unifies history once, but it does not stop the recurrence. The root cause stands: automated jobs (
[skip ci]formula/lockdown syncs) and some feature commits land directly on one remote without replaying to the other, so the next such commit re-forksmain. Keeping this issue open, narrowed to that fix:coily(GitHub vs Forgejo) and make the other a strict read-only mirror, orgit push origin maindoes, via the twooriginpush URLs), or run a scheduled mirror-sync.Two follow-on details worth a look while fixing the automation:
.claude/settings.jsonrender drifts from what the current merged binary produces (coarserBash(git:*)vs per-subcommand denies, etc.). That is the recurring "sync committed .claude lockdown files to coily vX render" chore, orthogonal to the mirror fork but visible here.Merged into #5 in the 2026-05-29 backlog burn-down. Same multi-URL origin push divergence (GitHub vs Forgejo) Reopen if it should stand alone.