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 the next-version closeout PR.
#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.- 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.
- The published release must hand off exact verified assets to
openclaw/homebrew-tap, then open the next patch'sUnreleasedcloseout PR.
#Dispatch
gh workflow run release.yml --repo openclaw/wacli --ref main -f version=0.15.1
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 closeout PR was opened.
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.