Release
Pure-Go discipline (CGO_ENABLED=0, go:embed) as the foundation; Makefile+ldflags for day-to-day builds; goreleaser for tag-triggered cross-compile, archives, checksums, optional homebrew/nfpm channels. Both paths inject the same ldflags vars so version output is path-independent.
Decisions
byob-release.1— Version via -ldflags -X into a dedicated build packagebyob-release.2— version subcommand + --version flag on rootbyob-release.3— Makefile is the day-to-day entrypointbyob-release.4— goreleaser owns the release cross-compile matrixbyob-release.5— Release workflow: tag-triggered GHA invokes goreleaserbyob-release.6— Reproducibility flags: -trimpath always, -s -w on release onlybyob-release.7— Recommended .golangci.yml: pin the lint floor byob idioms assumebyob-release.8— Pure-Go discipline (CGO_ENABLED=0, go:embed) as the release foundationbyob-release.9— Lint config lands first; fix lint findings as they appearbyob-release.10— Stdlib-first; reach for deps only when the stdlib is genuinely insufficient