Skip to content

fix(release): annotate version tag + correct release push instructions - #1517

Merged
vanceingalls merged 1 commit into
mainfrom
fix-release-tag-and-push-docs
Jun 16, 2026
Merged

vanceingalls merged 1 commit into
mainfrom
fix-release-tag-and-push-docs

Conversation

@vanceingalls

Copy link
Copy Markdown
Collaborator

What

Two release-flow fixes surfaced while cutting v0.6.107.

  1. set-version creates an annotated tag (git tag -a -m) instead of a lightweight git tag, which fails with fatal: no tag message? when a contributor has tag.forceSignAnnotated (or equivalent) set globally — it silently broke the v0.6.107 tag step (release commit landed, tag didn't).
  2. CONTRIBUTING release steps no longer say git push origin main --tags (pushes every local tag → whole push rejected on any pre-existing collision). Now: push the release commit, then the specific tag. Also documents the monotonicity guard (a stale higher semver tag blocks tagging because it would hijack npx skills-style version resolution).

Verify

oxlint clean · scripts/set-version.test.ts 14/14.

🤖 Generated with Claude Code

- set-version: create the release tag with `git tag -a -m` instead of a
  lightweight `git tag`, which fails ("no tag message?") when a contributor has
  tag.forceSignAnnotated / required-annotation set globally — it silently broke
  the v0.6.107 tag step.
- CONTRIBUTING: replace `git push origin main --tags` (pushes every local tag →
  whole push rejected on any pre-existing collision) with pushing the specific
  tag, and document the monotonicity guard (stale higher tag blocks tagging).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>

@miga-heygen miga-heygen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve. Clean, well-scoped fix for the v0.6.107 tag failure.

Switching from lightweight to annotated tags (git tag -a -m) is the right call — it satisfies tag.forceSignAnnotated gitconfig without breaking any other configuration. The execFileSync array form prevents shell injection, and the -m flag avoids triggering an editor prompt.

The CONTRIBUTING.md updates are a nice bonus — splitting git push origin main --tags into two separate pushes prevents the stale-tag-collision rejection, and the monotonicity guard + recovery steps documentation will save someone's afternoon.

Two nits (non-blocking):

  • No test asserts the tag command uses -a -m flags — a mock-based test on the argument vector would prevent regression if someone simplifies back to a lightweight tag.
  • The example version in CONTRIBUTING.md (v0.2.0) is far behind the actual current version (~0.6.107) — pre-existing, but worth a cleanup.

— Miga

@vanceingalls
vanceingalls merged commit ca3cab3 into main Jun 16, 2026
36 checks passed
@vanceingalls
vanceingalls deleted the fix-release-tag-and-push-docs branch June 16, 2026 20:30
vanceingalls added a commit that referenced this pull request Jun 17, 2026
set-version's stable-release next-steps printed `git push origin main --tags`,
which pushes every local tag and fails the whole push on any pre-existing tag
(it broke the v0.6.107 release). #1517 fixed CONTRIBUTING.md + annotated the tag
but missed this console message. Now prints `git push origin main` +
`git push origin v<version>`, matching the pre-release branch.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
vanceingalls added a commit that referenced this pull request Jun 17, 2026
set-version's stable-release next-steps printed `git push origin main --tags`,
which pushes every local tag and fails the whole push on any pre-existing tag
(it broke the v0.6.107 release). #1517 fixed CONTRIBUTING.md + annotated the tag
but missed this console message. Now prints `git push origin main` +
`git push origin v<version>`, matching the pre-release branch.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
vanceingalls added a commit that referenced this pull request Jun 17, 2026
…1521)

set-version's stable-release next-steps printed `git push origin main --tags`,
which pushes every local tag and fails the whole push on any pre-existing tag
(it broke the v0.6.107 release). #1517 fixed CONTRIBUTING.md + annotated the tag
but missed this console message. Now prints `git push origin main` +
`git push origin v<version>`, matching the pre-release branch.

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
dahans-msft2 pushed a commit to dahans-msft2/hyperframes that referenced this pull request Aug 6, 2026
heygen-com#1517)

- set-version: create the release tag with `git tag -a -m` instead of a
  lightweight `git tag`, which fails ("no tag message?") when a contributor has
  tag.forceSignAnnotated / required-annotation set globally — it silently broke
  the v0.6.107 tag step.
- CONTRIBUTING: replace `git push origin main --tags` (pushes every local tag →
  whole push rejected on any pre-existing collision) with pushing the specific
  tag, and document the monotonicity guard (stale higher tag blocks tagging).

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
dahans-msft2 pushed a commit to dahans-msft2/hyperframes that referenced this pull request Aug 6, 2026
…eygen-com#1521)

set-version's stable-release next-steps printed `git push origin main --tags`,
which pushes every local tag and fails the whole push on any pre-existing tag
(it broke the v0.6.107 release). heygen-com#1517 fixed CONTRIBUTING.md + annotated the tag
but missed this console message. Now prints `git push origin main` +
`git push origin v<version>`, matching the pre-release branch.

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
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.

2 participants