Skip to content

docs: rewrite maintaining guide for the v3 branch and release model - #65

Merged
jasoet merged 2 commits into
nextfrom
docs/maintaining-v3-release-process
Aug 17, 2026
Merged

docs: rewrite maintaining guide for the v3 branch and release model#65
jasoet merged 2 commits into
nextfrom
docs/maintaining-v3-release-process

Conversation

@jasoet

@jasoet jasoet commented Aug 17, 2026

Copy link
Copy Markdown
Owner

Why now

This file is a hazard for the pending v3 promotion.

It predated the v3 rework and contradicted itself — module path given as /v3, but main's purpose described as "active development for v2.x releases". It never mentioned the next branch or release/v2, and described ci.yml as PR-only when it also runs on push and tags.

The consequential part: it told authors their PR description becomes release notes "when squash-merged", unqualified.

That is correct for merges into next. It is wrong for promoting a line into main:

gh pr merge <N> --squash   # collapses 102 commits into 1
                           # destroys all 22 BREAKING CHANGE footers

semantic-release would then analyse a single commit against main's last tag (v2.13.1) and compute v2.14.0 instead of v3.0.0 — an invalid tag for a module whose path is /v3, and only visible once published.

Change

  • Branch table: main / next / release/v2 / release/v1 with their module paths, status and release patterns.
  • The merge-commit rule for line promotion, with the reasoning above stated at the point of decision so it can't be "simplified" away.
  • A pre-promotion checklist, including that gorelease reporting Inferred base version: none is the expected result on the release PR, not a failure.
  • Accurate workflow triggers, the gorelease pinning note, and why the tagged go vet step exists separately from task check.
  • Points at CONTRIBUTING.md for contributor-facing process rather than duplicating it.

All relative links verified to resolve.

jasoet added 2 commits August 17, 2026 20:51
The guide predated the v3 rework and contradicted itself: it gave the module
path as /v3 while describing main's purpose as "active development for v2.x
releases", never mentioned the next branch or release/v2, and described ci.yml
as PR-only when it also runs on push and tags.

More consequentially, it told authors their PR description becomes release
notes "when squash-merged" without qualification. That is right for merges into
next and wrong for promoting a line into main: squashing collapses the line into
one commit and destroys every BREAKING CHANGE footer, so semantic-release would
analyse a single commit against main's last tag. For the pending v3 promotion
that computes v2.14.0 rather than v3.0.0 — an invalid tag for a /v3 module path,
and only visible once published.

Document the branch table, the merge-commit rule with its reasoning, a
pre-promotion checklist including the expected informational gorelease result,
and the actual workflow triggers.
Simulating both merge strategies locally and running semantic-release
--dry-run gives 3.0.0 for a merge commit and 2.14.0 for a squash, with 0 of
the 22 BREAKING CHANGE footers surviving the squash. State the numbers and
include the commands so a maintainer can re-check before any promotion instead
of trusting the claim.
@jasoet
jasoet merged commit d802f3a into next Aug 17, 2026
1 of 4 checks passed
@jasoet
jasoet deleted the docs/maintaining-v3-release-process branch August 17, 2026 21:17
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