Skip to content

ci: untie fork releases from the upstream mirror and harden fork-sync - #41

Merged
mbuckaway merged 1 commit into
fork/mainfrom
ci/release-independent-of-upstream
Aug 11, 2026
Merged

ci: untie fork releases from the upstream mirror and harden fork-sync#41
mbuckaway merged 1 commit into
fork/mainfrom
ci/release-independent-of-upstream

Conversation

@mbuckaway

Copy link
Copy Markdown
Owner

Related Issue

No issue — fork infrastructure fix (release pipeline independence).

Problem

The MB release pipeline could not cut a release unless fork/main contained the upstream mirror (origin/main). A mirror that is a few commits ahead (same version) blocks the release entirely, and the release label base was read from the mirror's package.json, coupling the fork's release schedule to upstream's. The fork-sync conflict-tracking loop also masked conflicts: a stale-open tracking issue suppressed notifications for later, different conflicts.

What changed

fork-release.yml — releases independent of upstream:

  • Removed the "Verify fork/main contains the upstream mirror" guard and the mirror fetch; the release now runs from fork/main's own state on its own schedule.
  • The release label base (<base>-MB.<x>.<y>) is derived from the fork's own apps/kimi-code/package.json (the label the fork is shipping) instead of the upstream mirror — label and payload come from the same file, so a mismatched base stamp is structurally impossible.

fork-sync.yml — robust, self-healing, non-blocking:

  • sync-main falls back to a --force-with-lease reset if the pristine mirror ever diverges, instead of failing closed with a manual-admin demand (the pristine-main ruleset carries the documented repository-admin bypass; fork/main is never force-pushed — no bypass exists there).
  • The conflict-notify loop is now self-maintaining: on conflict it comments on the existing tracking issue (listing the conflicting files) rather than silently masking under a stale issue, and a conflict-free sync closes the issue.

fork/README.md: corrected to match the live rulesets (admin bypass on pristine-main, direct mirror push) and the new versioning rule (a future sync's conflict resolution must bump the fork pkg base, or the next release would label synced code with the stale base).

Checklist

  • I have read the CONTRIBUTING document.
  • I have linked a related issue, or explained the problem above.
  • I have added tests that prove my feature works. — CI/tooling change; validated by YAML parse + the live run in the release dispatch.
  • Ran gen-changesets skill, or this PR needs no changeset. — No changeset: release-pipeline tooling only, not user-perceivable CLI behavior (per the skill's Core Rule 6).
  • Ran gen-docs skill, or this PR needs no doc update. — fork/README.md updated in this PR.

Releases no longer depend on the upstream mirror: fork-release.yml no longer
requires fork/main to contain origin/main and derives the release label base
from the fork's own apps/kimi-code/package.json, so fork/main can be released
on its own schedule without syncing upstream first.

fork-sync hardening:
- sync-main self-heals the pristine mirror with a force-with-lease push
  instead of failing closed on divergence (the pristine-main ruleset has the
  documented repository-admin bypass).
- The merge-conflict tracking loop no longer masks conflicts: it comments on
  the existing tracking issue (listing the conflicting files) instead of
  silently skipping, and a conflict-free sync closes the issue.
- fork/README.md corrected to match the live rulesets and the new versioning
  rule (a future sync's conflict resolution must bump the fork pkg base).
@mbuckaway
mbuckaway merged commit 403e664 into fork/main Aug 11, 2026
12 checks passed
@mbuckaway
mbuckaway deleted the ci/release-independent-of-upstream branch August 11, 2026 21:35
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