Skip to content

fix(release): embed plugin.json so Manifest.Name is populated#15

Merged
intel352 merged 1 commit into
mainfrom
fix/release-manifest-provider-2026-05-26T1900
May 27, 2026
Merged

fix(release): embed plugin.json so Manifest.Name is populated#15
intel352 merged 1 commit into
mainfrom
fix/release-manifest-provider-2026-05-26T1900

Conversation

@intel352

Copy link
Copy Markdown
Contributor

Summary

The v0.1.3 Release workflow failed wfctl plugin verify-capabilities:

FAIL  workflow-plugin-namecheap (plugin.json)
  - name: plugin.json="workflow-plugin-namecheap"; binary Manifest.Name=""
  - version: plugin.json="0.1.0"; binary Manifest.Version="0.1.3"

Root cause: this plugin's main.go did not pass ManifestProvider to IaCServeOptions, so the binary's GetManifest RPC returned the zero-value PluginManifest. The post-build truth-check then sees Manifest.Name="" and rejects the artifact.

Fix (mirrors workflow-plugin-digitalocean + workflow-plugin-hover)

  • cmd/workflow-plugin-namecheap/main.go — add _ "embed" import + //go:embed plugin.json + ManifestProvider: sdk.MustEmbedManifest(pluginJSON) option.
  • cmd/workflow-plugin-namecheap/plugin.json — committed copy alongside main.go so go:embed resolves (mirrors DO layout cmd/plugin/plugin.json + root copy kept in sync via wfctl plugin validate-contract).
  • plugin.json (root) — bump version 0.1.00.1.4. v0.1.3 stays tagged for history; v0.1.4 is the first artifact that publishes through the verify-capabilities gate.

Local verification

$ GOWORK=off go build -o /tmp/wpn-test ./cmd/workflow-plugin-namecheap/
$ wfctl plugin verify-capabilities --binary /tmp/wpn-test .

Name check now passes. Version check still reports the dev sentinel 0.0.0 locally — release-time goreleaser ldflags inject the tag, matching the DO + Hover pattern.

Unblocks

workflow-registry PR 5 (the DNS provider EnumerateAll cascade pin bump in docs/plans/2026-05-26-dns-provider-contract.md).

Test plan

  • GOWORK=off go test ./... green.
  • wfctl plugin verify-capabilities locally: Name populated.
  • CI Release workflow on tag v0.1.4 must publish (verify-capabilities green, release un-drafted).

🤖 Generated with Claude Code

Release v0.1.3 failed `wfctl plugin verify-capabilities` with:
  name: plugin.json="workflow-plugin-namecheap"; binary Manifest.Name=""
  version: plugin.json="0.1.0"; binary Manifest.Version="0.1.3"

Mirrors the workflow-plugin-digitalocean / workflow-plugin-hover pattern:
the IaC server's GetManifest RPC needs a `ManifestProvider` so the runtime
truth-check sees the same Name + capability surface that plugin.json
declares. Without it, `Manifest.Name` is the zero value and the post-build
verify step rejects the artifact.

Changes:
- cmd/workflow-plugin-namecheap/main.go: add `_ \"embed\"` import +
  `//go:embed plugin.json` directive + `ManifestProvider:
  sdk.MustEmbedManifest(pluginJSON)` option on IaCServeOptions.
- cmd/workflow-plugin-namecheap/plugin.json: committed copy alongside
  main.go for go:embed (mirrors DO + Hover layout). Both files kept in
  sync via the release-time validate-contract step.
- plugin.json (root): bump version 0.1.0 → 0.1.4. The v0.1.3 tag is left
  in place for history; v0.1.4 is the first release that publishes
  successfully through the verify-capabilities gate.

Unblocks workflow-registry PR 5 (DNS provider EnumerateAll cascade pin
bump). Tagged v0.1.4 will be the manifest pin.
@intel352 intel352 merged commit 4fff931 into main May 27, 2026
4 checks passed
@intel352 intel352 deleted the fix/release-manifest-provider-2026-05-26T1900 branch May 27, 2026 01:15
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