Skip to content

feat(wfctl): verify registry plugin capabilities#817

Merged
intel352 merged 3 commits into
mainfrom
feat/762-registry-sync-verify-capabilities
Jun 1, 2026
Merged

feat(wfctl): verify registry plugin capabilities#817
intel352 merged 3 commits into
mainfrom
feat/762-registry-sync-verify-capabilities

Conversation

@intel352
Copy link
Copy Markdown
Contributor

@intel352 intel352 commented Jun 1, 2026

Summary

Closes part of #762 by replacing the wfctl plugin registry-sync --verify-capabilities stub with a real registry-side runtime check.

  • downloads the upstream release asset for the current GOOS/GOARCH
  • extracts and locates the release binary, including repo-named binaries such as workflow-plugin-github
  • reuses the existing wfctl plugin verify-capabilities runtime GetManifest diff path
  • skips strict name equality for registry aliases while keeping standalone verify-capabilities strict
  • documents the trust boundary and behavior in docs/PLUGIN_RELEASE_GATES.md

Out of scope: workflow-registry bash parity ownership, #760 plugin-repo fanout, and SemVer prerelease support.

Verification

GOWORK=off go test ./cmd/wfctl -run 'TestPluginRegistrySync|TestPluginVerifyCapabilities|TestCompareManifestWithRuntimeCanSkipRegistryAliasName' -count=1
# ok   github.com/GoCodeAlone/workflow/cmd/wfctl  1.096s

GOWORK=off go test ./cmd/wfctl -run 'TestPluginRegistrySync|TestPluginVerifyCapabilities|TestCompareManifestWithRuntimeCanSkipRegistryAliasName' -count=1 -race
# ok   github.com/GoCodeAlone/workflow/cmd/wfctl  2.643s

GOWORK=off golangci-lint run ./cmd/wfctl
# 0 issues.

GOWORK=off go build -o /tmp/wfctl-762 ./cmd/wfctl
/tmp/wfctl-762 plugin registry-sync --registry-dir /Users/jon/workspace/workflow-registry --plugin github --verify-capabilities
#     OK  github 1.0.6
# OK    github 1.0.6 (plugin.json: 1.0.6)
#     OK  github capabilities verified against v1.0.6 (darwin/arm64)

GOWORK=off go test ./cmd/wfctl -count=1 -timeout 180s
# ok   github.com/GoCodeAlone/workflow/cmd/wfctl  158.097s

git diff --check
# clean

Regression proof:

# With production fix reversed and tests left in place:
GOWORK=off go test ./cmd/wfctl -run 'TestPluginRegistrySync_SelectPlatformReleaseAsset|TestPluginRegistrySync_LocateExtractedBinary|TestPluginRegistrySync_AssetBinaryName|TestCompareManifestWithRuntimeCanSkipRegistryAliasName' -count=1
# FAIL — missing releaseAsset.Name, selectPlatformReleaseAsset, locateRegistrySyncBinary, assetBinaryName, compareManifestWithRuntime, manifestCompareOptions

# With fix restored:
GOWORK=off go test ./cmd/wfctl -run 'TestPluginRegistrySync_SelectPlatformReleaseAsset|TestPluginRegistrySync_LocateExtractedBinary|TestPluginRegistrySync_AssetBinaryName|TestCompareManifestWithRuntimeCanSkipRegistryAliasName' -count=1
# ok   github.com/GoCodeAlone/workflow/cmd/wfctl  1.080s

Copilot AI review requested due to automatic review settings June 1, 2026 14:53
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

Implements the previously stubbed wfctl plugin registry-sync --verify-capabilities path by downloading the current-platform release asset from GitHub, extracting/locating the plugin binary, and reusing the existing runtime manifest verification logic (with relaxed name-matching for registry aliases). This closes the registry-side “runtime freshness” gate described in workflow#762.

Changes:

  • Add registry-sync runtime capability verification: select GOOS/GOARCH asset, download via gh, extract tarball, locate executable, and verify manifest via the existing verify-capabilities implementation.
  • Refactor verify-capabilities to expose reusable helpers and add an option to skip strict name comparison for registry alias use-cases.
  • Update docs and add focused unit tests for helper logic (asset selection, binary location, alias name skipping).

Reviewed changes

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

Show a summary per file
File Description
docs/PLUGIN_RELEASE_GATES.md Documents the trust boundary and behavior of the new registry-side runtime verification.
docs/plans/2026-06-01-registry-sync-verify-capabilities.md Adds an implementation plan describing scope, security posture, and validation steps.
cmd/wfctl/plugin_verify_capabilities.go Extracts reusable verification helpers and adds options for alias-friendly comparisons.
cmd/wfctl/plugin_verify_capabilities_test.go Adds a unit test proving registry-mode can skip strict name equality.
cmd/wfctl/plugin_registry_sync.go Implements --verify-capabilities by downloading/extracting the release asset and invoking runtime verification.
cmd/wfctl/plugin_registry_sync_test.go Adds tests for platform asset selection, binary discovery, and asset name parsing.

Comment thread cmd/wfctl/plugin_registry_sync.go
Comment thread cmd/wfctl/plugin_registry_sync.go
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

⏱ Benchmark Results

No significant performance regressions detected.

benchstat comparison (baseline → PR)
## benchstat: baseline → PR
baseline-bench.txt:308: parsing iteration count: invalid syntax
baseline-bench.txt:300933: parsing iteration count: invalid syntax
baseline-bench.txt:587044: parsing iteration count: invalid syntax
baseline-bench.txt:901679: parsing iteration count: invalid syntax
baseline-bench.txt:1208079: parsing iteration count: invalid syntax
baseline-bench.txt:1504225: parsing iteration count: invalid syntax
benchmark-results.txt:308: parsing iteration count: invalid syntax
benchmark-results.txt:315783: parsing iteration count: invalid syntax
benchmark-results.txt:638812: parsing iteration count: invalid syntax
benchmark-results.txt:958808: parsing iteration count: invalid syntax
benchmark-results.txt:1284375: parsing iteration count: invalid syntax
benchmark-results.txt:1595446: 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               10.98m ± 51%
ComponentLoad-4                     3.672m ±  1%
ComponentExecute-4                  1.998µ ±  2%
PoolContention/workers-1-4          1.084µ ±  4%
PoolContention/workers-2-4          1.085µ ±  1%
PoolContention/workers-4-4          1.091µ ±  2%
PoolContention/workers-8-4          1.094µ ±  1%
PoolContention/workers-16-4         1.100µ ±  4%
ComponentLifecycle-4                3.649m ±  8%
SourceValidation-4                  2.333µ ±  1%
RegistryConcurrent-4                819.0n ±  4%
LoaderLoadFromString-4              3.642m ±  0%
geomean                             19.57µ

                            │ 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                  9.304m ± 68%
ComponentLoad-4                        3.439m ±  9%
ComponentExecute-4                     1.815µ ±  1%
PoolContention/workers-1-4             1.013µ ±  3%
PoolContention/workers-2-4             1.011µ ±  1%
PoolContention/workers-4-4             1.013µ ±  1%
PoolContention/workers-8-4             1.016µ ±  3%
PoolContention/workers-16-4            1.015µ ±  2%
ComponentLifecycle-4                   3.471m ±  0%
SourceValidation-4                     2.081µ ±  1%
RegistryConcurrent-4                   736.7n ±  7%
LoaderLoadFromString-4                 3.500m ±  1%
geomean                                18.00µ

                            │ 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                  288.3n ± 4%
CircuitBreakerExecution_Success-4          21.51n ± 1%
CircuitBreakerExecution_Failure-4          65.91n ± 0%
geomean                                    74.21n

                                  │ 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                    304.0n ± 14%
CircuitBreakerExecution_Success-4            22.67n ±  0%
CircuitBreakerExecution_Failure-4            70.98n ±  0%
geomean                                      78.80n

                                  │ 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              348.9n ± 16%
IaCStateBackend_GRPC-4                   9.546m ±  4%
JQTransform_Simple-4                     724.6n ± 30%
JQTransform_ObjectConstruction-4         1.496µ ±  1%
JQTransform_ArraySelect-4                3.547µ ±  5%
JQTransform_Complex-4                    39.00µ ±  2%
JQTransform_Throughput-4                 1.792µ ±  1%
SSEPublishDelivery-4                     64.41n ±  2%
geomean                                  3.936µ

                                 │ baseline-bench.txt │
                                 │        B/op        │
IaCStateBackend_InProcess-4              416.0 ± 0%
IaCStateBackend_GRPC-4                 5.890Mi ± 5%
JQTransform_Simple-4                   1.273Ki ± 0%
JQTransform_ObjectConstruction-4       1.773Ki ± 0%
JQTransform_ArraySelect-4              2.625Ki ± 0%
JQTransform_Complex-4                  16.31Ki ± 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.847k ± 0%
JQTransform_Simple-4                     10.00 ± 0%
JQTransform_ObjectConstruction-4         15.00 ± 0%
JQTransform_ArraySelect-4                30.00 ± 0%
JQTransform_Complex-4                    328.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                 289.1n ± 23%
IaCStateBackend_GRPC-4                      10.12m ± 14%
JQTransform_Simple-4                        653.3n ± 31%
JQTransform_ObjectConstruction-4            1.416µ ±  1%
JQTransform_ArraySelect-4                   3.514µ ±  5%
JQTransform_Complex-4                       44.37µ ±  7%
JQTransform_Throughput-4                    1.721µ ±  1%
SSEPublishDelivery-4                        63.30n ±  1%
geomean                                     3.826µ

                                 │ benchmark-results.txt │
                                 │         B/op          │
IaCStateBackend_InProcess-4                416.0 ±  0%
IaCStateBackend_GRPC-4                   5.821Mi ± 10%
JQTransform_Simple-4                     1.273Ki ±  0%
JQTransform_ObjectConstruction-4         1.773Ki ±  0%
JQTransform_ArraySelect-4                2.625Ki ±  0%
JQTransform_Complex-4                    16.31Ki ±  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.856k ± 0%
JQTransform_Simple-4                        10.00 ± 0%
JQTransform_ObjectConstruction-4            15.00 ± 0%
JQTransform_ArraySelect-4                   30.00 ± 0%
JQTransform_Complex-4                       328.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.108µ ± 20%
SchemaValidation_AllFields-4                1.646µ ±  2%
SchemaValidation_FormatValidation-4         1.581µ ±  2%
SchemaValidation_ManySchemas-4              1.828µ ±  3%
geomean                                     1.515µ

                                    │ 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.073µ ± 15%
SchemaValidation_AllFields-4                   1.615µ ±  3%
SchemaValidation_FormatValidation-4            1.552µ ±  4%
SchemaValidation_ManySchemas-4                 1.591µ ±  2%
geomean                                        1.438µ

                                    │ 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.084µ ± 44%
EventStoreAppend_SQLite-4                  1.298m ±  4%
GetTimeline_InMemory/events-10-4           15.04µ ±  2%
GetTimeline_InMemory/events-50-4           86.68µ ±  1%
GetTimeline_InMemory/events-100-4          154.9µ ± 15%
GetTimeline_InMemory/events-500-4          685.6µ ±  2%
GetTimeline_InMemory/events-1000-4         1.367m ±  1%
GetTimeline_SQLite/events-10-4             112.4µ ±  1%
GetTimeline_SQLite/events-50-4             271.0µ ±  2%
GetTimeline_SQLite/events-100-4            447.7µ ±  1%
GetTimeline_SQLite/events-500-4            1.919m ±  1%
GetTimeline_SQLite/events-1000-4           3.775m ±  3%
geomean                                    233.5µ

                                   │ baseline-bench.txt │
                                   │        B/op        │
EventStoreAppend_InMemory-4                 751.0 ± 13%
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.06Ki

                                   │ 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.067µ ± 12%
EventStoreAppend_SQLite-4                     981.4µ ±  4%
GetTimeline_InMemory/events-10-4              12.84µ ±  4%
GetTimeline_InMemory/events-50-4              72.00µ ±  3%
GetTimeline_InMemory/events-100-4             143.2µ ± 23%
GetTimeline_InMemory/events-500-4             560.9µ ±  1%
GetTimeline_InMemory/events-1000-4            1.136m ±  0%
GetTimeline_SQLite/events-10-4                83.84µ ±  1%
GetTimeline_SQLite/events-50-4                220.4µ ±  0%
GetTimeline_SQLite/events-100-4               386.5µ ±  0%
GetTimeline_SQLite/events-500-4               1.681m ±  1%
GetTimeline_SQLite/events-1000-4              3.273m ±  0%
geomean                                       197.2µ

                                   │ benchmark-results.txt │
                                   │         B/op          │
EventStoreAppend_InMemory-4                    745.5 ± 15%
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.02Ki

                                   │ 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.

@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 1, 2026

Codecov Report

❌ Patch coverage is 59.82906% with 47 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
cmd/wfctl/plugin_registry_sync.go 58.06% 28 Missing and 11 partials ⚠️
cmd/wfctl/plugin_verify_capabilities.go 66.66% 6 Missing and 2 partials ⚠️

📢 Thoughts on this report? Let us know!

Copilot AI review requested due to automatic review settings June 1, 2026 15:19
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 4 comments.

Comment thread cmd/wfctl/plugin_verify_capabilities.go
Comment thread cmd/wfctl/plugin_verify_capabilities.go
Comment thread cmd/wfctl/plugin_verify_capabilities.go
Comment thread cmd/wfctl/plugin_verify_capabilities.go
@intel352 intel352 merged commit 911eceb into main Jun 1, 2026
22 checks passed
@intel352 intel352 deleted the feat/762-registry-sync-verify-capabilities branch June 1, 2026 15:58
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