Skip to content

fix(wfctl): preserve required_secrets through install path#748

Merged
intel352 merged 1 commit into
mainfrom
fix/installed-manifest-required-secrets
May 21, 2026
Merged

fix(wfctl): preserve required_secrets through install path#748
intel352 merged 1 commit into
mainfrom
fix/installed-manifest-required-secrets

Conversation

@intel352
Copy link
Copy Markdown
Contributor

Summary

`wfctl secrets setup --plugin ` reads `required_secrets[]` from the on-disk `plugin.json`. Two struct gaps were dropping the field along the install path:

  1. `cmd/wfctl/plugin_registry.go`: `RegistryManifest` had no `RequiredSecrets` field → `json.Unmarshal` silently discarded the upstream block at fetch time.
  2. `cmd/wfctl/plugin_install.go`: `installedPluginJSON` likewise had no `RequiredSecrets` field → `writeInstalledManifest` couldn't carry it through.

Both filled in with the existing `PluginRequiredSecret` type from `secrets_setup_plugin.go`. `writeInstalledManifest` now copies `m.RequiredSecrets → pj.RequiredSecrets`.

How this surfaced

`workflow-plugin-hover@v0.2.0` declares 3 required secrets (`HOVER_USERNAME`, `HOVER_PASSWORD`, `HOVER_TOTP_SECRET`). After:

```
wfctl plugin install
wfctl secrets setup --plugin hover --scope repo
```

→ `plugin "workflow-plugin-hover" declares no required_secrets[]; nothing to do`

`jq .required_secrets data/plugins/hover/plugin.json` returned `null`, even though `raw.githubusercontent.com/.../plugins/hover/manifest.json` had the full array.

Tests

  • `TestRegistryManifest_UnmarshalPreservesRequiredSecrets` — guards the unmarshal path.
  • `TestWriteInstalledManifest_PreservesRequiredSecrets` — guards the disk-write path; also asserts the raw JSON contains the `required_secrets` key.

Both fail on `main` without these struct changes.

Test plan

  • `GOWORK=off go test ./... -count=1 -timeout 600s` all green
  • `gofmt -l .` clean
  • Two new regression tests pass

🤖 Generated with Claude Code

`wfctl secrets setup --plugin <name>` reads required_secrets[]
from the on-disk plugin.json. Two struct gaps were dropping
the field along the install path:

1. cmd/wfctl/plugin_registry.go: RegistryManifest had no
   RequiredSecrets field, so json.Unmarshal silently discarded
   the upstream block at fetch time.
2. cmd/wfctl/plugin_install.go: installedPluginJSON likewise
   had no RequiredSecrets field, so writeInstalledManifest
   couldn't carry it through even if (1) was fixed.

Both filled in with the existing PluginRequiredSecret type from
secrets_setup_plugin.go. writeInstalledManifest now copies
m.RequiredSecrets → pj.RequiredSecrets so the on-disk plugin.json
preserves the block.

Observed in practice via workflow-plugin-hover v0.2.0:
- registry manifest at plugins/hover/manifest.json had
  required_secrets[3]
- installed plugin.json at data/plugins/hover/plugin.json had
  no required_secrets field
- wfctl secrets setup --plugin hover --scope repo reported
  "declares no required_secrets[]; nothing to do"

Regression tests:
- TestRegistryManifest_UnmarshalPreservesRequiredSecrets
- TestWriteInstalledManifest_PreservesRequiredSecrets

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 21, 2026 05:33
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

Fixes a regression in wfctl where plugin required_secrets[] declared in registry manifest.json were silently dropped during fetch/install, causing wfctl secrets setup --plugin <name> to incorrectly report there are no required secrets.

Changes:

  • Add RequiredSecrets []PluginRequiredSecret to RegistryManifest so registry manifest unmarshalling preserves required_secrets.
  • Add RequiredSecrets []PluginRequiredSecret to the installed plugin.json shape and copy it in writeInstalledManifest.
  • Add regression tests covering both the unmarshal path and the installed-manifest write path.

Reviewed changes

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

File Description
cmd/wfctl/plugin_registry.go Extends RegistryManifest to retain required_secrets from registry manifest.json.
cmd/wfctl/plugin_install.go Extends installed plugin.json struct + ensures writeInstalledManifest copies RequiredSecrets.
cmd/wfctl/plugin_install_test.go Adds regression tests ensuring required_secrets survives both unmarshal and disk-write paths.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 21, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 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:300973: parsing iteration count: invalid syntax
baseline-bench.txt:594353: parsing iteration count: invalid syntax
baseline-bench.txt:907203: parsing iteration count: invalid syntax
baseline-bench.txt:1240150: parsing iteration count: invalid syntax
baseline-bench.txt:1570784: parsing iteration count: invalid syntax
benchmark-results.txt:276: parsing iteration count: invalid syntax
benchmark-results.txt:393028: parsing iteration count: invalid syntax
benchmark-results.txt:704447: parsing iteration count: invalid syntax
benchmark-results.txt:1067214: parsing iteration count: invalid syntax
benchmark-results.txt:1396633: parsing iteration count: invalid syntax
benchmark-results.txt:1691687: 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 │
                            │       sec/op       │
InterpreterCreation-4               5.637m ± 84%
ComponentLoad-4                     3.531m ±  2%
ComponentExecute-4                  1.845µ ±  2%
PoolContention/workers-1-4          1.016µ ±  1%
PoolContention/workers-2-4          1.030µ ±  1%
PoolContention/workers-4-4          1.004µ ±  1%
PoolContention/workers-8-4          1.014µ ±  1%
PoolContention/workers-16-4         1.015µ ±  2%
ComponentLifecycle-4                3.536m ±  1%
SourceValidation-4                  2.106µ ±  2%
RegistryConcurrent-4                760.9n ±  4%
LoaderLoadFromString-4              3.609m ±  2%
geomean                             17.48µ

                            │ 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: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                            │ benchmark-results.txt │
                            │        sec/op         │
InterpreterCreation-4                  10.77m ± 71%
ComponentLoad-4                        3.547m ±  1%
ComponentExecute-4                     1.923µ ±  1%
PoolContention/workers-1-4             1.183µ ±  3%
PoolContention/workers-2-4             1.185µ ±  2%
PoolContention/workers-4-4             1.200µ ±  1%
PoolContention/workers-8-4             1.194µ ±  5%
PoolContention/workers-16-4            1.183µ ±  1%
ComponentLifecycle-4                   3.483m ±  1%
SourceValidation-4                     2.216µ ±  1%
RegistryConcurrent-4                   883.8n ±  7%
LoaderLoadFromString-4                 3.498m ±  1%
geomean                                20.03µ

                            │ 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 9V74 80-Core Processor                
                                  │ baseline-bench.txt │
                                  │       sec/op       │
CircuitBreakerDetection-4                 298.3n ± 14%
CircuitBreakerExecution_Success-4         22.66n ±  2%
CircuitBreakerExecution_Failure-4         70.92n ±  0%
geomean                                   78.27n

                                  │ 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: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                  │ benchmark-results.txt │
                                  │        sec/op         │
CircuitBreakerDetection-4                     453.7n ± 1%
CircuitBreakerExecution_Success-4             59.78n ± 0%
CircuitBreakerExecution_Failure-4             64.99n ± 0%
geomean                                       120.8n

                                  │ 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 9V74 80-Core Processor                
                                 │ baseline-bench.txt │
                                 │       sec/op       │
IaCStateBackend_InProcess-4              301.0n ± 18%
IaCStateBackend_GRPC-4                   10.21m ±  1%
JQTransform_Simple-4                     646.8n ± 38%
JQTransform_ObjectConstruction-4         1.487µ ±  3%
JQTransform_ArraySelect-4                3.553µ ±  4%
JQTransform_Complex-4                    42.02µ ±  1%
JQTransform_Throughput-4                 1.812µ ±  0%
SSEPublishDelivery-4                     64.83n ±  2%
geomean                                  3.884µ

                                 │ baseline-bench.txt │
                                 │        B/op        │
IaCStateBackend_InProcess-4             416.0 ±  0%
IaCStateBackend_GRPC-4                5.775Mi ± 12%
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.856k ± 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: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                 │ benchmark-results.txt │
                                 │        sec/op         │
IaCStateBackend_InProcess-4                 355.7n ± 17%
IaCStateBackend_GRPC-4                      9.844m ±  3%
JQTransform_Simple-4                        709.3n ± 29%
JQTransform_ObjectConstruction-4            1.530µ ±  1%
JQTransform_ArraySelect-4                   3.323µ ±  1%
JQTransform_Complex-4                       36.01µ ±  1%
JQTransform_Throughput-4                    1.861µ ±  1%
SSEPublishDelivery-4                        76.72n ±  1%
geomean                                     3.995µ

                                 │ benchmark-results.txt │
                                 │         B/op          │
IaCStateBackend_InProcess-4                416.0 ±  0%
IaCStateBackend_GRPC-4                   5.674Mi ± 16%
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.875k ± 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 9V74 80-Core Processor                
                                    │ baseline-bench.txt │
                                    │       sec/op       │
SchemaValidation_Simple-4                   1.076µ ±  2%
SchemaValidation_AllFields-4                1.615µ ± 11%
SchemaValidation_FormatValidation-4         1.565µ ±  5%
SchemaValidation_ManySchemas-4              1.590µ ±  2%
geomean                                     1.442µ

                                    │ 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: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                    │ benchmark-results.txt │
                                    │        sec/op         │
SchemaValidation_Simple-4                      1.020µ ± 36%
SchemaValidation_AllFields-4                   1.520µ ±  3%
SchemaValidation_FormatValidation-4            1.494µ ±  1%
SchemaValidation_ManySchemas-4                 1.500µ ±  3%
geomean                                        1.365µ

                                    │ 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 9V74 80-Core Processor                
                                   │ baseline-bench.txt │
                                   │       sec/op       │
EventStoreAppend_InMemory-4                1.093µ ± 17%
EventStoreAppend_SQLite-4                  1.043m ±  2%
GetTimeline_InMemory/events-10-4           12.44µ ±  2%
GetTimeline_InMemory/events-50-4           69.25µ ±  3%
GetTimeline_InMemory/events-100-4          110.8µ ± 25%
GetTimeline_InMemory/events-500-4          565.6µ ±  1%
GetTimeline_InMemory/events-1000-4         1.146m ±  1%
GetTimeline_SQLite/events-10-4             85.79µ ±  1%
GetTimeline_SQLite/events-50-4             221.9µ ±  1%
GetTimeline_SQLite/events-100-4            387.6µ ±  3%
GetTimeline_SQLite/events-500-4            1.667m ±  0%
GetTimeline_SQLite/events-1000-4           3.235m ±  1%
geomean                                    193.8µ

                                   │ baseline-bench.txt │
                                   │        B/op        │
EventStoreAppend_InMemory-4                 745.0 ± 14%
EventStoreAppend_SQLite-4                 1.984Ki ±  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.01Ki

                                   │ 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: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                   │ benchmark-results.txt │
                                   │        sec/op         │
EventStoreAppend_InMemory-4                   1.103µ ±  4%
EventStoreAppend_SQLite-4                     967.9µ ±  9%
GetTimeline_InMemory/events-10-4              13.82µ ±  3%
GetTimeline_InMemory/events-50-4              75.74µ ±  2%
GetTimeline_InMemory/events-100-4             152.1µ ± 22%
GetTimeline_InMemory/events-500-4             597.6µ ±  1%
GetTimeline_InMemory/events-1000-4            1.227m ±  1%
GetTimeline_SQLite/events-10-4                82.29µ ±  1%
GetTimeline_SQLite/events-50-4                234.5µ ±  2%
GetTimeline_SQLite/events-100-4               425.1µ ±  1%
GetTimeline_SQLite/events-500-4               1.909m ±  3%
GetTimeline_SQLite/events-1000-4              3.791m ±  1%
geomean                                       210.1µ

                                   │ benchmark-results.txt │
                                   │         B/op          │
EventStoreAppend_InMemory-4                    749.0 ± 12%
EventStoreAppend_SQLite-4                    1.986Ki ±  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.05Ki

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

@intel352 intel352 merged commit f9ecd7b into main May 21, 2026
26 checks passed
@intel352 intel352 deleted the fix/installed-manifest-required-secrets branch May 21, 2026 07:10
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