The v0.2.0 release died twice on the runner -- once OOM-killed by six parallel builds, once with the host going away mid-compile -- and each time the only way back was to delete the tag and push it again. That is destructive, it rewrites published history for a version that may already be half-published, and it is easy to get wrong under pressure. Add a workflow_dispatch trigger so the same release can simply be re-run. goreleaser refuses to release from an untagged commit, so a dispatch can only ever republish a real tag. The sdks job derived VERSION from the ref name, which is the tag on a push but the branch on a dispatch. It now asks git which tag the checked-out commit carries, with --exact-match so an untagged commit fails loudly instead of publishing under the previous version. That needs the tags, hence fetch-depth.