chore(release): prepare v0.3.0 and pin release signing identity in docs - #284
Merged
Conversation
The naming rules consolidated in #258 changed public rule IDs: style.block-label-case split into style.resource-name-convention and style.data-name-convention, style.{variable,output,local}-naming gained -name-convention suffixes, and lint.terraform-naming-convention was removed. Those IDs are config keys, suppression annotation targets, and SARIF rule IDs, and unrecognized keys are ignored rather than rejected, so a stale config loads cleanly and silently drops its overrides. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The documented cosign identity regexp matched any ref in the repository, so it accepted a signature from any workflow on any branch. Pin the exact release.yml identity and tag ref, and pass --signer-workflow and --source-ref to gh attestation verify. Add a bumpversion entry so the pinned refs/tags/vX.Y.Z tracks the version alongside the existing download commands. Record why the strict command fails against v0.2.0: those artifacts were published by dispatching from main, so the certificate names refs/heads/main and commit bc6433c rather than the tag. Refs #279 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
bump:patch, bump:minor, and bump:major were described as landing on a stable version, but pre_l resets to alpha whenever a higher part is bumped, so each one opens a pre-release cycle instead. Cutting 0.3.0 took bump:minor followed by bump:stable. Describe that, and note that bump:pre run from a stable version serializes the optional final label and yields 0.3.0-final.2. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
santosr2
added a commit
that referenced
this pull request
Sep 1, 2026
git-cliff ends its output with a blank line, and update-changelog commits CHANGELOG.md without running pre-commit. The extra newline lands on main and fails end-of-file-fixer on every later PR, since pre-commit/action runs --all-files. It has been cycling since v0.2.0: ffe738c generated it broken, 6b23df7 silently repaired it, and efcba7d broke it again with the v0.3.0 release. PR #284 passed only because it landed inside the repaired window. Collapse trailing newlines in the job so it stops recurring, and fix the file on main via the hook itself rather than by hand, since CHANGELOG.md is generated. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
Release prep for v0.3.0: version bumps for the Go project (0.2.0 → 0.3.0) and the VS Code extension (0.2.1 → 0.3.0), an upgrade-guide entry for the rule-ID renames, and the tightened verification commands promised in #279.
Why: This release was originally planned as v0.2.1, but a patch is the wrong classification. #258 renamed public rule IDs —
style.block-label-casesplit intostyle.resource-name-conventionandstyle.data-name-convention,style.{variable,output,local}-naminggained-name-conventionsuffixes, andlint.terraform-naming-conventionwas removed. Those IDs are config keys,terratidy:ignoretargets, and SARIF rule IDs, so existing configs break. Worse,internal/configdoes not reject unrecognized rule keys, so a config left on the old IDs loads without error and silently stops applying its overrides.git-cliffalready routes that commit into a Breaking Changes group, which would have appeared under a patch heading.pkg/sdkitself is unchanged apart from doc comments, sogoreleasestays clean.The VS Code extension follows the
major.minormatches Go rule fromvscode/.bumpversion.toml, landing on 0.3.0 — the "versions realign here" case that config already anticipates.On the verification side, the documented cosign identity used
--certificate-identity-regexp 'https://github.com/santosr2/TerraTidy', which matches any workflow on any ref in the repository. It is now pinned to the exactrelease.yml@refs/tags/vX.Y.Zidentity, andgh attestation verifygained--signer-workflowand--source-ref. A new.bumpversion.tomlentry keeps those pinned tags in step with the version. The guide also records why the strict command fails against v0.2.0: those artifacts were published by dispatching frommain, so the certificate namesrefs/heads/mainand commitbc6433crather than the tag.Refs #279
How to test
After the tag is pushed, the tightened command should verify against the v0.3.0 artifacts:
Notes for reviewers
mise run bump:minordoes not produce a stable minor version.pre_lcarriesoptional_value = "final"withvalues = ["alpha", "beta", "rc", "final"], so a minor bump resets the pre-release part and lands on0.3.0-alpha. Reaching0.3.0tookbump:minorfollowed bybump:stable. Themise.tomldescriptions claimed otherwise, so the last commit corrects them (andCLAUDE.md) to say these tasks open a pre-release cycle. The serialization itself is left as-is on purpose: resetting toalphais what lets a pre-1.0 project start a new alpha cycle, andbump:stableis the documented way to finish one.bump:prehas a related sharp edge, now documented rather than changed: run from a stable version it serializes the optionalfinallabel and yields0.3.0-final.2.The v0.2.0 certificate is not fixable. Re-signing needs a workflow at the tag's commit that has a
workflow_dispatchtrigger (it does not), re-pushing the tag re-runs the GoReleaser v2.15.0 build that #250 fixed, and re-pointing the tag breaks the module proxy entry. The guide documents the workaround (rebuild from the tag and compare checksums, since builds are reproducible) instead.CHANGELOG.mdis untouched —git-cliffregenerates it from the release workflow after the tag is cut.The v0.2.0 release notes now carry a warning about the mislabeled certificate, and #279 has a comment explaining the switch from v0.2.1 to v0.3.0. The one remaining step after merge is pushing the signed
v0.3.0tag.Checklist
mise run checkruns fmt, vet, lint, and test)🤖 Generated with Claude Code