Release Verification¶
Local Emulation¶
Use the checked-in release scripts before you cut a tag:
make verify-branch-protection
make smoke-release
make release-emulate
make verify-branch-protection catches stale required-check policies before they block or silently weaken the release line.
make smoke-release packages and verifies the host-native archive.
make release-emulate runs the Linux amd64 release path through the repository-owned builder container.
Verify a Published Release End to End¶
If a tag is already published, use the checked-in verifier instead of replaying the commands manually:
make verify-published-release TAG=paranoid-passwd-v3.5.2
That script verifies:
the exact expected asset set
checksum integrity for the host-native archive
GitHub attestation for the downloaded artifact
the host-native smoke path through
scripts/smoke_test_release_artifact.sh
Download a Release¶
TAG=$(gh release view --repo jbcom/paranoid-passwd --json tagName --jq .tagName)
VERSION="${TAG#paranoid-passwd-v}"
gh release download "$TAG" --repo jbcom/paranoid-passwd \
-p "paranoid-passwd-${VERSION}-darwin-arm64.tar.gz" \
-p "checksums.txt"
Verify the Checksum¶
grep "paranoid-passwd-${VERSION}-darwin-arm64.tar.gz$" checksums.txt | shasum -a 256 -c
On Linux:
grep "paranoid-passwd-${VERSION}-linux-amd64.tar.gz$" checksums.txt | sha256sum -c
Verify GitHub Attestation¶
gh attestation verify "paranoid-passwd-${VERSION}-darwin-arm64.tar.gz" --owner jbcom
This ties the archive back to the GitHub Actions workflow run that produced it.
Verify the Installer Surface¶
The release workflow also validates docs/public/install.sh against a local HTTP server backed by the built archives. If you already have a complete release dist directory locally, you can rerun that validation with:
bash scripts/release_validate.sh "$VERSION" dist/release