Skip to content

feat(wfctl): add status + private fields to RegistryManifest#715

Merged
intel352 merged 4 commits into
mainfrom
feat/registrymanifest-status-field
May 19, 2026
Merged

feat(wfctl): add status + private fields to RegistryManifest#715
intel352 merged 4 commits into
mainfrom
feat/registrymanifest-status-field

Conversation

@intel352
Copy link
Copy Markdown
Contributor

Summary

  • Adds optional Status field (verified|experimental|deprecated) to RegistryManifest Go struct, aligning with the workflow-registry schema extension (Task 2).
  • Adds Private bool field to RegistryManifest mirroring the existing manifest.json private field that was previously silently discarded on unmarshal.
  • Propagates Status through PluginSummary and all SearchPlugins callsites (GitHubRegistrySource, StaticRegistrySource, mockRegistrySource), making the verification status user-visible in wfctl marketplace search output.
  • Adds enum validation in ValidateManifest — accepts verified, experimental, deprecated, rejects anything else.
  • Updates staticIndexEntry to carry a status field from index.json.
  • Adds 3 new unit tests (TDD): TestValidateManifest_StatusEnum, TestRegistryManifest_PrivateField, TestPluginSummary_StatusPropagation.

References

  • Plan: docs/plans/2026-05-19-multi-repo-qol-sweep.md Task 1 (Step B)
  • Design: docs/plans/2026-05-19-multi-repo-qol-sweep-design.md Step B section

Rollback Note

Revert this PR; existing manifests with status fields continue parsing correctly because Go's encoding/json ignores unknown fields, but ValidateManifest will accept invalid status values until the validation block returns. If Task 16 (registry manifest population) has already merged, revert Task 16's PR FIRST, then revert this PR.

Test plan

  • go test ./cmd/wfctl/... — all tests pass including 3 new ones
  • go vet ./cmd/wfctl/... — no output
  • go build ./cmd/wfctl — exits 0

🤖 Generated with Claude Code

- Adds optional Status (verified|experimental|deprecated) to RegistryManifest aligning with workflow-registry schema extension.
- Adds Private bool to RegistryManifest mirroring existing manifest.json field (was silently discarded).
- Propagates Status through PluginSummary + SearchPlugins callsites so wfctl plugin list and wfctl marketplace search surface the verification status.
- Adds enum validation in ValidateManifest.
- Updates staticIndexEntry to carry status from index.json.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 19, 2026 15:15
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds registry manifest metadata support in wfctl so registry status is validated, propagated through search results, and displayed to users, while preserving the existing private manifest flag during JSON unmarshal.

Changes:

  • Added status and private fields to RegistryManifest, plus status enum validation.
  • Propagated status through GitHub/static/mock registry search paths and CLI search output.
  • Added unit coverage for status validation, private-field unmarshalling, and summary propagation.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
cmd/wfctl/registry_validate.go Adds allowed status values and validation errors for invalid status.
cmd/wfctl/registry_source.go Carries status through GitHub and static registry search results.
cmd/wfctl/plugin_registry.go Extends manifest and summary structs with status/private metadata.
cmd/wfctl/plugin_install.go Displays status as a new column in plugin search output.
cmd/wfctl/multi_registry_test.go Adds tests for status validation, private unmarshalling, and status propagation.

runPluginList was missed in the initial implementation. Status is not
persisted to disk on install so renders as "-" for installed plugins,
keeping table alignment consistent with marketplace search output.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 19, 2026

⏱ Benchmark Results

No significant performance regressions detected.

benchstat comparison (baseline → PR)
## benchstat: baseline → PR
baseline-bench.txt:274: parsing iteration count: invalid syntax
baseline-bench.txt:297068: parsing iteration count: invalid syntax
baseline-bench.txt:558240: parsing iteration count: invalid syntax
baseline-bench.txt:855532: parsing iteration count: invalid syntax
baseline-bench.txt:1155632: parsing iteration count: invalid syntax
baseline-bench.txt:1477923: parsing iteration count: invalid syntax
benchmark-results.txt:274: parsing iteration count: invalid syntax
benchmark-results.txt:331862: parsing iteration count: invalid syntax
benchmark-results.txt:625614: parsing iteration count: invalid syntax
benchmark-results.txt:940372: parsing iteration count: invalid syntax
benchmark-results.txt:1236656: parsing iteration count: invalid syntax
benchmark-results.txt:1489110: parsing iteration count: invalid syntax
goos: linux
goarch: amd64
pkg: github.com/GoCodeAlone/workflow/dynamic
cpu: AMD EPYC 7763 64-Core Processor                
                            │ baseline-bench.txt │
                            │       sec/op       │
InterpreterCreation-4               7.740m ± 59%
ComponentLoad-4                     3.655m ± 10%
ComponentExecute-4                  1.934µ ±  2%
PoolContention/workers-1-4          1.109µ ±  3%
PoolContention/workers-2-4          1.088µ ±  2%
PoolContention/workers-4-4          1.074µ ±  1%
PoolContention/workers-8-4          1.080µ ±  1%
PoolContention/workers-16-4         1.077µ ±  0%
ComponentLifecycle-4                3.586m ±  0%
SourceValidation-4                  2.307µ ±  1%
RegistryConcurrent-4                805.0n ±  3%
LoaderLoadFromString-4              3.595m ±  0%
geomean                             18.82µ

                            │ baseline-bench.txt │
                            │        B/op        │
InterpreterCreation-4               2.027Mi ± 0%
ComponentLoad-4                     2.180Mi ± 0%
ComponentExecute-4                  1.203Ki ± 0%
PoolContention/workers-1-4          1.203Ki ± 0%
PoolContention/workers-2-4          1.203Ki ± 0%
PoolContention/workers-4-4          1.203Ki ± 0%
PoolContention/workers-8-4          1.203Ki ± 0%
PoolContention/workers-16-4         1.203Ki ± 0%
ComponentLifecycle-4                2.183Mi ± 0%
SourceValidation-4                  1.984Ki ± 0%
RegistryConcurrent-4                1.133Ki ± 0%
LoaderLoadFromString-4              2.182Mi ± 0%
geomean                             15.25Ki

                            │ baseline-bench.txt │
                            │     allocs/op      │
InterpreterCreation-4                15.68k ± 0%
ComponentLoad-4                      18.02k ± 0%
ComponentExecute-4                    25.00 ± 0%
PoolContention/workers-1-4            25.00 ± 0%
PoolContention/workers-2-4            25.00 ± 0%
PoolContention/workers-4-4            25.00 ± 0%
PoolContention/workers-8-4            25.00 ± 0%
PoolContention/workers-16-4           25.00 ± 0%
ComponentLifecycle-4                 18.07k ± 0%
SourceValidation-4                    32.00 ± 0%
RegistryConcurrent-4                  2.000 ± 0%
LoaderLoadFromString-4               18.06k ± 0%
geomean                               183.3

cpu: AMD EPYC 9V74 80-Core Processor                
                            │ benchmark-results.txt │
                            │        sec/op         │
InterpreterCreation-4                  6.989m ± 57%
ComponentLoad-4                        3.544m ±  4%
ComponentExecute-4                     1.889µ ±  2%
PoolContention/workers-1-4             1.064µ ±  2%
PoolContention/workers-2-4             1.067µ ±  1%
PoolContention/workers-4-4             1.024µ ±  4%
PoolContention/workers-8-4             1.035µ ±  2%
PoolContention/workers-16-4            1.027µ ±  0%
ComponentLifecycle-4                   3.553m ±  2%
SourceValidation-4                     2.083µ ±  0%
RegistryConcurrent-4                   750.5n ±  5%
LoaderLoadFromString-4                 3.589m ±  1%
geomean                                17.99µ

                            │ benchmark-results.txt │
                            │         B/op          │
InterpreterCreation-4                  2.027Mi ± 0%
ComponentLoad-4                        2.180Mi ± 0%
ComponentExecute-4                     1.203Ki ± 0%
PoolContention/workers-1-4             1.203Ki ± 0%
PoolContention/workers-2-4             1.203Ki ± 0%
PoolContention/workers-4-4             1.203Ki ± 0%
PoolContention/workers-8-4             1.203Ki ± 0%
PoolContention/workers-16-4            1.203Ki ± 0%
ComponentLifecycle-4                   2.183Mi ± 0%
SourceValidation-4                     1.984Ki ± 0%
RegistryConcurrent-4                   1.133Ki ± 0%
LoaderLoadFromString-4                 2.182Mi ± 0%
geomean                                15.25Ki

                            │ benchmark-results.txt │
                            │       allocs/op       │
InterpreterCreation-4                   15.68k ± 0%
ComponentLoad-4                         18.02k ± 0%
ComponentExecute-4                       25.00 ± 0%
PoolContention/workers-1-4               25.00 ± 0%
PoolContention/workers-2-4               25.00 ± 0%
PoolContention/workers-4-4               25.00 ± 0%
PoolContention/workers-8-4               25.00 ± 0%
PoolContention/workers-16-4              25.00 ± 0%
ComponentLifecycle-4                    18.07k ± 0%
SourceValidation-4                       32.00 ± 0%
RegistryConcurrent-4                     2.000 ± 0%
LoaderLoadFromString-4                  18.06k ± 0%
geomean                                  183.3

pkg: github.com/GoCodeAlone/workflow/middleware
cpu: AMD EPYC 7763 64-Core Processor                
                                  │ baseline-bench.txt │
                                  │       sec/op       │
CircuitBreakerDetection-4                  285.8n ± 0%
CircuitBreakerExecution_Success-4          21.47n ± 0%
CircuitBreakerExecution_Failure-4          66.10n ± 0%
geomean                                    74.03n

                                  │ baseline-bench.txt │
                                  │        B/op        │
CircuitBreakerDetection-4                 144.0 ± 0%
CircuitBreakerExecution_Success-4         0.000 ± 0%
CircuitBreakerExecution_Failure-4         0.000 ± 0%
geomean                                              ¹
¹ summaries must be >0 to compute geomean

                                  │ baseline-bench.txt │
                                  │     allocs/op      │
CircuitBreakerDetection-4                 1.000 ± 0%
CircuitBreakerExecution_Success-4         0.000 ± 0%
CircuitBreakerExecution_Failure-4         0.000 ± 0%
geomean                                              ¹
¹ summaries must be >0 to compute geomean

cpu: AMD EPYC 9V74 80-Core Processor                
                                  │ benchmark-results.txt │
                                  │        sec/op         │
CircuitBreakerDetection-4                     296.7n ± 0%
CircuitBreakerExecution_Success-4             22.67n ± 0%
CircuitBreakerExecution_Failure-4             71.16n ± 0%
geomean                                       78.21n

                                  │ benchmark-results.txt │
                                  │         B/op          │
CircuitBreakerDetection-4                    144.0 ± 0%
CircuitBreakerExecution_Success-4            0.000 ± 0%
CircuitBreakerExecution_Failure-4            0.000 ± 0%
geomean                                                 ¹
¹ summaries must be >0 to compute geomean

                                  │ benchmark-results.txt │
                                  │       allocs/op       │
CircuitBreakerDetection-4                    1.000 ± 0%
CircuitBreakerExecution_Success-4            0.000 ± 0%
CircuitBreakerExecution_Failure-4            0.000 ± 0%
geomean                                                 ¹
¹ summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/module
cpu: AMD EPYC 7763 64-Core Processor                
                                 │ baseline-bench.txt │
                                 │       sec/op       │
IaCStateBackend_InProcess-4              309.7n ± 26%
IaCStateBackend_GRPC-4                   9.500m ±  3%
JQTransform_Simple-4                     656.9n ± 56%
JQTransform_ObjectConstruction-4         1.630µ ±  0%
JQTransform_ArraySelect-4                3.582µ ±  1%
JQTransform_Complex-4                    39.81µ ±  0%
JQTransform_Throughput-4                 1.971µ ±  1%
SSEPublishDelivery-4                     70.17n ±  1%
geomean                                  3.973µ

                                 │ baseline-bench.txt │
                                 │        B/op        │
IaCStateBackend_InProcess-4              416.0 ± 0%
IaCStateBackend_GRPC-4                 5.883Mi ± 9%
JQTransform_Simple-4                   1.273Ki ± 0%
JQTransform_ObjectConstruction-4       1.773Ki ± 0%
JQTransform_ArraySelect-4              2.625Ki ± 0%
JQTransform_Complex-4                  16.22Ki ± 0%
JQTransform_Throughput-4               1.984Ki ± 0%
SSEPublishDelivery-4                     0.000 ± 0%
geomean                                             ¹
¹ summaries must be >0 to compute geomean

                                 │ baseline-bench.txt │
                                 │     allocs/op      │
IaCStateBackend_InProcess-4              2.000 ± 0%
IaCStateBackend_GRPC-4                  6.838k ± 0%
JQTransform_Simple-4                     10.00 ± 0%
JQTransform_ObjectConstruction-4         15.00 ± 0%
JQTransform_ArraySelect-4                30.00 ± 0%
JQTransform_Complex-4                    324.0 ± 0%
JQTransform_Throughput-4                 17.00 ± 0%
SSEPublishDelivery-4                     0.000 ± 0%
geomean                                             ¹
¹ summaries must be >0 to compute geomean

cpu: AMD EPYC 9V74 80-Core Processor                
                                 │ benchmark-results.txt │
                                 │        sec/op         │
IaCStateBackend_InProcess-4                 297.2n ± 31%
IaCStateBackend_GRPC-4                      10.38m ±  2%
JQTransform_Simple-4                        654.2n ± 45%
JQTransform_ObjectConstruction-4            1.552µ ±  1%
JQTransform_ArraySelect-4                   3.670µ ±  1%
JQTransform_Complex-4                       42.63µ ±  1%
JQTransform_Throughput-4                    1.889µ ±  1%
SSEPublishDelivery-4                        64.86n ±  1%
geomean                                     3.957µ

                                 │ benchmark-results.txt │
                                 │         B/op          │
IaCStateBackend_InProcess-4                 416.0 ± 0%
IaCStateBackend_GRPC-4                    5.801Mi ± 8%
JQTransform_Simple-4                      1.273Ki ± 0%
JQTransform_ObjectConstruction-4          1.773Ki ± 0%
JQTransform_ArraySelect-4                 2.625Ki ± 0%
JQTransform_Complex-4                     16.22Ki ± 0%
JQTransform_Throughput-4                  1.984Ki ± 0%
SSEPublishDelivery-4                        0.000 ± 0%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                 │ benchmark-results.txt │
                                 │       allocs/op       │
IaCStateBackend_InProcess-4                 2.000 ± 0%
IaCStateBackend_GRPC-4                     6.862k ± 0%
JQTransform_Simple-4                        10.00 ± 0%
JQTransform_ObjectConstruction-4            15.00 ± 0%
JQTransform_ArraySelect-4                   30.00 ± 0%
JQTransform_Complex-4                       324.0 ± 0%
JQTransform_Throughput-4                    17.00 ± 0%
SSEPublishDelivery-4                        0.000 ± 0%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/schema
cpu: AMD EPYC 7763 64-Core Processor                
                                    │ baseline-bench.txt │
                                    │       sec/op       │
SchemaValidation_Simple-4                   1.100µ ± 16%
SchemaValidation_AllFields-4                1.658µ ±  1%
SchemaValidation_FormatValidation-4         1.591µ ±  1%
SchemaValidation_ManySchemas-4              1.826µ ± 13%
geomean                                     1.517µ

                                    │ baseline-bench.txt │
                                    │        B/op        │
SchemaValidation_Simple-4                   0.000 ± 0%
SchemaValidation_AllFields-4                0.000 ± 0%
SchemaValidation_FormatValidation-4         0.000 ± 0%
SchemaValidation_ManySchemas-4              0.000 ± 0%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                    │ baseline-bench.txt │
                                    │     allocs/op      │
SchemaValidation_Simple-4                   0.000 ± 0%
SchemaValidation_AllFields-4                0.000 ± 0%
SchemaValidation_FormatValidation-4         0.000 ± 0%
SchemaValidation_ManySchemas-4              0.000 ± 0%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

cpu: AMD EPYC 9V74 80-Core Processor                
                                    │ benchmark-results.txt │
                                    │        sec/op         │
SchemaValidation_Simple-4                       1.080µ ± 2%
SchemaValidation_AllFields-4                    1.665µ ± 2%
SchemaValidation_FormatValidation-4             1.580µ ± 1%
SchemaValidation_ManySchemas-4                  1.623µ ± 4%
geomean                                         1.465µ

                                    │ benchmark-results.txt │
                                    │         B/op          │
SchemaValidation_Simple-4                      0.000 ± 0%
SchemaValidation_AllFields-4                   0.000 ± 0%
SchemaValidation_FormatValidation-4            0.000 ± 0%
SchemaValidation_ManySchemas-4                 0.000 ± 0%
geomean                                                   ¹
¹ summaries must be >0 to compute geomean

                                    │ benchmark-results.txt │
                                    │       allocs/op       │
SchemaValidation_Simple-4                      0.000 ± 0%
SchemaValidation_AllFields-4                   0.000 ± 0%
SchemaValidation_FormatValidation-4            0.000 ± 0%
SchemaValidation_ManySchemas-4                 0.000 ± 0%
geomean                                                   ¹
¹ summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/store
cpu: AMD EPYC 7763 64-Core Processor                
                                   │ baseline-bench.txt │
                                   │       sec/op       │
EventStoreAppend_InMemory-4                1.185µ ± 14%
EventStoreAppend_SQLite-4                  1.395m ±  5%
GetTimeline_InMemory/events-10-4           13.71µ ±  4%
GetTimeline_InMemory/events-50-4           73.71µ ± 16%
GetTimeline_InMemory/events-100-4          123.8µ ±  1%
GetTimeline_InMemory/events-500-4          640.8µ ±  2%
GetTimeline_InMemory/events-1000-4         1.304m ±  2%
GetTimeline_SQLite/events-10-4             107.7µ ±  2%
GetTimeline_SQLite/events-50-4             246.9µ ±  1%
GetTimeline_SQLite/events-100-4            418.2µ ±  1%
GetTimeline_SQLite/events-500-4            1.781m ±  0%
GetTimeline_SQLite/events-1000-4           3.446m ±  1%
geomean                                    218.4µ

                                   │ baseline-bench.txt │
                                   │        B/op        │
EventStoreAppend_InMemory-4                  770.0 ± 8%
EventStoreAppend_SQLite-4                  1.985Ki ± 2%
GetTimeline_InMemory/events-10-4           7.953Ki ± 0%
GetTimeline_InMemory/events-50-4           46.62Ki ± 0%
GetTimeline_InMemory/events-100-4          94.48Ki ± 0%
GetTimeline_InMemory/events-500-4          472.8Ki ± 0%
GetTimeline_InMemory/events-1000-4         944.3Ki ± 0%
GetTimeline_SQLite/events-10-4             16.74Ki ± 0%
GetTimeline_SQLite/events-50-4             87.14Ki ± 0%
GetTimeline_SQLite/events-100-4            175.4Ki ± 0%
GetTimeline_SQLite/events-500-4            846.1Ki ± 0%
GetTimeline_SQLite/events-1000-4           1.639Mi ± 0%
geomean                                    67.20Ki

                                   │ baseline-bench.txt │
                                   │     allocs/op      │
EventStoreAppend_InMemory-4                  7.000 ± 0%
EventStoreAppend_SQLite-4                    53.00 ± 0%
GetTimeline_InMemory/events-10-4             125.0 ± 0%
GetTimeline_InMemory/events-50-4             653.0 ± 0%
GetTimeline_InMemory/events-100-4           1.306k ± 0%
GetTimeline_InMemory/events-500-4           6.514k ± 0%
GetTimeline_InMemory/events-1000-4          13.02k ± 0%
GetTimeline_SQLite/events-10-4               382.0 ± 0%
GetTimeline_SQLite/events-50-4              1.852k ± 0%
GetTimeline_SQLite/events-100-4             3.681k ± 0%
GetTimeline_SQLite/events-500-4             18.54k ± 0%
GetTimeline_SQLite/events-1000-4            37.29k ± 0%
geomean                                     1.162k

cpu: AMD EPYC 9V74 80-Core Processor                
                                   │ benchmark-results.txt │
                                   │        sec/op         │
EventStoreAppend_InMemory-4                   1.123µ ± 13%
EventStoreAppend_SQLite-4                     1.112m ±  3%
GetTimeline_InMemory/events-10-4              12.64µ ±  2%
GetTimeline_InMemory/events-50-4              69.53µ ± 18%
GetTimeline_InMemory/events-100-4             113.0µ ±  2%
GetTimeline_InMemory/events-500-4             579.9µ ±  0%
GetTimeline_InMemory/events-1000-4            1.192m ±  3%
GetTimeline_SQLite/events-10-4                88.07µ ±  2%
GetTimeline_SQLite/events-50-4                231.1µ ±  3%
GetTimeline_SQLite/events-100-4               404.4µ ±  2%
GetTimeline_SQLite/events-500-4               1.754m ±  1%
GetTimeline_SQLite/events-1000-4              3.445m ±  7%
geomean                                       200.7µ

                                   │ benchmark-results.txt │
                                   │         B/op          │
EventStoreAppend_InMemory-4                     774.5 ± 8%
EventStoreAppend_SQLite-4                     1.985Ki ± 1%
GetTimeline_InMemory/events-10-4              7.953Ki ± 0%
GetTimeline_InMemory/events-50-4              46.62Ki ± 0%
GetTimeline_InMemory/events-100-4             94.48Ki ± 0%
GetTimeline_InMemory/events-500-4             472.8Ki ± 0%
GetTimeline_InMemory/events-1000-4            944.3Ki ± 0%
GetTimeline_SQLite/events-10-4                16.74Ki ± 0%
GetTimeline_SQLite/events-50-4                87.14Ki ± 0%
GetTimeline_SQLite/events-100-4               175.4Ki ± 0%
GetTimeline_SQLite/events-500-4               846.1Ki ± 0%
GetTimeline_SQLite/events-1000-4              1.639Mi ± 0%
geomean                                       67.23Ki

                                   │ benchmark-results.txt │
                                   │       allocs/op       │
EventStoreAppend_InMemory-4                     7.000 ± 0%
EventStoreAppend_SQLite-4                       53.00 ± 0%
GetTimeline_InMemory/events-10-4                125.0 ± 0%
GetTimeline_InMemory/events-50-4                653.0 ± 0%
GetTimeline_InMemory/events-100-4              1.306k ± 0%
GetTimeline_InMemory/events-500-4              6.514k ± 0%
GetTimeline_InMemory/events-1000-4             13.02k ± 0%
GetTimeline_SQLite/events-10-4                  382.0 ± 0%
GetTimeline_SQLite/events-50-4                 1.852k ± 0%
GetTimeline_SQLite/events-100-4                3.681k ± 0%
GetTimeline_SQLite/events-500-4                18.54k ± 0%
GetTimeline_SQLite/events-1000-4               37.29k ± 0%
geomean                                        1.162k

Benchmarks run with go test -bench=. -benchmem -count=6.
Regressions ≥ 20% are flagged. Results compared via benchstat.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Comment on lines +473 to +474
// Status is not persisted to disk on install; render "-" for installed plugins.
fmt.Printf("%-20s %-10s %-10s %-14s %s\n", p.name, p.version, p.pluginType, "-", desc)
intel352 and others added 2 commits May 19, 2026 11:32
TestStaticRegistrySource_SearchPlugins_StatusPropagation uses
httptest.NewServer + buildStaticRegistryServer to exercise the
`Status: e.Status` line in StaticRegistrySource.SearchPlugins directly,
so removal of that line would cause the test to fail.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replace mockRegistrySource with a real StaticRegistrySource backed by
httptest.NewServer so the test exercises the actual Status: e.Status
propagation line in StaticRegistrySource.SearchPlugins. Removing that
line now directly fails this test.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 19, 2026 15:35
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Type string `json:"type"`
Tier string `json:"tier"`
Status string `json:"status,omitempty"` // verified | experimental | deprecated
Private bool `json:"private,omitempty"` // mirrors manifest.json `private` field
Comment on lines +473 to +474
// Status is not persisted to disk on install; render "-" for installed plugins.
fmt.Printf("%-20s %-10s %-10s %-14s %s\n", p.name, p.version, p.pluginType, "-", desc)
@codecov
Copy link
Copy Markdown

codecov Bot commented May 19, 2026

Codecov Report

❌ Patch coverage is 42.85714% with 8 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
cmd/wfctl/plugin_install.go 33.33% 6 Missing ⚠️
cmd/wfctl/plugin_registry.go 0.00% 1 Missing ⚠️
cmd/wfctl/registry_source.go 50.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

@intel352 intel352 merged commit 6ae3e6c into main May 19, 2026
25 of 26 checks passed
@intel352 intel352 deleted the feat/registrymanifest-status-field branch May 19, 2026 15:47
intel352 added a commit to GoCodeAlone/workflow-registry that referenced this pull request May 19, 2026
Preceding commit body listed `agent` in the verified set, but
plugins/agent/manifest.json has type=builtin — the population script
correctly skipped it per the `type != "external"` guard. The 6-count
was always correct; only the parenthetical name list was wrong.

Correct verified set (6): audit-chain, digitalocean, eventbus,
payments, twilio, workflow-plugin-auth.

No manifest files changed; schema validation still passes.

Part of 2026-05-19 OSS-readiness QoL sweep.
See: GoCodeAlone/workflow#714
See: #53
See: GoCodeAlone/workflow#715

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
intel352 added a commit to GoCodeAlone/workflow-registry that referenced this pull request May 19, 2026
#54)

* feat(registry): populate status field across external plugin manifests

Sets status=verified on 6 established plugins (agent, audit-chain,
digitalocean, eventbus, payments, twilio, workflow-plugin-auth) and
status=experimental on 33 remaining external plugins. Private plugins
(waf, security, sandbox, supply-chain, data-protection, authz-ui,
cloud-ui, workflow-plugin-supply-chain) left unchanged. Built-in plugin
manifests (type != "external") unchanged.

Validated against schema/registry-schema.json (draft2020) — all 59
manifests pass. Negative assertion confirms no private-plugin manifests
touched.

Part of 2026-05-19 OSS-readiness QoL sweep.
See: GoCodeAlone/workflow#714
See: #53
See: GoCodeAlone/workflow#715

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(registry): correct verified plugin list in preceding commit body

Preceding commit body listed `agent` in the verified set, but
plugins/agent/manifest.json has type=builtin — the population script
correctly skipped it per the `type != "external"` guard. The 6-count
was always correct; only the parenthetical name list was wrong.

Correct verified set (6): audit-chain, digitalocean, eventbus,
payments, twilio, workflow-plugin-auth.

No manifest files changed; schema validation still passes.

Part of 2026-05-19 OSS-readiness QoL sweep.
See: GoCodeAlone/workflow#714
See: #53
See: GoCodeAlone/workflow#715

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

2 participants