Skip to content

chore(release): plugin-version discipline (workflow#758)#165

Merged
intel352 merged 1 commit into
mainfrom
chore/758-release-discipline
May 23, 2026
Merged

chore(release): plugin-version discipline (workflow#758)#165
intel352 merged 1 commit into
mainfrom
chore/758-release-discipline

Conversation

@intel352
Copy link
Copy Markdown
Contributor

Summary

Per workflow#758 Layer 3 pilot — first of 5 plugin migrations validating the canonical template.

  • Delete .github/workflows/sync-plugin-version.yml — sync mechanism retired; goreleaser before-hook + binary ldflag carry the release-tag truth.
  • plugin.json.version"0.0.0" sentinel (flat M.m.p, ParseSemver-compatible; cycle 4-A1 verified).
  • plugin.json.minEngineVersion0.61.0 (requires sdk.ResolveBuildVersion + IaCServeOptions.BuildVersion from workflow v0.61.0).
  • cmd/plugin/main.go: passes sdk.ResolveBuildVersion(internal.Version) to IaCServeOptions.BuildVersion. Binary's runtime version surfaces via GetManifest RPC even when committed plugin.json shows the sentinel.
  • release.yml: pre-build wfctl plugin validate-contract --for-publish + post-build --release-dir verification; setup-wfctl pinned to v0.61.0.
  • Bump workflow pin v0.60.7 → v0.61.0.
  • Retire TestSyncPluginVersionWorkflowUpdatesDownloads (workflow gone) + TestPluginDownloadsMatchGoReleaserArchives (downloads URLs no longer tracked against committed sentinel; tarball URLs verified via --release-dir gate at release time). Replaced by TestPluginGoReleaserArchiveShape which asserts archive structural invariants without the version cross-check.

Test plan

  • GOWORK=off go build ./... — green
  • GOWORK=off go test ./... -count=1 — all green
  • Local wfctl plugin validate-contract . — PASS
  • Local wfctl plugin validate-contract --for-publish --tag v2.0.16 . — PASS
  • release.yml gates fire on next v2.0.16 tag push (post-merge)

Out of scope

  • Layer 3b: 4 additional pilot plugins (AWS, GCP, Azure, github) + 56 remaining repos. Filed as follow-ups.

Rollback

Revert PR. Restores sync workflow + workflow pin + version string. Pure-additive forward; revert is clean.

🤖 Generated with Claude Code

- Delete .github/workflows/sync-plugin-version.yml (sync mechanism retired;
  goreleaser before-hook + binary ldflag carry release-tag truth)
- plugin.json.version → "0.0.0" (sentinel; flat M.m.p parses through
  PluginManifest.ParseSemver without prerelease)
- plugin.json.minEngineVersion → 0.61.0 (requires sdk.ResolveBuildVersion +
  IaCServeOptions.BuildVersion landed in workflow v0.61.0)
- cmd/plugin/main.go: pass sdk.ResolveBuildVersion(internal.Version) to
  IaCServeOptions.BuildVersion; binary's runtime version surfaces via
  GetManifest RPC even when committed plugin.json shows the sentinel
- release.yml: pre-build wfctl plugin validate-contract --for-publish +
  post-build --release-dir verification; setup-wfctl pinned to v0.61.0
- Bump workflow pin v0.60.7 → v0.61.0
- Retire TestSyncPluginVersionWorkflowUpdatesDownloads (workflow gone) +
  TestPluginDownloadsMatchGoReleaserArchives (downloads URLs no longer
  tracked against committed sentinel; tarball-shipped URLs verified via
  --release-dir gate at release time); replaced by TestPluginGoReleaserArchiveShape
  which asserts the archive structural invariants without the version cross-check

Rollback: revert PR; restores prior sync mechanism + workflow pin.
@intel352 intel352 merged commit 0568b5b into main May 23, 2026
7 of 8 checks passed
@intel352 intel352 deleted the chore/758-release-discipline branch May 23, 2026 21:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant