nwiizo / release
Prepare, verify, publish, or troubleshoot a tfmcp release to crates.io and GitHub. Use for version changes, release readiness checks, changelog preparation, tagging, or publication.
Release tfmcp
Treat publication as an irreversible operation. Keep the version synchronized
across Cargo.toml, Cargo.lock, server.json, the OCI identifier, andDockerfile.
Prepare
Confirm the target version does not already exist on crates.io, as a Git
tag, or as a GitHub release.Update the synchronized version fields and add a dated
CHANGELOG.md
section.Update the tested Terraform version in CI and both Docker stages when the
release changes the supported baseline.Run
./Release.sh vX.Y.Z. Fix every failure; do not weaken gates to make a
release pass.Review
cargo package --listand the generated package contents for secrets,
temporary files, and stale release documents.
Publish
- Commit the verified release preparation on
main. - Push
mainand confirm the Rust CI workflow succeeds for that exact commit. - Re-run
./Release.sh vX.Y.Zfrom the clean commit. - Run
./Release.sh vX.Y.Z --publish. Verify the crates.io version, annotated Git tag, public GitHub release,
multi-platform GHCR image, and GitHub Actions results.
Never publish from a dirty worktree, bypass a failing check, reuse a release
version, or move an existing release tag.
Required gates
The release script is authoritative. It runs formatting, Clippy with warnings
denied, locked tests, audit, cargo coupling, similarity-rs, metadata
validation, diff checks, release build, package verification, and a crates.io
publish dry run.
Use cargo coupling --ai --git-months 6 --exclude-tests to diagnose structural
hotspots and similarity-rs src --skip-test --threshold 0.90 --min-lines 8 to
inspect duplicate candidates. Refactor findings only when the new boundary or
abstraction has a clear owner and preserves behavior.