Release
Read when: preparing or verifying an official wacli release.
wacli uses the fleet-standard reusable Go CLI workflow from openclaw/release-workflows@v1. The repository wrapper is intentionally thin: it supplies the wacli artifact contract and maps repository secrets, while the shared workflow owns source freezing, the annotated tag, builds, signing, notarization, independent verification, publication, Homebrew handoff, and changelog closeout.
#Release contract
- Dispatch
.github/workflows/release.ymlfrom the protected default branch with the version to release. CHANGELOG.mdmust contain exactly one dated level-two section for that version, andcmd/wacli/root.gomust already report it.- The canonical GoReleaser config builds the Darwin CGO binaries on macOS.
.goreleaser-linux-windows.yamlbuilds Linux amd64/arm64 and Windows amd64 with the fixed cross-compilers supplied by the shared workflow.LICENSEandREADME.mdare preserved in every archive, and the published checksum asset remainschecksums.txt.- Official Darwin archives target macOS 15.0 (Sequoia) or newer on both architectures; verify
LC_BUILD_VERSIONfor each published binary. - The Darwin GoReleaser post-build hook checks each Mach-O slice with
otooland rejects any minimum other than macOS 15.0 before signing or publication. Recheck downloaded binaries withbash scripts/check-macos-minimum.sh <binary>. - Every Darwin binary retains the established
org.openclaw.wacliidentifier and OpenClaw Foundation Developer ID identity. - The independent rebuild must reproduce every staged Linux and Windows binary byte-for-byte before publication.
- Build and verification use the exact preferred
toolchainfrom the frozen commit'sgo.mod(currently Go 1.27.2); thegodirective remains the Go 1.27.0 source minimum. Historical commits without atoolchaindirective use their exactgoversion. - The published release must hand off exact verified assets to
openclaw/homebrew-tap. Keep an emptyUnreleasedsection above the dated release notes; if that section is absent, the workflow opens a closeout PR to restore it. Closeout does not bump the source version.
#Dispatch
gh workflow run release.yml --repo openclaw/wacli --ref main -f version=0.20.0
Watch the exact run through completion. A successful run is not sufficient on its own: verify the public release is non-draft and non-prerelease, its tag peels to the frozen protected-main commit, every expected asset is present, checksums.txt validates the downloaded assets, both native macOS verifier jobs passed, the Homebrew update run succeeded, and the empty Unreleased section is present. If a closeout PR was needed, merge it after its checks pass.
Retries reuse the immutable annotated version tag and its frozen commit. Never move or replace a consumer release tag to recover from a failed run; fix the shared workflow or caller on main, then dispatch the same version again.