Skip to content

fix(wfctl): sync versioned registry release assets#852

Merged
intel352 merged 2 commits into
mainfrom
fix/registry-sync-goreleaser-assets
Jun 3, 2026
Merged

fix(wfctl): sync versioned registry release assets#852
intel352 merged 2 commits into
mainfrom
fix/registry-sync-goreleaser-assets

Conversation

@intel352
Copy link
Copy Markdown
Contributor

@intel352 intel352 commented Jun 3, 2026

Summary

  • parse release assets that use versioned underscore names such as workflow-plugin-gcp_2.3.0_linux_amd64.tar.gz
  • project upstream plugin.json.iacServices into registry capabilities.serviceMethods during registry sync
  • add regression tests for both cases

Verification

Copilot AI review requested due to automatic review settings June 3, 2026 08:45
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

Updates wfctl’s plugin registry sync to better align registry manifests with upstream plugin release conventions and metadata, particularly for IaC plugins.

Changes:

  • Parse GitHub release assets that encode versions using underscore-separated names (e.g. workflow-plugin-gcp_2.3.0_linux_amd64.tar.gz).
  • Refactor plugin.json → registry manifest metadata syncing into a helper and project plugin.json.iacServices into registry capabilities.
  • Add regression tests covering the new release-asset parsing and IaC services metadata projection.

Reviewed changes

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

File Description
cmd/wfctl/plugin_registry_sync.go Adds versioned-asset platform parsing and refactors/extends registry manifest metadata sync from upstream plugin.json.
cmd/wfctl/plugin_registry_sync_test.go Adds tests for release asset platform parsing and IaC services projection into manifest capabilities.

Comment thread cmd/wfctl/plugin_registry_sync.go
Comment thread cmd/wfctl/plugin_registry_sync.go Outdated
@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 3, 2026

Codecov Report

❌ Patch coverage is 76.36364% with 13 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
cmd/wfctl/plugin_registry_sync.go 76.36% 10 Missing and 3 partials ⚠️

📢 Thoughts on this report? Let us know!

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 3, 2026

⏱ Benchmark Results

No significant performance regressions detected.

benchstat comparison (baseline → PR)
## benchstat: baseline → PR
baseline-bench.txt:304: parsing iteration count: invalid syntax
baseline-bench.txt:344750: parsing iteration count: invalid syntax
baseline-bench.txt:663144: parsing iteration count: invalid syntax
baseline-bench.txt:989335: parsing iteration count: invalid syntax
baseline-bench.txt:1296977: parsing iteration count: invalid syntax
baseline-bench.txt:1621980: parsing iteration count: invalid syntax
benchmark-results.txt:304: parsing iteration count: invalid syntax
benchmark-results.txt:375611: parsing iteration count: invalid syntax
benchmark-results.txt:768297: parsing iteration count: invalid syntax
benchmark-results.txt:1128307: parsing iteration count: invalid syntax
benchmark-results.txt:1495646: parsing iteration count: invalid syntax
benchmark-results.txt:1905840: parsing iteration count: invalid syntax
goos: linux
goarch: amd64
pkg: github.com/GoCodeAlone/workflow/dynamic
cpu: AMD EPYC 9V74 80-Core Processor                
                            │ baseline-bench.txt │        benchmark-results.txt        │
                            │       sec/op       │    sec/op     vs base               │
InterpreterCreation-4               7.233m ± 59%   4.532m ± 86%        ~ (p=0.180 n=6)
ComponentLoad-4                     3.492m ± 14%   2.685m ±  1%  -23.12% (p=0.002 n=6)
ComponentExecute-4                  1.859µ ±  2%   1.401µ ±  0%  -24.64% (p=0.002 n=6)
PoolContention/workers-1-4         1012.0n ±  1%   780.1n ±  4%  -22.91% (p=0.002 n=6)
PoolContention/workers-2-4         1017.5n ±  6%   781.3n ±  1%  -23.21% (p=0.002 n=6)
PoolContention/workers-4-4         1021.5n ±  3%   780.4n ±  1%  -23.61% (p=0.002 n=6)
PoolContention/workers-8-4         1019.5n ±  1%   776.6n ±  1%  -23.82% (p=0.002 n=6)
PoolContention/workers-16-4        1014.5n ±  1%   780.0n ±  0%  -23.11% (p=0.002 n=6)
ComponentLifecycle-4                3.510m ±  1%   2.697m ±  1%  -23.18% (p=0.002 n=6)
SourceValidation-4                  2.090µ ±  2%   1.609µ ±  1%  -23.00% (p=0.002 n=6)
RegistryConcurrent-4                763.9n ±  7%   582.2n ±  6%  -23.79% (p=0.002 n=6)
LoaderLoadFromString-4              3.534m ±  1%   2.733m ±  1%  -22.67% (p=0.002 n=6)
geomean                             17.80µ         13.41µ        -24.65%

                            │ baseline-bench.txt │        benchmark-results.txt         │
                            │        B/op        │     B/op      vs base                │
InterpreterCreation-4               2.027Mi ± 0%   2.027Mi ± 0%       ~ (p=0.619 n=6)
ComponentLoad-4                     2.180Mi ± 0%   2.180Mi ± 0%       ~ (p=0.461 n=6)
ComponentExecute-4                  1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-1-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-2-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-4-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-8-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-16-4         1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
ComponentLifecycle-4                2.183Mi ± 0%   2.183Mi ± 0%       ~ (p=0.699 n=6)
SourceValidation-4                  1.984Ki ± 0%   1.984Ki ± 0%       ~ (p=1.000 n=6) ¹
RegistryConcurrent-4                1.133Ki ± 0%   1.133Ki ± 0%       ~ (p=1.000 n=6) ¹
LoaderLoadFromString-4              2.182Mi ± 0%   2.182Mi ± 0%       ~ (p=0.420 n=6)
geomean                             15.25Ki        15.25Ki       +0.00%
¹ all samples are equal

                            │ baseline-bench.txt │        benchmark-results.txt        │
                            │     allocs/op      │  allocs/op   vs base                │
InterpreterCreation-4                15.68k ± 0%   15.68k ± 0%       ~ (p=1.000 n=6)
ComponentLoad-4                      18.02k ± 0%   18.02k ± 0%       ~ (p=1.000 n=6)
ComponentExecute-4                    25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-1-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-2-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-4-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-8-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-16-4           25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
ComponentLifecycle-4                 18.07k ± 0%   18.07k ± 0%       ~ (p=1.000 n=6) ¹
SourceValidation-4                    32.00 ± 0%    32.00 ± 0%       ~ (p=1.000 n=6) ¹
RegistryConcurrent-4                  2.000 ± 0%    2.000 ± 0%       ~ (p=1.000 n=6) ¹
LoaderLoadFromString-4               18.06k ± 0%   18.06k ± 0%       ~ (p=1.000 n=6) ¹
geomean                               183.3         183.3       +0.00%
¹ all samples are equal

pkg: github.com/GoCodeAlone/workflow/middleware
                                  │ baseline-bench.txt │       benchmark-results.txt        │
                                  │       sec/op       │   sec/op     vs base               │
CircuitBreakerDetection-4                  301.9n ± 6%   233.2n ± 3%  -22.74% (p=0.002 n=6)
CircuitBreakerExecution_Success-4          22.66n ± 0%   17.57n ± 0%  -22.46% (p=0.002 n=6)
CircuitBreakerExecution_Failure-4          70.91n ± 0%   55.32n ± 0%  -21.99% (p=0.002 n=6)
geomean                                    78.57n        60.97n       -22.40%

                                  │ baseline-bench.txt │       benchmark-results.txt        │
                                  │        B/op        │    B/op     vs base                │
CircuitBreakerDetection-4                 144.0 ± 0%     144.0 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Success-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Failure-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                              ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                  │ baseline-bench.txt │       benchmark-results.txt        │
                                  │     allocs/op      │ allocs/op   vs base                │
CircuitBreakerDetection-4                 1.000 ± 0%     1.000 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Success-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Failure-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                              ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/module
                                 │ baseline-bench.txt │        benchmark-results.txt        │
                                 │       sec/op       │    sec/op     vs base               │
IaCStateBackend_InProcess-4              298.5n ± 26%   226.8n ± 26%  -24.04% (p=0.002 n=6)
IaCStateBackend_GRPC-4                  10.283m ± 14%   7.925m ±  2%  -22.93% (p=0.002 n=6)
JQTransform_Simple-4                     682.0n ± 29%   520.4n ± 20%  -23.70% (p=0.002 n=6)
JQTransform_ObjectConstruction-4         1.523µ ±  3%   1.162µ ±  0%  -23.70% (p=0.002 n=6)
JQTransform_ArraySelect-4                3.648µ ±  2%   2.744µ ±  1%  -24.77% (p=0.002 n=6)
JQTransform_Complex-4                    43.09µ ±  4%   33.01µ ±  4%  -23.39% (p=0.002 n=6)
JQTransform_Throughput-4                 1.831µ ±  4%   1.411µ ±  2%  -22.94% (p=0.002 n=6)
SSEPublishDelivery-4                     63.97n ±  1%   50.84n ±  3%  -20.52% (p=0.002 n=6)
geomean                                  3.945µ         3.028µ        -23.26%

                                 │ baseline-bench.txt │         benchmark-results.txt         │
                                 │        B/op        │     B/op       vs base                │
IaCStateBackend_InProcess-4             416.0 ±  0%       416.0 ±  0%       ~ (p=1.000 n=6) ¹
IaCStateBackend_GRPC-4                5.906Mi ± 12%     5.593Mi ± 12%       ~ (p=0.180 n=6)
JQTransform_Simple-4                  1.273Ki ±  0%     1.273Ki ±  0%       ~ (p=1.000 n=6) ¹
JQTransform_ObjectConstruction-4      1.773Ki ±  0%     1.773Ki ±  0%       ~ (p=1.000 n=6) ¹
JQTransform_ArraySelect-4             2.625Ki ±  0%     2.625Ki ±  0%       ~ (p=1.000 n=6) ¹
JQTransform_Complex-4                 16.31Ki ±  0%     16.31Ki ±  0%       ~ (p=1.000 n=6) ¹
JQTransform_Throughput-4              1.984Ki ±  0%     1.984Ki ±  0%       ~ (p=1.000 n=6) ¹
SSEPublishDelivery-4                    0.000 ±  0%       0.000 ±  0%       ~ (p=1.000 n=6) ¹
geomean                                             ²                  -0.68%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                 │ baseline-bench.txt │        benchmark-results.txt        │
                                 │     allocs/op      │  allocs/op   vs base                │
IaCStateBackend_InProcess-4              2.000 ± 0%      2.000 ± 0%       ~ (p=1.000 n=6) ¹
IaCStateBackend_GRPC-4                  6.865k ± 0%     6.859k ± 0%       ~ (p=0.121 n=6)
JQTransform_Simple-4                     10.00 ± 0%      10.00 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_ObjectConstruction-4         15.00 ± 0%      15.00 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_ArraySelect-4                30.00 ± 0%      30.00 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_Complex-4                    328.0 ± 0%      328.0 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_Throughput-4                 17.00 ± 0%      17.00 ± 0%       ~ (p=1.000 n=6) ¹
SSEPublishDelivery-4                     0.000 ± 0%      0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                             ²                -0.01%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/schema
                                    │ baseline-bench.txt │       benchmark-results.txt        │
                                    │       sec/op       │   sec/op     vs base               │
SchemaValidation_Simple-4                  1090.5n ± 11%   844.4n ± 3%  -22.56% (p=0.002 n=6)
SchemaValidation_AllFields-4                1.637µ ±  3%   1.247µ ± 1%  -23.83% (p=0.002 n=6)
SchemaValidation_FormatValidation-4         1.575µ ±  2%   1.213µ ± 1%  -22.98% (p=0.002 n=6)
SchemaValidation_ManySchemas-4              1.702µ ±  7%   1.248µ ± 2%  -26.65% (p=0.002 n=6)
geomean                                     1.479µ         1.124µ       -24.02%

                                    │ baseline-bench.txt │       benchmark-results.txt        │
                                    │        B/op        │    B/op     vs base                │
SchemaValidation_Simple-4                   0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_AllFields-4                0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_FormatValidation-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_ManySchemas-4              0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                                ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                    │ baseline-bench.txt │       benchmark-results.txt        │
                                    │     allocs/op      │ allocs/op   vs base                │
SchemaValidation_Simple-4                   0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_AllFields-4                0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_FormatValidation-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_ManySchemas-4              0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                                ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/store
                                   │ baseline-bench.txt │         benchmark-results.txt          │
                                   │       sec/op       │    sec/op      vs base                 │
EventStoreAppend_InMemory-4               1166.0n ± 12%    760.0n ±  3%    -34.82% (p=0.002 n=6)
EventStoreAppend_SQLite-4                  1.081m ±  6%   11.934m ± 69%  +1003.87% (p=0.002 n=6)
GetTimeline_InMemory/events-10-4           12.78µ ±  6%    10.14µ ±  7%    -20.69% (p=0.002 n=6)
GetTimeline_InMemory/events-50-4           74.19µ ±  3%    42.69µ ±  2%    -42.46% (p=0.002 n=6)
GetTimeline_InMemory/events-100-4         146.97µ ± 25%    85.64µ ±  4%    -41.73% (p=0.002 n=6)
GetTimeline_InMemory/events-500-4          568.2µ ±  1%    438.4µ ±  0%    -22.84% (p=0.002 n=6)
GetTimeline_InMemory/events-1000-4        1159.3µ ±  1%    887.1µ ±  0%    -23.48% (p=0.002 n=6)
GetTimeline_SQLite/events-10-4             58.09µ ±  1%    44.05µ ±  0%    -24.17% (p=0.002 n=6)
GetTimeline_SQLite/events-50-4             196.0µ ±  2%    145.8µ ±  1%    -25.61% (p=0.002 n=6)
GetTimeline_SQLite/events-100-4            370.2µ ±  4%    270.1µ ±  1%    -27.06% (p=0.002 n=6)
GetTimeline_SQLite/events-500-4            1.684m ±  2%    1.263m ±  1%    -25.00% (p=0.002 n=6)
GetTimeline_SQLite/events-1000-4           3.356m ±  3%    2.484m ±  0%    -25.99% (p=0.002 n=6)
geomean                                    193.5µ          172.9µ          -10.68%

                                   │ baseline-bench.txt │         benchmark-results.txt         │
                                   │        B/op        │     B/op       vs base                │
EventStoreAppend_InMemory-4                  812.0 ± 8%     859.0 ± 14%       ~ (p=0.606 n=6)
EventStoreAppend_SQLite-4                  1.987Ki ± 1%   2.009Ki ± 24%       ~ (p=0.186 n=6)
GetTimeline_InMemory/events-10-4           7.953Ki ± 0%   7.953Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-50-4           46.62Ki ± 0%   46.62Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-100-4          94.48Ki ± 0%   94.48Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-500-4          472.8Ki ± 0%   472.8Ki ±  0%       ~ (p=1.000 n=6)
GetTimeline_InMemory/events-1000-4         944.3Ki ± 0%   944.3Ki ±  0%       ~ (p=0.206 n=6)
GetTimeline_SQLite/events-10-4             16.74Ki ± 0%   16.74Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-50-4             87.14Ki ± 0%   87.14Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-100-4            175.4Ki ± 0%   175.4Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-500-4            846.1Ki ± 0%   846.1Ki ±  0%       ~ (p=0.455 n=6)
GetTimeline_SQLite/events-1000-4           1.639Mi ± 0%   1.639Mi ±  0%       ~ (p=0.145 n=6)
geomean                                    67.51Ki        67.89Ki        +0.56%
¹ all samples are equal

                                   │ baseline-bench.txt │        benchmark-results.txt        │
                                   │     allocs/op      │  allocs/op   vs base                │
EventStoreAppend_InMemory-4                  7.000 ± 0%    7.000 ± 0%       ~ (p=1.000 n=6) ¹
EventStoreAppend_SQLite-4                    53.00 ± 0%    52.00 ± 2%       ~ (p=0.061 n=6)
GetTimeline_InMemory/events-10-4             125.0 ± 0%    125.0 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-50-4             653.0 ± 0%    653.0 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-100-4           1.306k ± 0%   1.306k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-500-4           6.514k ± 0%   6.514k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-1000-4          13.02k ± 0%   13.02k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-10-4               382.0 ± 0%    382.0 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-50-4              1.852k ± 0%   1.852k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-100-4             3.681k ± 0%   3.681k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-500-4             18.54k ± 0%   18.54k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-1000-4            37.29k ± 0%   37.29k ± 0%       ~ (p=1.000 n=6) ¹
geomean                                     1.162k        1.160k       -0.16%
¹ all samples are equal

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

@intel352 intel352 merged commit 14140b6 into main Jun 3, 2026
22 checks passed
@intel352 intel352 deleted the fix/registry-sync-goreleaser-assets branch June 3, 2026 09: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.

2 participants