Skip to content

feat(wfctl): infra import-all bulk wrapper#786

Merged
intel352 merged 4 commits into
mainfrom
feat/wfctl-infra-import-all-2026-05-26T1900
May 27, 2026
Merged

feat(wfctl): infra import-all bulk wrapper#786
intel352 merged 4 commits into
mainfrom
feat/wfctl-infra-import-all-2026-05-26T1900

Conversation

@intel352
Copy link
Copy Markdown
Contributor

Summary

Adds wfctl infra import-all — a bulk wrapper that resolves a single iac.provider module from the config, calls the provider's IaCProviderEnumerator.EnumerateAll(resourceType), then iterates IaCProvider.Import for each enumerated cloud ID, persisting each synthesized ResourceState into the configured iac.state backend.

Per-zone failure isolation: a single Import failure does NOT abort the loop; failures accumulate and surface as one error at the end. Non-zero exit when any zone failed — matches the design's Phase 2 contract.

Flags

Flag Required Purpose
--provider yes iac.provider MODULE name from config (not the plugin type)
--type yes Resource type to enumerate, e.g. infra.dns
--config / -c no Config file (defaults to infra.yaml or config/infra.yaml)
--env no Environment name for config/state resolution
--dry-run no Probe each cloud ID via Import without persisting state
--plugin-dir no Plugin discovery override
--output / -o no Dump state-store contents to a JSON file after import

Architecture

  • cmd/wfctl/infra_import_all.go (new) — public CLI entry + testable dispatch core + 3 helpers (resolveProviderModuleByName, buildResourceStateFromImport, dumpStateToFile, sanitizeImportedZoneName).
  • cmd/wfctl/infra.gocase "import-all" in runInfra switch + usage-line addition.
  • Reuses existing helpers: resolveIaCProvider, resolveStateStore, isNoopStateStore, resourceStateFromImportedState, infraStateStore (package-private), currentInfraPluginDir, resolveInfraConfig, infraPreserveKeys.
  • resolveProviderModuleByName mirrors resolveProviderForSpec (line-for-line) but indexes by module NAME — the bulk wrapper has no per-resource spec.

Verification

Unit tests:

  • TestRunInfraImportAll_requiresProvider — missing --provider flag error.
  • TestRunInfraImportAll_requiresType — missing --type flag error.
  • TestRunInfraImportAllWithDeps_dispatch — happy path: 2 zones enumerated → 2 Import calls → 2 ResourceStates saved.
  • TestRunInfraImportAllWithDeps_dryRun — Import probed for each zone, ZERO state saved.
  • TestRunInfraImportAllWithDeps_perZoneFailureIsolation — failing zone does NOT abort siblings; error summarizes failures.
  • TestRunInfraImportAllWithDeps_requiresEnumerator — clean error for providers without EnumeratorAll (no panic).
  • TestRunInfraImportAllWithDeps_enumerateError — early-abort path when EnumerateAll itself errors.
  • TestDumpStateToFile — JSON output, 0o600 file mode.
  • TestSanitizeImportedZoneName — table-driven slug mapping.

End-to-end (env-gated, build-tagged e2e_dns_import):

  • TestInfraImportAll_e2e_DO — drives runInfraImportAll against a real workflow-plugin-digitalocean plugin loaded from disk; requires WFCTL_E2E_DNS_IMPORT=1 + DIGITALOCEAN_TOKEN.
GOWORK=off go test ./cmd/wfctl/... -timeout 300s

All green (132s).

Part of cross-repo cascade

docs/plans/2026-05-26-dns-provider-contract.md (workflow-plugin-infra). PR 6 of 9. Depends on PRs 1-4 (provider plugin EnumerateAll) — all merged + tagged + workflow-registry pin-bumped via PR 5.

Test plan

  • GOWORK=off go test ./cmd/wfctl/... — green
  • GOWORK=off go vet -tags e2e_dns_import ./cmd/wfctl/... — clean
  • E2E with real DO token + plugin (env-gated; reviewer can run)

🤖 Generated with Claude Code

@codecov
Copy link
Copy Markdown

codecov Bot commented May 27, 2026

Codecov Report

❌ Patch coverage is 44.68085% with 78 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
cmd/wfctl/infra_import_all.go 44.92% 66 Missing and 10 partials ⚠️
cmd/wfctl/infra.go 33.33% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

Two follow-up fixes after PR 786's first CI pass:

1. cmd/wfctl/infra_import_all.go:169 — staticcheck S1039 flagged
   fmt.Sprintf with no format directives. Replaced with the plain string
   literal.

2. cmd/wfctl/infra_import_all_e2e_test.go — the dry-run → real-run
   transition mutated args in-place (args[len(args)-1] = "--type"; append;
   dropFlag) which assumed --dry-run was always the last element. When
   WFCTL_E2E_DO_PLUGIN_DIR was set the plugin-dir path took the last slot
   and the rewrite corrupted the flag list. Rebuild each pass cleanly off
   a baseArgs slice so the transition is order-independent. dropFlag
   helper deleted (no longer needed).
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 27, 2026

⏱ Benchmark Results

No significant performance regressions detected.

benchstat comparison (baseline → PR)
## benchstat: baseline → PR
baseline-bench.txt:282: parsing iteration count: invalid syntax
baseline-bench.txt:321997: parsing iteration count: invalid syntax
baseline-bench.txt:565985: parsing iteration count: invalid syntax
baseline-bench.txt:1155000: parsing iteration count: invalid syntax
baseline-bench.txt:1437232: parsing iteration count: invalid syntax
baseline-bench.txt:1716308: parsing iteration count: invalid syntax
benchmark-results.txt:282: parsing iteration count: invalid syntax
benchmark-results.txt:339376: parsing iteration count: invalid syntax
benchmark-results.txt:645497: parsing iteration count: invalid syntax
benchmark-results.txt:951714: parsing iteration count: invalid syntax
benchmark-results.txt:1497235: parsing iteration count: invalid syntax
benchmark-results.txt:1785122: parsing iteration count: invalid syntax
goos: linux
goarch: amd64
pkg: github.com/GoCodeAlone/workflow/dynamic
cpu: AMD EPYC 9V74 80-Core Processor                
                            │ benchmark-results.txt │
                            │        sec/op         │
InterpreterCreation-4                  7.344m ± 58%
ComponentLoad-4                        3.523m ± 11%
ComponentExecute-4                     1.831µ ±  1%
PoolContention/workers-1-4             1.019µ ±  1%
PoolContention/workers-2-4             1.014µ ±  1%
PoolContention/workers-4-4             1.023µ ±  1%
PoolContention/workers-8-4             1.020µ ±  1%
PoolContention/workers-16-4            1.022µ ±  1%
ComponentLifecycle-4                   3.556m ±  1%
SourceValidation-4                     2.109µ ±  0%
RegistryConcurrent-4                   753.6n ±  6%
LoaderLoadFromString-4                 3.602m ±  2%
geomean                                17.87µ

                            │ 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: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                            │ baseline-bench.txt │
                            │       sec/op       │
InterpreterCreation-4               8.282m ± 62%
ComponentLoad-4                     3.618m ±  5%
ComponentExecute-4                  1.894µ ±  1%
PoolContention/workers-1-4          1.193µ ±  1%
PoolContention/workers-2-4          1.199µ ±  1%
PoolContention/workers-4-4          1.204µ ±  1%
PoolContention/workers-8-4          1.200µ ±  1%
PoolContention/workers-16-4         1.218µ ±  3%
ComponentLifecycle-4                3.573m ±  5%
SourceValidation-4                  2.252µ ±  1%
RegistryConcurrent-4                900.0n ±  2%
LoaderLoadFromString-4              3.650m ±  3%
geomean                             19.86µ

                            │ 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 9V74 80-Core Processor                
                                  │ benchmark-results.txt │
                                  │        sec/op         │
CircuitBreakerDetection-4                     299.6n ± 1%
CircuitBreakerExecution_Success-4             22.66n ± 0%
CircuitBreakerExecution_Failure-4             71.02n ± 1%
geomean                                       78.41n

                                  │ 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: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                  │ baseline-bench.txt │
                                  │       sec/op       │
CircuitBreakerDetection-4                  455.8n ± 1%
CircuitBreakerExecution_Success-4          59.79n ± 0%
CircuitBreakerExecution_Failure-4          65.03n ± 0%
geomean                                    121.0n

                                  │ 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 9V74 80-Core Processor                
                                 │ benchmark-results.txt │
                                 │        sec/op         │
IaCStateBackend_InProcess-4                 298.5n ± 37%
IaCStateBackend_GRPC-4                      10.25m ±  1%
JQTransform_Simple-4                        654.4n ± 30%
JQTransform_ObjectConstruction-4            1.431µ ±  1%
JQTransform_ArraySelect-4                   3.457µ ±  2%
JQTransform_Complex-4                       41.73µ ±  1%
JQTransform_Throughput-4                    1.758µ ±  1%
SSEPublishDelivery-4                        65.08n ±  1%
geomean                                     3.840µ

                                 │ benchmark-results.txt │
                                 │         B/op          │
IaCStateBackend_InProcess-4                416.0 ±  0%
IaCStateBackend_GRPC-4                   5.801Mi ± 11%
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.859k ± 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: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                 │ baseline-bench.txt │
                                 │       sec/op       │
IaCStateBackend_InProcess-4              351.9n ±  7%
IaCStateBackend_GRPC-4                   9.986m ± 37%
JQTransform_Simple-4                     708.2n ± 30%
JQTransform_ObjectConstruction-4         1.540µ ±  1%
JQTransform_ArraySelect-4                3.345µ ±  2%
JQTransform_Complex-4                    37.67µ ±  2%
JQTransform_Throughput-4                 1.890µ ±  1%
SSEPublishDelivery-4                     76.63n ±  1%
geomean                                  4.033µ

                                 │ baseline-bench.txt │
                                 │        B/op        │
IaCStateBackend_InProcess-4             416.0 ±  0%
IaCStateBackend_GRPC-4                5.791Mi ± 11%
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.871k ± 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 9V74 80-Core Processor                
                                    │ benchmark-results.txt │
                                    │        sec/op         │
SchemaValidation_Simple-4                      1.094µ ± 19%
SchemaValidation_AllFields-4                   1.640µ ±  2%
SchemaValidation_FormatValidation-4            1.595µ ±  2%
SchemaValidation_ManySchemas-4                 1.602µ ±  2%
geomean                                        1.463µ

                                    │ 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: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                    │ baseline-bench.txt │
                                    │       sec/op       │
SchemaValidation_Simple-4                   1.046µ ± 22%
SchemaValidation_AllFields-4                1.538µ ±  3%
SchemaValidation_FormatValidation-4         1.503µ ±  2%
SchemaValidation_ManySchemas-4              1.504µ ±  1%
geomean                                     1.381µ

                                    │ 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 9V74 80-Core Processor                
                                   │ benchmark-results.txt │
                                   │        sec/op         │
EventStoreAppend_InMemory-4                   1.062µ ± 20%
EventStoreAppend_SQLite-4                     1.101m ±  2%
GetTimeline_InMemory/events-10-4              14.17µ ±  4%
GetTimeline_InMemory/events-50-4              80.51µ ±  5%
GetTimeline_InMemory/events-100-4             148.7µ ± 20%
GetTimeline_InMemory/events-500-4             628.2µ ±  0%
GetTimeline_InMemory/events-1000-4            1.273m ±  2%
GetTimeline_SQLite/events-10-4                89.37µ ±  1%
GetTimeline_SQLite/events-50-4                237.4µ ±  1%
GetTimeline_SQLite/events-100-4               416.2µ ±  2%
GetTimeline_SQLite/events-500-4               1.795m ±  2%
GetTimeline_SQLite/events-1000-4              3.462m ±  2%
geomean                                       213.0µ

                                   │ benchmark-results.txt │
                                   │         B/op          │
EventStoreAppend_InMemory-4                     755.0 ± 9%
EventStoreAppend_SQLite-4                     1.983Ki ± 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.09Ki

                                   │ 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: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                   │ baseline-bench.txt │
                                   │       sec/op       │
EventStoreAppend_InMemory-4                1.155µ ± 21%
EventStoreAppend_SQLite-4                  1.049m ±  9%
GetTimeline_InMemory/events-10-4           13.47µ ±  1%
GetTimeline_InMemory/events-50-4           73.88µ ± 20%
GetTimeline_InMemory/events-100-4          118.1µ ±  1%
GetTimeline_InMemory/events-500-4          605.8µ ±  1%
GetTimeline_InMemory/events-1000-4         1.218m ±  1%
GetTimeline_SQLite/events-10-4             81.92µ ±  1%
GetTimeline_SQLite/events-50-4             236.0µ ±  1%
GetTimeline_SQLite/events-100-4            429.8µ ±  2%
GetTimeline_SQLite/events-500-4            1.900m ±  2%
GetTimeline_SQLite/events-1000-4           3.753m ±  3%
geomean                                    207.1µ

                                   │ baseline-bench.txt │
                                   │        B/op        │
EventStoreAppend_InMemory-4                  804.0 ± 8%
EventStoreAppend_SQLite-4                  1.983Ki ± 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.44Ki

                                   │ 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 12c39de into main May 27, 2026
24 checks passed
@intel352 intel352 deleted the feat/wfctl-infra-import-all-2026-05-26T1900 branch May 27, 2026 02:05
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