SIN-Code releases are triggered by pushing a git tag. Goreleaser builds, signs, and publishes automatically.
- CEO Audit:
sin-code ceo-audit .— must score 100/A+, 48/48 gates - Test suite:
go test -race -count=1 ./cmd/sin-code/... -timeout 600s— all green - Build:
CGO_ENABLED=0 go build ./cmd/sin-code/— clean - Vet:
go vet ./...— clean - CHANGELOG.md: Add
## [vX.Y.Z] - YYYY-MM-DDsection with all changes - AGENTS.md: Update "Last verified against main" line
- README.md: Update version badge if needed
git tag vX.Y.Z && git push origin vX.Y.Z- GitHub Actions
release.ymltriggers:- Goreleaser builds linux/darwin/windows × amd64/arm64
- CGO_ENABLED=0 (M2 static binary)
- SBOM generated via syft (SPDX JSON)
- Cosign keyless signing via OIDC
- Homebrew formula pushed to
OpenSIN-Code/homebrew-sin - Build provenance attestation
- Verify release:
gh release view vX.Y.Z --repo OpenSIN-Code/SIN-Codebrew install sin-code && sin-code --versioncosign verify-blob --certificate-identity-regexp '.*' --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' checksums.txt
Python companion (src/sin_code_bundle/) uses separate python-v* tags and release-python.yml.
- Major (vX.0.0): breaking changes, MCP tool renames
- Minor (vX.Y.0): new features, new subcommands
- Patch (vX.Y.Z): bug fixes, doc updates