Skip to content

GA tag plan for Wheels 4.0.0 #2131

Closed
Closed

Description

@bpamiri

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 develop that will become 4.0.0 GA. Lock CI to green on it across the full engine × DB matrix.
  • Update box.json version from 4.0.0-SNAPSHOT to 4.0.0. Commit as chore(config): bump version to 4.0.0 for GA.
  • Rename [Unreleased] in CHANGELOG.md to [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 +N suffix — 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-SNAPSHOT in box.json after tagging. Commit as chore(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+N after v4.0.0 is 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.md from "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:

🤖 Generated with Claude Code

Activity

  1. bpamiri commented on May 12, 2026

    @bpamiri
    CollaboratorAuthor

    Closing as done. v4.0.0 was tagged today (2026-05-12) and the GA shipped end-to-end:

    • ✅ Final commit picked on develop — the 4.0 GA prep PR #2606 merged to develop, then #2607 brought develop into main with a --no-ff -X theirs merge (main and develop had diverged via 3.x-line hotfixes; FF wasn't possible)
    • ✅ wheels.json set to 4.0.0 (replaces the older box.json flow — release.yml now reads version from wheels.json)
    • ✅ CHANGELOG.md [Unreleased] → # [4.0.0](...) => 2026-05-12
    • ✅ Annotated v4.0.0 tag created at the merge commit by softprops/action-gh-release during release.yml's "Create GitHub Release" step — no +N suffix, canonical marker as specified
    • ✅ GitHub Release published at https://github.com/wheels-dev/wheels/releases/tag/v4.0.0 with all artifacts (wheels-core, wheels-cli, wheels-base-template, wheels-starter-app, wheels-module, .deb, .rpm), marked as latest
    • ✅ Pre-release archives preserved: archive/develop-pre-v4.0.0 and archive/main-pre-v4.0.0
    • ✅ Homebrew tap auto-bumped: homebrew-wheels#215 merged — Formula/wheels.rb at MODULE_VERSION = "4.0.0"
    • 🟡 Develop bump to next-patch — manual PR chore: bump develop snapshot target to 4.0.1 #2608 (the bump-develop-version.yml workflow didn't auto-fire due to a GITHUB_TOKEN event-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.
    • 🟡 Scoop bucket — Excavator's hourly scan will populate wheels.json's url/hash within ~60 min

    Workflow 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 +N build-metadata form, so the GA tag and develop snapshots can't collide.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions