Releasing
Every component โ compiler, runtime, LSP, dev tooling, adapters โ
ships under one version. The tagged tree must be self-consistent, so
go install/go get consumers see the same version as the release
binaries: the workflow verifies the version, it never stamps it.
Procedure
- Release-prep commit. In one commit:
- Set
.versionto the release version without thevprefix (e.g.1.2.3), no trailing newline. - In every
adapters/*/go.mod, set therequire github.com/go-monolith/ghtmxversion to the tag (e.g.v1.2.3). The localreplacestays โ consumers ignore it; it only serves in-repo development. - Update
CHANGELOG.mdfor the release.
- Set
- Tag and push. Tag that commit
v1.2.3and push the tag. The Release workflow then:- verifies
.versionand the adapter requires match the tag, - runs the full gate set (tests including the WASM matrix, generated-code currency, govulncheck, the performance gates, and the release artifact matrix),
- builds checksummed archives for every supported platform,
verifies the shipped binary reports the tag, publishes the GitHub
release, and pushes the lockstep adapter tags
(
adapters/<name>/v1.2.3).
- verifies
- Post-release commit. Set
.versionback to the nextX.Y.Z-devand the adapter requires may stay at the released version until the next release-prep commit.
A mismatch anywhere fails the gates job before any artifact exists.