Versioning
Version formats
Section titled “Version formats”| Build type | Version format |
|---|---|
| Tagged release | Semantic version tag, e.g. v0.4.2 |
| Local dev build | devel |
| Local task build | git describe --long output |
go install | Go module build info |
Run bmo --version to see the version in your installed binary.
Where version comes from
Section titled “Where version comes from”- Runtime variable:
internal/version/version.go - Task builds:
Taskfile.yamlinjects the version via-ldflagsat build time VERSION=git describe --long(requires tags)
Release process
Section titled “Release process”Releases are tag-driven, but the tag must point at an exact validated commit. Use the remote validation step first:
task release:validateThat checks the current remote main head (or an explicit SHA) against the
required GitHub workflows and prints the validated SHA without requiring a
clean local checkout. Use task release:next to suggest the next tag, then
dispatch the release workflow against that validated SHA with a notes file:
task release:nexttask release:tag TAG=vX.Y.Z SHA=<validated-sha> NOTES_FILE=/path/to/release-notes.mdThis flow:
task release:validateresolves the exact remote commit and requires successfulBMO Ship,BMO Signal, andRequired Go Checksworkflow runs for that SHA.task release:tagrequires the explicit SHA to be contained inorigin/main, rejects published releases for the same tag, and dispatches.github/workflows/bmo-release.ymlwith explicittag,sha, and release notes inputs.- The release workflow creates or refreshes the draft release at that exact SHA, creating the tag remotely when needed.
- The workflow publishes the GitHub release only after the tagged commit’s source bundle, platform binaries, checksums, SBOM, vulnerability report, and paper book PDF pass verification.
- If you need a local source-proof rerun while changing release surfaces, use
task release:validate:localfrom a cleanmaincheckout.
Release candidates must also publish the validated source bundle and evidence artifacts on the tagged GitHub release.
Verifying a local build
Section titled “Verifying a local build”task build./bmo --version- Version bump strategy is determined by
svu; always review the proposed next version before confirming. - If a stricter commit/tag convention is desired, document it separately and keep aligned with
svu.