Repository navigation
GA tag plan for Wheels 4.0.0 #2131
Description
Background
Wheels 3.0.0 never got a clean v3.0.0 tag — only v3.0.0+N build-marker tags (+33 through +50). This makes it hard for docs and release notes to reference "3.0 final" unambiguously (the 4.0 feature audit had to use v3.0.0+33 as a proxy baseline).
For 4.0 GA, creating a clean v4.0.0 tag avoids repeating this problem.
Pre-GA checklist
- Pick the final commit on
developthat will become 4.0.0 GA. Lock CI to green on it across the full engine × DB matrix. - Update
box.jsonversion from4.0.0-SNAPSHOTto4.0.0. Commit aschore(config): bump version to 4.0.0 for GA. - Rename
[Unreleased]inCHANGELOG.mdto[4.0.0] - YYYY-MM-DD(use actual GA date). Commit. - Create annotated tag at the chosen commit:
git tag -a v4.0.0 -m "Wheels 4.0.0". No+Nsuffix — this is the canonical marker. - Push tag:
git push origin v4.0.0. - Create GitHub Release tied to
v4.0.0. Body = the CHANGELOG[4.0.0]section (copy-paste), plus prominent link to Upgrading to Wheels 4.0. - Bump develop to
4.1.0-SNAPSHOTinbox.jsonafter tagging. Commit aschore(config): bump version to 4.1.0-SNAPSHOT.
Workflow guard
-
Review the snapshot-tag-creating workflow to ensure it does not create
v4.0.0-SNAPSHOT+Nafterv4.0.0is tagged (such a tag would conceptually be behind the GA tag and confuses downstream tooling).grep -l "SNAPSHOT" .github/workflows/Likely culprits:
snapshot.yml, release workflows. Add a guard condition to skip when a non-SNAPSHOT version tag is present on HEAD.
Post-GA smoke tests
-
gh release view v4.0.0— confirm the Release is published and discoverable. -
gh pr list --milestone 4.0— any PRs labeled for 4.0 should be closed. - Update the "Recently Closed Gaps" header in
docs/wheels-vs-frameworks.mdfrom "April 2026" to "Wheels 4.0 (YYYY-MM-DD)". - Announcement in
#announcements(Slack / Discord / wheels.dev blog). See the blog post skeletons task for drafted themes. - ForgeBox / CommandBox package registry — confirm 4.0.0 is published and resolvable via
box install wheels@4.0.0.
Context / related work
These artifacts are the source material for the GA release and should be referenced when writing the Release body:
- 4.0 feature audit — 185-PR inventory grouped by subsystem (docs(release): add Wheels 4.0 feature audit #2123)
- 3.0 → 4.0 comparison — row-by-row breakdown of what changed (docs: add Wheels 3.0 → 4.0 ground-made-up comparison #2125)
- CHANGELOG
[Unreleased]section — full Keep-a-Changelog layout ready to rename to[4.0.0](docs(release): expand Unreleased section with full 4.0 changelog #2124) - Upgrade guide — 10 Breaking items with detection, fix, and opt-out (docs: add Wheels 4.0 upgrade guide #2130)
🤖 Generated with Claude Code
Activity
bpamiri commentedon May 12, 2026
Closing as done. v4.0.0 was tagged today (2026-05-12) and the GA shipped end-to-end:
develop— the 4.0 GA prep PR #2606 merged to develop, then #2607 brought develop into main with a--no-ff -X theirsmerge (mainanddevelophad diverged via 3.x-line hotfixes; FF wasn't possible)wheels.jsonset to4.0.0(replaces the olderbox.jsonflow —release.ymlnow reads version fromwheels.json)CHANGELOG.md[Unreleased]→# [4.0.0](...) => 2026-05-12v4.0.0tag created at the merge commit bysoftprops/action-gh-releaseduringrelease.yml's "Create GitHub Release" step — no+Nsuffix, canonical marker as specifiedwheels-core,wheels-cli,wheels-base-template,wheels-starter-app,wheels-module,.deb,.rpm), marked as latestarchive/develop-pre-v4.0.0andarchive/main-pre-v4.0.0Formula/wheels.rbatMODULE_VERSION = "4.0.0"bump-develop-version.ymlworkflow didn't auto-fire due to aGITHUB_TOKENevent-dispatch limitation, tracked in bump-develop-version.yml doesn't trigger when release.yml uses GITHUB_TOKEN to publish #2609). Note this is 4.0.1 (next-patch) per the workflow's design, not 4.1.0-SNAPSHOT as originally specified — the playbook's "snapshot baseline = next patch" lets the maintainer decide patch/minor/major at the next GA's tag-cut time without re-bumping.wheels.json'surl/hashwithin ~60 minWorkflow guard against
v4.0.0-SNAPSHOT+N: confirmed not an issue — develop snapshots have used the-snapshot.N(SemVer pre-release) form for months, not the legacy+Nbuild-metadata form, so the GA tag and develop snapshots can't collide.