feat(wfctl): plugin registry-sync subcommand + shared release-grade semver regex + type allowlist (workflow#762 Layer a)#763
Merged
Conversation
…+ template-repo modernization (workflow#762)
…stall pipeline for verify-capabilities; scaffold has tested rename script + dual main.go; allowlist defense (workflow#762)
…ry-sync + parity + 2 scaffold renames + registry template delete + sweep issue update)
…emver regex + type allowlist (#762 Layer a)
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
⏱ Benchmark Results✅ No significant performance regressions detected. benchstat comparison (baseline → PR)
|
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.
Summary
Closes workflow#762 Layer (a). First of 6 PRs in the workflow#762 series.
New `wfctl plugin registry-sync` subcommand replaces `workflow-registry/scripts/sync-versions.sh` (default mode) + `sync-core-manifests.sh` (`core` sub-mode) + `generate-readme.sh` (`readme` sub-mode). Eliminates regex duplication between operator-side (`validate-contract --for-publish`) and registry-side gates via shared `PublishGradeSemverRe` constant.
What ships
Type allowlist defense (plan C-P3)
`registry-sync` rejects any `plugin.json.type` value outside `{external, builtin, core, iac}`. Specifically, `type: "scaffold"` is rejected — catches accidental re-registration of `scaffold-workflow-plugin` + `scaffold-workflow-plugin-private` as plugins.
--verify-capabilities
Stubbed for this PR. Capability-freshness gate via plugin-binary spawn + GetManifest RPC is deferred to a workflow#762 follow-up (per plan I-P9: avoids per-PR chicken-and-egg with not-yet-released binaries; runs as part of registry-side cron once releases land).
Pipeline discipline
Out of scope (this PR)
Test plan
Rollback
Pure-additive: new subcommand, new constant file, new docs section. Existing `wfctl plugin validate-contract` unchanged; existing bash registry scripts unchanged. Revert is single `git revert`.
🤖 Generated with Claude Code