mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
cicd.yml builds a release on `tags: ['v*']`, and the sync only ever moved refs/heads/main. Tags are created on GitHub, so they never arrived here, the trigger never fired, and no semver image was ever built: the forge sat at v1.26.24 while GitHub had v1.26.26. A version number that names no artifact is worse than no tag at all, because it reads as a release. Tags are immutable, so fast-forward-only means a tag we do not have is pushed, and a tag we do have that points somewhere else is a rewritten release — which is reported and refused, never silently adopted and never silently skipped. Both sides are read from their own ref namespace. A draft that compared against refs/tags/ was wrong in a way worth recording: `git fetch` auto-follows tags pointing at fetched objects even when given an explicit refspec, so the GitHub tags landed in refs/tags/ as a side effect, every new tag compared equal to the copy just followed, and nothing was ever pushed — this fix silently undoing itself. --no-tags plus an explicit namespace per side removes both that and any dependence on what checkout leaves behind. Verified against a pair of local repositories holding a shared tag, a rewritten tag and a new one: unchanged is left alone, the rewrite is refused and reported, the new tag is pushed. Co-authored-by: Hanzo Dev <[email protected]>