Skip to content

feat(wfctl): plugin registry-sync subcommand + shared release-grade semver regex + type allowlist (workflow#762 Layer a)#763

Merged
intel352 merged 7 commits into
mainfrom
feat/762-registry-sync
May 24, 2026
Merged

feat(wfctl): plugin registry-sync subcommand + shared release-grade semver regex + type allowlist (workflow#762 Layer a)#763
intel352 merged 7 commits into
mainfrom
feat/762-registry-sync

Conversation

@intel352
Copy link
Copy Markdown
Contributor

Summary

Closes workflow#762 Layer (a). First of 6 PRs in the workflow#762 series.

New `wfctl plugin registry-sync` subcommand replaces `workflow-registry/scripts/sync-versions.sh` (default mode) + `sync-core-manifests.sh` (`core` sub-mode) + `generate-readme.sh` (`readme` sub-mode). Eliminates regex duplication between operator-side (`validate-contract --for-publish`) and registry-side gates via shared `PublishGradeSemverRe` constant.

What ships

  • `cmd/wfctl/plugin_registry_sync.go` — default mode: ports `sync-versions.sh` (gh release view → strict-semver gate → version+downloads compare → `--fix` rewrite with capabilities/minEngineVersion/iacProvider sync from upstream tagged plugin.json)
  • `cmd/wfctl/plugin_registry_sync_core.go` — `core` sub-mode: bash-fallback shim for the parity cycle. Native Go port deferred to workflow#762 follow-up after Task 2's parity-diff CI confirms output equivalence.
  • `cmd/wfctl/plugin_registry_sync_readme.go` — `readme` sub-mode: same bash-fallback pattern.
  • `cmd/wfctl/plugin_release_grade_semver.go` — shared `PublishGradeSemverRe` constant (sourced by validate-contract --for-publish + registry-sync).
  • `cmd/wfctl/plugin_registry_sync_test.go` — table-driven tests: type allowlist, normalizeRepo parity, downloads URL invariant, publish-grade semver regex.
  • `docs/PLUGIN_RELEASE_GATES.md` — documents new subcommand + type-allowlist defense.
  • `cmd/wfctl/plugin.go` — registers `registry-sync` subcommand under `wfctl plugin` family.

Type allowlist defense (plan C-P3)

`registry-sync` rejects any `plugin.json.type` value outside `{external, builtin, core, iac}`. Specifically, `type: "scaffold"` is rejected — catches accidental re-registration of `scaffold-workflow-plugin` + `scaffold-workflow-plugin-private` as plugins.

--verify-capabilities

Stubbed for this PR. Capability-freshness gate via plugin-binary spawn + GetManifest RPC is deferred to a workflow#762 follow-up (per plan I-P9: avoids per-PR chicken-and-egg with not-yet-released binaries; runs as part of registry-side cron once releases land).

Pipeline discipline

  • Design: 2 adversarial cycles (cycle 1: 5 Critical + 8 Important; cycle 2 PASS post duplicate-section fix)
  • Plan: 2 adversarial cycles (cycle 1: 4 Critical + 9 Important; cycle 2 PASS with all 13 findings addressed inline)
  • Alignment: PASS
  • Scope-lock: 2026-05-24T00:22:15Z

Out of scope (this PR)

Test plan

  • `GOWORK=off go test ./cmd/wfctl/ ./plugin/external/sdk/... -count=1` green
  • `GOWORK=off golangci-lint run ./cmd/wfctl/plugin_registry_sync*.go ./cmd/wfctl/plugin_release_grade_semver.go` — 0 issues
  • Type-allowlist test covers all 4 accepted + 2 rejected types
  • normalizeRepo parity covers 8 URL variants matching bash behavior
  • PublishGradeSemverRe rejects: `v1.2`, `v1.2.3-rc1`, `v1.2.3-rc.1`, `v1.2.3+build`, `1.2.3`, `release-2026`

Rollback

Pure-additive: new subcommand, new constant file, new docs section. Existing `wfctl plugin validate-contract` unchanged; existing bash registry scripts unchanged. Revert is single `git revert`.

🤖 Generated with Claude Code

@codecov
Copy link
Copy Markdown

codecov Bot commented May 24, 2026

Codecov Report

❌ Patch coverage is 15.78947% with 256 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
cmd/wfctl/plugin_registry_sync.go 19.50% 193 Missing and 1 partial ⚠️
cmd/wfctl/plugin_registry_sync_core.go 0.00% 34 Missing ⚠️
cmd/wfctl/plugin_registry_sync_readme.go 0.00% 26 Missing ⚠️
cmd/wfctl/plugin.go 33.33% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

@github-actions
Copy link
Copy Markdown

⏱ Benchmark Results

No significant performance regressions detected.

benchstat comparison (baseline → PR)
## benchstat: baseline → PR
baseline-bench.txt:276: parsing iteration count: invalid syntax
baseline-bench.txt:297091: parsing iteration count: invalid syntax
baseline-bench.txt:641246: parsing iteration count: invalid syntax
baseline-bench.txt:951549: parsing iteration count: invalid syntax
baseline-bench.txt:1268245: parsing iteration count: invalid syntax
baseline-bench.txt:1576289: parsing iteration count: invalid syntax
benchmark-results.txt:276: parsing iteration count: invalid syntax
benchmark-results.txt:348772: parsing iteration count: invalid syntax
benchmark-results.txt:631424: parsing iteration count: invalid syntax
benchmark-results.txt:886230: parsing iteration count: invalid syntax
benchmark-results.txt:1214842: parsing iteration count: invalid syntax
benchmark-results.txt:1534298: 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                  7.341m ± 84%
ComponentLoad-4                        3.590m ±  1%
ComponentExecute-4                     1.914µ ±  1%
PoolContention/workers-1-4             1.086µ ±  2%
PoolContention/workers-2-4             1.079µ ±  2%
PoolContention/workers-4-4             1.086µ ±  1%
PoolContention/workers-8-4             1.084µ ±  4%
PoolContention/workers-16-4            1.114µ ±  2%
ComponentLifecycle-4                   3.646m ±  2%
SourceValidation-4                     2.348µ ±  2%
RegistryConcurrent-4                   801.8n ±  4%
LoaderLoadFromString-4                 3.680m ±  2%
geomean                                18.80µ

                            │ 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               6.115m ± 64%
ComponentLoad-4                     3.478m ±  1%
ComponentExecute-4                  1.819µ ±  1%
PoolContention/workers-1-4          1.008µ ±  2%
PoolContention/workers-2-4          1.007µ ±  1%
PoolContention/workers-4-4          1.007µ ±  1%
PoolContention/workers-8-4          1.009µ ±  1%
PoolContention/workers-16-4         1.015µ ±  1%
ComponentLifecycle-4                3.493m ±  1%
SourceValidation-4                  2.080µ ±  1%
RegistryConcurrent-4                723.8n ±  5%
LoaderLoadFromString-4              3.532m ±  1%
geomean                             17.36µ

                            │ 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                     288.9n ± 3%
CircuitBreakerExecution_Success-4             21.54n ± 1%
CircuitBreakerExecution_Failure-4             66.28n ± 0%
geomean                                       74.44n

                                  │ 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                  299.0n ± 2%
CircuitBreakerExecution_Success-4          22.68n ± 0%
CircuitBreakerExecution_Failure-4          70.94n ± 0%
geomean                                    78.36n

                                  │ 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         │
IaCStateBackend_InProcess-4                 310.3n ± 28%
IaCStateBackend_GRPC-4                      9.603m ±  6%
JQTransform_Simple-4                        677.2n ± 60%
JQTransform_ObjectConstruction-4            1.707µ ±  1%
JQTransform_ArraySelect-4                   3.712µ ±  1%
JQTransform_Complex-4                       41.63µ ±  1%
JQTransform_Throughput-4                    2.055µ ±  1%
SSEPublishDelivery-4                        64.12n ±  3%
geomean                                     4.034µ

                                 │ benchmark-results.txt │
                                 │         B/op          │
IaCStateBackend_InProcess-4                416.0 ±  0%
IaCStateBackend_GRPC-4                   5.963Mi ± 10%
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.840k ± 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                
                                 │ baseline-bench.txt │
                                 │       sec/op       │
IaCStateBackend_InProcess-4              295.1n ± 27%
IaCStateBackend_GRPC-4                   10.16m ±  5%
JQTransform_Simple-4                     633.2n ± 34%
JQTransform_ObjectConstruction-4         1.420µ ±  0%
JQTransform_ArraySelect-4                3.441µ ±  1%
JQTransform_Complex-4                    41.73µ ±  2%
JQTransform_Throughput-4                 1.762µ ±  0%
SSEPublishDelivery-4                     63.93n ±  1%
geomean                                  3.801µ

                                 │ baseline-bench.txt │
                                 │        B/op        │
IaCStateBackend_InProcess-4             416.0 ±  0%
IaCStateBackend_GRPC-4                5.788Mi ± 17%
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.855k ± 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                
                                    │ benchmark-results.txt │
                                    │        sec/op         │
SchemaValidation_Simple-4                      1.110µ ±  4%
SchemaValidation_AllFields-4                   1.687µ ± 17%
SchemaValidation_FormatValidation-4            1.617µ ±  4%
SchemaValidation_ManySchemas-4                 1.835µ ±  4%
geomean                                        1.535µ

                                    │ 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.101µ ± 4%
SchemaValidation_AllFields-4                 1.641µ ± 3%
SchemaValidation_FormatValidation-4          1.557µ ± 3%
SchemaValidation_ManySchemas-4               1.585µ ± 1%
geomean                                      1.453µ

                                    │ 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.289µ ± 16%
EventStoreAppend_SQLite-4                     1.437m ±  8%
GetTimeline_InMemory/events-10-4              14.20µ ±  3%
GetTimeline_InMemory/events-50-4              77.52µ ±  3%
GetTimeline_InMemory/events-100-4             155.2µ ±  4%
GetTimeline_InMemory/events-500-4             656.7µ ± 22%
GetTimeline_InMemory/events-1000-4            1.340m ±  1%
GetTimeline_SQLite/events-10-4                116.4µ ±  1%
GetTimeline_SQLite/events-50-4                262.0µ ±  0%
GetTimeline_SQLite/events-100-4               429.1µ ±  2%
GetTimeline_SQLite/events-500-4               1.834m ±  1%
GetTimeline_SQLite/events-1000-4              3.560m ±  0%
geomean                                       231.6µ

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

                                   │ 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.195µ ± 21%
EventStoreAppend_SQLite-4                  1.086m ±  5%
GetTimeline_InMemory/events-10-4           12.86µ ±  2%
GetTimeline_InMemory/events-50-4           70.96µ ±  3%
GetTimeline_InMemory/events-100-4          115.0µ ±  1%
GetTimeline_InMemory/events-500-4          587.4µ ±  1%
GetTimeline_InMemory/events-1000-4         1.200m ±  1%
GetTimeline_SQLite/events-10-4             86.46µ ±  2%
GetTimeline_SQLite/events-50-4             225.7µ ±  0%
GetTimeline_SQLite/events-100-4            394.1µ ±  1%
GetTimeline_SQLite/events-500-4            1.720m ±  1%
GetTimeline_SQLite/events-1000-4           3.361m ±  0%
geomean                                    200.7µ

                                   │ baseline-bench.txt │
                                   │        B/op        │
EventStoreAppend_InMemory-4                 783.0 ± 11%
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.30Ki

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

@intel352 intel352 merged commit 7fcb535 into main May 24, 2026
22 checks passed
@intel352 intel352 deleted the feat/762-registry-sync branch May 24, 2026 00:44
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.

1 participant