Skip to content

Add plugin compatibility conformance evidence#629

Merged
intel352 merged 29 commits into
mainfrom
codex/plugin-conformance-compat
May 11, 2026
Merged

Add plugin compatibility conformance evidence#629
intel352 merged 29 commits into
mainfrom
codex/plugin-conformance-compat

Conversation

@intel352
Copy link
Copy Markdown
Contributor

Summary

  • add strict plugin compatibility evidence/index models and registry version-index fetching
  • add wfctl plugin conformance for typed-IaC artifact/source checks
  • add wfctl plugin-registry compatibility update for atomic registry compatibility indexes
  • wire install/update/lock through compatibility evidence resolution with enforce/warn/force behavior
  • document plugin CI adoption using setup-wfctl

Verification

  • PASS: GOWORK=off go test ./cmd/wfctl -run 'TestPluginConformance' -count=1
  • PASS: GOWORK=off go test ./cmd/wfctl -run 'TestPluginRegistryCompatibility|TestPluginCompatResolver|TestRunPluginInstall.*Compat|TestRunPluginUpdate.*Compat|TestPluginLock' -count=1
  • PASS: GOWORK=off go test ./cmd/wfctl ./config -run 'TestPluginLock|TestWfctlLockfile|TestPluginCompatResolver|TestRunPluginInstall.*Compat|TestRunPluginUpdate.*Compat' -count=1
  • PASS: GOWORK=off go build -o /tmp/wfctl-compat ./cmd/wfctl
  • PASS: /tmp/wfctl-compat plugin conformance --mode typed-iac --format json --engine-version v0.51.2 ./cmd/wfctl/testdata/conformance/iac-pass
  • PASS: /tmp/wfctl-compat plugin conformance --mode typed-iac --artifact /tmp/wfctl-iac-pass.tar.gz --format json --engine-version v0.51.2 --output /tmp/wfctl-evidence.json
  • PASS: /tmp/wfctl-compat plugin-registry compatibility update --registry-dir /tmp/wfctl-test-registry --plugin iac-pass --version v0.1.0 --evidence /tmp/wfctl-evidence.json --latest-engine v0.51.2

Known unrelated local failures remain in cmd/wfctl full/focused package runs:

  • TestConfigMigrate_DefaultWriterIsStderr
  • TestInfraMultiEnv_E2E/staging_plan_excludes_dns
  • TestInfraMultiEnv_E2E/prod_plan_includes_dns_with_large_db

TestRunCIRunTestFallsBackToGoTestWhenNoConfiguredTests prints an intentional failing fixture but does not fail itself. The broad ./... run failed only because of the same cmd/wfctl failures; dynamic printed expected panic-recovery text without failing the package.

Copilot AI review requested due to automatic review settings May 11, 2026 06:08
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

This PR adds an executable plugin compatibility “evidence” pipeline to wfctl (conformance generation → registry compatibility index publishing → install/update/lock compatibility-aware resolution) and documents the new CLI surfaces and CI workflow.

Changes:

  • Added strict plugin compatibility evidence/index models plus registry fetching for compatibility/<plugin>/index.json.
  • Introduced wfctl plugin conformance and wfctl plugin-registry compatibility update, and wired install/update/lock to resolve versions via compatibility evidence with enforce/warn/force behavior.
  • Extended .wfctl-lock.yaml to record platform-scoped compatibility metadata.

Reviewed changes

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

Show a summary per file
File Description
docs/WFCTL.md Documents new plugin conformance, plugin-registry compatibility update, and new install/update/lock flags/env behavior.
docs/plans/2026-05-11-plugin-conformance-compat.md.scope-lock Adds plan scope lock metadata for the implementation plan.
docs/plans/2026-05-11-plugin-conformance-compat.md Adds the implementation plan for compatibility evidence/indexing and resolver wiring.
docs/plans/2026-05-11-plugin-conformance-compat.alignment-check-2.md Adds PASS alignment report for plan coverage.
docs/plans/2026-05-11-plugin-conformance-compat.alignment-check-1.md Adds initial FAIL alignment report capturing missing requirements found earlier.
docs/plans/2026-05-11-plugin-conformance-compat.adversarial-review-2.md Adds PASS adversarial review report for the plan.
docs/plans/2026-05-11-plugin-conformance-compat.adversarial-review-1.md Adds initial FAIL adversarial review report for the plan.
docs/plans/2026-05-11-plugin-conformance-compat-design.md Adds the design doc for compatibility evidence/index model and resolver behavior.
docs/plans/2026-05-11-plugin-conformance-compat-design.adversarial-review-6.md Adds PASS adversarial review report for the design.
docs/plans/2026-05-11-plugin-conformance-compat-design.adversarial-review-5.md Adds earlier FAIL adversarial review report for the design.
docs/plans/2026-05-11-plugin-conformance-compat-design.adversarial-review-4.md Adds earlier FAIL adversarial review report for the design.
docs/plans/2026-05-11-plugin-conformance-compat-design.adversarial-review-3.md Adds earlier FAIL adversarial review report for the design.
docs/plans/2026-05-11-plugin-conformance-compat-design.adversarial-review-2.md Adds earlier FAIL adversarial review report for the design.
docs/plans/2026-05-11-plugin-conformance-compat-design.adversarial-review-1.md Adds earlier FAIL adversarial review report for the design.
decisions/0030-plugin-conformance-evidence-index.md Adds ADR capturing the decision to use generated compatibility evidence and version indexes.
config/wfctl_lockfile.go Adds platform-scoped compatibility metadata to the wfctl lockfile schema and writer.
config/wfctl_lockfile_test.go Adds/extends lockfile tests to cover compatibility metadata round-trip and output.
cmd/wfctl/testdata/conformance/no-iac/plugin.json Adds a conformance fixture plugin without typed IaC service.
cmd/wfctl/testdata/conformance/no-iac/main.go Implements the “no typed IaC” conformance fixture binary.
cmd/wfctl/testdata/conformance/no-iac/go.mod Adds module metadata for the “no-iac” conformance fixture.
cmd/wfctl/testdata/conformance/iac-pass/plugin.json Adds a passing typed IaC conformance fixture manifest.
cmd/wfctl/testdata/conformance/iac-pass/main.go Implements a minimal typed IaC provider fixture for conformance.
cmd/wfctl/testdata/conformance/iac-pass/go.mod Adds module metadata for the “iac-pass” conformance fixture.
cmd/wfctl/testdata/conformance/iac-hang/plugin.json Adds a hanging conformance fixture manifest.
cmd/wfctl/testdata/conformance/iac-hang/main.go Implements a fixture that sleeps to exercise timeout handling.
cmd/wfctl/testdata/conformance/iac-hang/go.mod Adds module metadata for the “iac-hang” conformance fixture.
cmd/wfctl/registry_source.go Extends registry sources with FetchVersionIndex and adds a manifest→index synthesis fallback.
cmd/wfctl/registry_source_test.go Adds tests for native/synthesized version index fetching (static + GitHub).
cmd/wfctl/registry_config.go Adds compatibility config + per-registry evidence trust configuration and defaults.
cmd/wfctl/registry_compatibility.go Adds wfctl plugin-registry compatibility update to validate evidence and atomically update index.json.
cmd/wfctl/registry_compatibility_test.go Adds tests for compatibility index updating, sorting, stale marking, and range derivation.
cmd/wfctl/registry_cmd.go Adds compatibility subcommand routing and updates plugin-registry usage text.
cmd/wfctl/plugin.go Adds wfctl plugin conformance subcommand wiring and help text.
cmd/wfctl/plugin_lock.go Wires wfctl plugin lock through compatibility resolver and writes lockfile compatibility metadata.
cmd/wfctl/plugin_lock_test.go Adds tests for compatibility-aware lock selection and warn-mode forced metadata.
cmd/wfctl/plugin_install.go Wires install/update flows through compatibility resolver and adds new flags.
cmd/wfctl/plugin_install_test.go Adds tests covering install/update behavior with compatibility evidence (pass/fail selection, warn behavior).
cmd/wfctl/plugin_conformance.go Implements wfctl plugin conformance with staging, hashing, plugin launch, and evidence output.
cmd/wfctl/plugin_conformance_test.go Adds tests for conformance CLI behavior, evidence output, archive hashing, and timeout handling.
cmd/wfctl/plugin_compat_resolver.go Implements the compatibility resolver used by install/update/lock (enforce/warn/force).
cmd/wfctl/plugin_compat_resolver_test.go Adds resolver unit tests for pass/fail precedence, missing evidence policy, and advisory mode.
cmd/wfctl/plugin_compat_model.go Adds evidence/index models, semver normalization, SHA normalization, trust parsing, and evidence digest computation.
cmd/wfctl/plugin_compat_model_test.go Adds tests for version canonicalization, digest rules, SHA normalization, and trust config parsing.
cmd/wfctl/multi_registry.go Adds multi-registry support for fetching version indexes and a manifest+index “same source” fetch.
cmd/wfctl/multi_registry_test.go Adds tests for trust defaults and multi-registry version index selection/normalized fallback.

Comment thread cmd/wfctl/plugin_conformance.go
Comment thread cmd/wfctl/plugin_compat_resolver.go Outdated
Comment thread cmd/wfctl/plugin_compat_resolver.go
Comment thread cmd/wfctl/registry_source.go
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 11, 2026

⏱ Benchmark Results

No significant performance regressions detected.

benchstat comparison (baseline → PR)
## benchstat: baseline → PR
baseline-bench.txt:262: parsing iteration count: invalid syntax
baseline-bench.txt:276146: parsing iteration count: invalid syntax
baseline-bench.txt:613947: parsing iteration count: invalid syntax
baseline-bench.txt:931354: parsing iteration count: invalid syntax
baseline-bench.txt:1264637: parsing iteration count: invalid syntax
baseline-bench.txt:1555134: parsing iteration count: invalid syntax
benchmark-results.txt:262: parsing iteration count: invalid syntax
benchmark-results.txt:319769: parsing iteration count: invalid syntax
benchmark-results.txt:629604: parsing iteration count: invalid syntax
benchmark-results.txt:975466: parsing iteration count: invalid syntax
benchmark-results.txt:1238474: parsing iteration count: invalid syntax
benchmark-results.txt:1517016: parsing iteration count: invalid syntax
goos: linux
goarch: amd64
pkg: github.com/GoCodeAlone/workflow/dynamic
cpu: AMD EPYC 7763 64-Core Processor                
                            │ benchmark-results.txt │
                            │        sec/op         │
InterpreterCreation-4                 3.302m ± 205%
ComponentLoad-4                       3.614m ±  11%
ComponentExecute-4                    1.981µ ±   1%
PoolContention/workers-1-4            1.090µ ±   1%
PoolContention/workers-2-4            1.091µ ±   3%
PoolContention/workers-4-4            1.098µ ±   1%
PoolContention/workers-8-4            1.100µ ±   1%
PoolContention/workers-16-4           1.099µ ±   1%
ComponentLifecycle-4                  3.626m ±   0%
SourceValidation-4                    2.321µ ±   1%
RegistryConcurrent-4                  797.5n ±   5%
LoaderLoadFromString-4                3.647m ±   0%
geomean                               17.65µ

                            │ 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

cpu: AMD EPYC 9V74 80-Core Processor                
                            │ baseline-bench.txt │
                            │       sec/op       │
InterpreterCreation-4              3.210m ± 197%
ComponentLoad-4                    3.436m ±  16%
ComponentExecute-4                 1.841µ ±   0%
PoolContention/workers-1-4         1.013µ ±   1%
PoolContention/workers-2-4         1.019µ ±   2%
PoolContention/workers-4-4         1.014µ ±   1%
PoolContention/workers-8-4         1.016µ ±   1%
PoolContention/workers-16-4        1.014µ ±   1%
ComponentLifecycle-4               3.422m ±   1%
SourceValidation-4                 2.079µ ±   1%
RegistryConcurrent-4               726.5n ±   3%
LoaderLoadFromString-4             3.457m ±   0%
geomean                            16.44µ

                            │ 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

pkg: github.com/GoCodeAlone/workflow/middleware
cpu: AMD EPYC 7763 64-Core Processor                
                                  │ benchmark-results.txt │
                                  │        sec/op         │
CircuitBreakerDetection-4                     286.4n ± 4%
CircuitBreakerExecution_Success-4             21.57n ± 1%
CircuitBreakerExecution_Failure-4             66.28n ± 0%
geomean                                       74.25n

                                  │ 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

cpu: AMD EPYC 9V74 80-Core Processor                
                                  │ baseline-bench.txt │
                                  │       sec/op       │
CircuitBreakerDetection-4                  296.1n ± 2%
CircuitBreakerExecution_Success-4          22.66n ± 1%
CircuitBreakerExecution_Failure-4          70.90n ± 0%
geomean                                    78.06n

                                  │ 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

pkg: github.com/GoCodeAlone/workflow/module
cpu: AMD EPYC 7763 64-Core Processor                
                                 │ benchmark-results.txt │
                                 │        sec/op         │
JQTransform_Simple-4                        938.7n ± 24%
JQTransform_ObjectConstruction-4            1.478µ ±  1%
JQTransform_ArraySelect-4                   3.347µ ±  0%
JQTransform_Complex-4                       38.45µ ±  1%
JQTransform_Throughput-4                    1.792µ ±  1%
SSEPublishDelivery-4                        67.22n ±  1%
geomean                                     1.668µ

                                 │ benchmark-results.txt │
                                 │         B/op          │
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       │
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                
                                 │ baseline-bench.txt │
                                 │       sec/op       │
JQTransform_Simple-4                     816.9n ± 32%
JQTransform_ObjectConstruction-4         1.380µ ±  0%
JQTransform_ArraySelect-4                3.373µ ±  1%
JQTransform_Complex-4                    41.29µ ±  0%
JQTransform_Throughput-4                 1.685µ ±  1%
SSEPublishDelivery-4                     64.83n ±  1%
geomean                                  1.606µ

                                 │ baseline-bench.txt │
                                 │        B/op        │
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      │
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                
                                    │ benchmark-results.txt │
                                    │        sec/op         │
SchemaValidation_Simple-4                       1.099µ ± 9%
SchemaValidation_AllFields-4                    1.663µ ± 3%
SchemaValidation_FormatValidation-4             1.580µ ± 2%
SchemaValidation_ManySchemas-4                  1.819µ ± 2%
geomean                                         1.514µ

                                    │ 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

cpu: AMD EPYC 9V74 80-Core Processor                
                                    │ baseline-bench.txt │
                                    │       sec/op       │
SchemaValidation_Simple-4                    1.081µ ± 5%
SchemaValidation_AllFields-4                 1.627µ ± 9%
SchemaValidation_FormatValidation-4          1.571µ ± 2%
SchemaValidation_ManySchemas-4               1.591µ ± 2%
geomean                                      1.448µ

                                    │ 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

pkg: github.com/GoCodeAlone/workflow/store
cpu: AMD EPYC 7763 64-Core Processor                
                                   │ benchmark-results.txt │
                                   │        sec/op         │
EventStoreAppend_InMemory-4                   1.248µ ± 12%
EventStoreAppend_SQLite-4                     1.322m ±  4%
GetTimeline_InMemory/events-10-4              14.33µ ±  3%
GetTimeline_InMemory/events-50-4              79.46µ ± 19%
GetTimeline_InMemory/events-100-4             129.1µ ±  1%
GetTimeline_InMemory/events-500-4             665.6µ ±  1%
GetTimeline_InMemory/events-1000-4            1.367m ±  1%
GetTimeline_SQLite/events-10-4                110.7µ ±  1%
GetTimeline_SQLite/events-50-4                259.7µ ±  0%
GetTimeline_SQLite/events-100-4               439.5µ ±  0%
GetTimeline_SQLite/events-500-4               1.881m ±  1%
GetTimeline_SQLite/events-1000-4              3.653m ±  1%
geomean                                       227.4µ

                                   │ benchmark-results.txt │
                                   │         B/op          │
EventStoreAppend_InMemory-4                     813.0 ± 8%
EventStoreAppend_SQLite-4                     1.984Ki ± 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.50Ki

                                   │ 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

cpu: AMD EPYC 9V74 80-Core Processor                
                                   │ baseline-bench.txt │
                                   │       sec/op       │
EventStoreAppend_InMemory-4                1.024µ ± 16%
EventStoreAppend_SQLite-4                  1.035m ±  4%
GetTimeline_InMemory/events-10-4           12.65µ ±  1%
GetTimeline_InMemory/events-50-4           72.04µ ±  2%
GetTimeline_InMemory/events-100-4          141.7µ ± 22%
GetTimeline_InMemory/events-500-4          560.0µ ±  0%
GetTimeline_InMemory/events-1000-4         1.133m ±  0%
GetTimeline_SQLite/events-10-4             81.34µ ±  1%
GetTimeline_SQLite/events-50-4             216.7µ ±  0%
GetTimeline_SQLite/events-100-4            388.9µ ±  3%
GetTimeline_SQLite/events-500-4            1.668m ±  1%
GetTimeline_SQLite/events-1000-4           3.268m ±  1%
geomean                                    196.1µ

                                   │ baseline-bench.txt │
                                   │        B/op        │
EventStoreAppend_InMemory-4                 748.5 ± 11%
EventStoreAppend_SQLite-4                 1.984Ki ±  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.04Ki

                                   │ 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

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

Copilot AI review requested due to automatic review settings May 11, 2026 06: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 46 out of 46 changed files in this pull request and generated 4 comments.

Comment thread cmd/wfctl/plugin_lock.go
Comment thread cmd/wfctl/plugin_conformance.go
Comment thread cmd/wfctl/plugin_conformance.go
Comment thread cmd/wfctl/registry_compatibility.go Outdated
Copilot AI review requested due to automatic review settings May 11, 2026 07:02
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 47 out of 47 changed files in this pull request and generated 3 comments.

Comment thread cmd/wfctl/plugin_install.go
Comment thread cmd/wfctl/plugin_conformance.go
Comment thread cmd/wfctl/registry_cmd.go
@codecov
Copy link
Copy Markdown

codecov Bot commented May 11, 2026

Welcome to Codecov 🎉

Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests.

ℹ️ You can also turn on project coverage checks and project coverage reporting on Pull Request comment

Thanks for integrating Codecov - We've got you covered ☂️

@intel352 intel352 merged commit 3fae342 into main May 11, 2026
25 checks passed
@intel352 intel352 deleted the codex/plugin-conformance-compat branch May 11, 2026 07:35
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