Skip to content

docs(plan): design for live-deployment example validation CI matrix#727

Merged
intel352 merged 1 commit into
mainfrom
docs/live-deploy-validation-design-1779216366
May 19, 2026
Merged

docs(plan): design for live-deployment example validation CI matrix#727
intel352 merged 1 commit into
mainfrom
docs/live-deploy-validation-design-1779216366

Conversation

@intel352
Copy link
Copy Markdown
Contributor

Design doc for the live-deploy CI matrix deferred from the 2026-05-19 QoL sweep. Closes #723. Execution gated on operator provisioning staging accounts + GitHub OIDC trust.

Files a design doc for the live-deploy CI matrix deferred from the
2026-05-19 multi-repo QoL sweep. Schema-level validation is insufficient
to promote a plugin to 'verified'; this design adds a weekly OIDC-driven
GitHub Actions matrix that exercises each IaC plugin's
examples/minimal/config.yaml against staging cloud accounts, auto-promotes
on green, demotes on 2 consecutive REDs.

Execution gated on operator provisioning staging accounts + GitHub
OIDC trust per provider.

Companion to workflow#725 (marketplace-verify subcommand). Closes #723.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 19, 2026 18:48
@intel352 intel352 merged commit 3eabf4c into main May 19, 2026
14 checks passed
@intel352 intel352 deleted the docs/live-deploy-validation-design-1779216366 branch May 19, 2026 18:49
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

Adds a design doc describing a proposed CI “live-deploy” matrix to validate IaC plugin example configs against real staging cloud accounts (via GitHub OIDC), and to drive automatic promotion/demotion of plugin status in workflow-registry.

Changes:

  • Introduces a phased plan for staging account/OIDC setup and a scheduled GitHub Actions matrix to run provider validations.
  • Specifies an automated reporting/promotion flow (PRs to workflow-registry, tracking issues on plugin repos) based on validation outcomes.
  • Documents assumptions, risks, rollback, and success criteria for operationalizing the matrix.

Comment on lines +75 to +76
- name: wfctl deploy --dry-run
run: wfctl deploy --dry-run examples/minimal/config.yaml
Comment on lines +68 to +80
- uses: actions/checkout@v4
with:
repository: GoCodeAlone/workflow-plugin-${{ matrix.plugin }}
ref: main
- uses: GoCodeAlone/setup-wfctl@v1
- name: Configure cloud auth (${{ matrix.plugin }})
run: ./.github/scripts/cloud-auth.sh ${{ matrix.plugin }}
- name: wfctl deploy --dry-run
run: wfctl deploy --dry-run examples/minimal/config.yaml
timeout-minutes: 10
- name: Report status
if: always()
run: ./.github/scripts/report-validation.sh ${{ matrix.plugin }} ${{ job.status }}
Comment on lines +56 to +60
permissions:
id-token: write
contents: read
pull-requests: write
jobs:
Comment on lines +98 to +105
- The cost of running the matrix weekly is bounded (no idle infra; each example deploys + tears down). Estimated <$5/week if examples are correctly written.
- Promotion/demotion PRs are admin-mergeable autonomously (per `feedback_admin_override_pr_merge`).

## Top doubts

1. **Cost runaway.** Examples that fail to tear down can leave cloud infra running. Mitigation: each example must include a teardown step + the workflow runs `wfctl destroy` after `deploy --dry-run` even on failure. Verify in alignment-check.
2. **Flaky staging.** Cloud-provider transient errors will cause false demotions. Mitigation: require 2 consecutive RED runs before opening a demotion PR. The first RED opens an investigation issue.
3. **wfctl deploy --dry-run semantics differ across providers.** If `--dry-run` is too permissive, the signal is meaningless. Verify each provider's dry-run actually validates IAM/API access, not just YAML.
```
STAGING_AWS_ROLE_ARN
STAGING_GCP_WORKLOAD_IDENTITY_PROVIDER + STAGING_GCP_SERVICE_ACCOUNT
STAGING_AZURE_TENANT_ID + AZURE_CLIENT_ID + AZURE_SUBSCRIPTION_ID
- `wfctl deploy --dry-run` exists for all 5 IaC providers. **Verify before execution** — `digitalocean` has it (used in BMW); `aws`/`gcp`/`azure`/`tofu` need verification.
- OIDC trust for all 4 cloud providers is achievable from GitHub Actions. True today — all 4 publish official auth actions.
- The cost of running the matrix weekly is bounded (no idle infra; each example deploys + tears down). Estimated <$5/week if examples are correctly written.
- Promotion/demotion PRs are admin-mergeable autonomously (per `feedback_admin_override_pr_merge`).
Comment on lines +57 to +80
id-token: write
contents: read
pull-requests: write
jobs:
live-deploy:
strategy:
fail-fast: false
matrix:
plugin: [aws, gcp, azure, digitalocean, tofu]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
repository: GoCodeAlone/workflow-plugin-${{ matrix.plugin }}
ref: main
- uses: GoCodeAlone/setup-wfctl@v1
- name: Configure cloud auth (${{ matrix.plugin }})
run: ./.github/scripts/cloud-auth.sh ${{ matrix.plugin }}
- name: wfctl deploy --dry-run
run: wfctl deploy --dry-run examples/minimal/config.yaml
timeout-minutes: 10
- name: Report status
if: always()
run: ./.github/scripts/report-validation.sh ${{ matrix.plugin }} ${{ job.status }}
@github-actions
Copy link
Copy Markdown

⏱ Benchmark Results

No significant performance regressions detected.

benchstat comparison (baseline → PR)
## benchstat: baseline → PR
baseline-bench.txt:274: parsing iteration count: invalid syntax
baseline-bench.txt:349214: parsing iteration count: invalid syntax
baseline-bench.txt:637566: parsing iteration count: invalid syntax
baseline-bench.txt:918025: parsing iteration count: invalid syntax
baseline-bench.txt:1219277: parsing iteration count: invalid syntax
baseline-bench.txt:1514166: parsing iteration count: invalid syntax
benchmark-results.txt:274: parsing iteration count: invalid syntax
benchmark-results.txt:340760: parsing iteration count: invalid syntax
benchmark-results.txt:607440: parsing iteration count: invalid syntax
benchmark-results.txt:929308: parsing iteration count: invalid syntax
benchmark-results.txt:1245947: parsing iteration count: invalid syntax
benchmark-results.txt:1590234: parsing iteration count: invalid syntax
goos: linux
goarch: amd64
pkg: github.com/GoCodeAlone/workflow/dynamic
cpu: AMD EPYC 7763 64-Core Processor                
                            │ baseline-bench.txt │
                            │       sec/op       │
InterpreterCreation-4               10.36m ± 70%
ComponentLoad-4                     3.659m ±  1%
ComponentExecute-4                  1.964µ ±  1%
PoolContention/workers-1-4          1.092µ ±  3%
PoolContention/workers-2-4          1.080µ ±  1%
PoolContention/workers-4-4          1.093µ ±  1%
PoolContention/workers-8-4          1.091µ ±  2%
PoolContention/workers-16-4         1.094µ ±  4%
ComponentLifecycle-4                3.649m ±  1%
SourceValidation-4                  2.334µ ±  1%
RegistryConcurrent-4                796.9n ±  4%
LoaderLoadFromString-4              3.653m ±  0%
geomean                             19.40µ

                            │ baseline-bench.txt │
                            │        B/op        │
InterpreterCreation-4               2.027Mi ± 0%
ComponentLoad-4                     2.180Mi ± 0%
ComponentExecute-4                  1.203Ki ± 0%
PoolContention/workers-1-4          1.203Ki ± 0%
PoolContention/workers-2-4          1.203Ki ± 0%
PoolContention/workers-4-4          1.203Ki ± 0%
PoolContention/workers-8-4          1.203Ki ± 0%
PoolContention/workers-16-4         1.203Ki ± 0%
ComponentLifecycle-4                2.183Mi ± 0%
SourceValidation-4                  1.984Ki ± 0%
RegistryConcurrent-4                1.133Ki ± 0%
LoaderLoadFromString-4              2.182Mi ± 0%
geomean                             15.25Ki

                            │ baseline-bench.txt │
                            │     allocs/op      │
InterpreterCreation-4                15.68k ± 0%
ComponentLoad-4                      18.02k ± 0%
ComponentExecute-4                    25.00 ± 0%
PoolContention/workers-1-4            25.00 ± 0%
PoolContention/workers-2-4            25.00 ± 0%
PoolContention/workers-4-4            25.00 ± 0%
PoolContention/workers-8-4            25.00 ± 0%
PoolContention/workers-16-4           25.00 ± 0%
ComponentLifecycle-4                 18.07k ± 0%
SourceValidation-4                    32.00 ± 0%
RegistryConcurrent-4                  2.000 ± 0%
LoaderLoadFromString-4               18.06k ± 0%
geomean                               183.3

cpu: AMD EPYC 9V74 80-Core Processor                
                            │ benchmark-results.txt │
                            │        sec/op         │
InterpreterCreation-4                  6.690m ± 61%
ComponentLoad-4                        3.504m ±  2%
ComponentExecute-4                     1.813µ ±  0%
PoolContention/workers-1-4             1.008µ ±  2%
PoolContention/workers-2-4             1.008µ ±  2%
PoolContention/workers-4-4             1.006µ ±  1%
PoolContention/workers-8-4             1.009µ ±  4%
PoolContention/workers-16-4            1.022µ ±  5%
ComponentLifecycle-4                   3.510m ±  2%
SourceValidation-4                     2.103µ ±  6%
RegistryConcurrent-4                   756.8n ±  3%
LoaderLoadFromString-4                 3.577m ±  1%
geomean                                17.62µ

                            │ benchmark-results.txt │
                            │         B/op          │
InterpreterCreation-4                  2.027Mi ± 0%
ComponentLoad-4                        2.180Mi ± 0%
ComponentExecute-4                     1.203Ki ± 0%
PoolContention/workers-1-4             1.203Ki ± 0%
PoolContention/workers-2-4             1.203Ki ± 0%
PoolContention/workers-4-4             1.203Ki ± 0%
PoolContention/workers-8-4             1.203Ki ± 0%
PoolContention/workers-16-4            1.203Ki ± 0%
ComponentLifecycle-4                   2.183Mi ± 0%
SourceValidation-4                     1.984Ki ± 0%
RegistryConcurrent-4                   1.133Ki ± 0%
LoaderLoadFromString-4                 2.182Mi ± 0%
geomean                                15.25Ki

                            │ benchmark-results.txt │
                            │       allocs/op       │
InterpreterCreation-4                   15.68k ± 0%
ComponentLoad-4                         18.02k ± 0%
ComponentExecute-4                       25.00 ± 0%
PoolContention/workers-1-4               25.00 ± 0%
PoolContention/workers-2-4               25.00 ± 0%
PoolContention/workers-4-4               25.00 ± 0%
PoolContention/workers-8-4               25.00 ± 0%
PoolContention/workers-16-4              25.00 ± 0%
ComponentLifecycle-4                    18.07k ± 0%
SourceValidation-4                       32.00 ± 0%
RegistryConcurrent-4                     2.000 ± 0%
LoaderLoadFromString-4                  18.06k ± 0%
geomean                                  183.3

pkg: github.com/GoCodeAlone/workflow/middleware
cpu: AMD EPYC 7763 64-Core Processor                
                                  │ baseline-bench.txt │
                                  │       sec/op       │
CircuitBreakerDetection-4                  287.9n ± 0%
CircuitBreakerExecution_Success-4          21.43n ± 1%
CircuitBreakerExecution_Failure-4          66.22n ± 0%
geomean                                    74.21n

                                  │ baseline-bench.txt │
                                  │        B/op        │
CircuitBreakerDetection-4                 144.0 ± 0%
CircuitBreakerExecution_Success-4         0.000 ± 0%
CircuitBreakerExecution_Failure-4         0.000 ± 0%
geomean                                              ¹
¹ summaries must be >0 to compute geomean

                                  │ baseline-bench.txt │
                                  │     allocs/op      │
CircuitBreakerDetection-4                 1.000 ± 0%
CircuitBreakerExecution_Success-4         0.000 ± 0%
CircuitBreakerExecution_Failure-4         0.000 ± 0%
geomean                                              ¹
¹ summaries must be >0 to compute geomean

cpu: AMD EPYC 9V74 80-Core Processor                
                                  │ benchmark-results.txt │
                                  │        sec/op         │
CircuitBreakerDetection-4                     300.5n ± 4%
CircuitBreakerExecution_Success-4             22.68n ± 0%
CircuitBreakerExecution_Failure-4             70.94n ± 0%
geomean                                       78.49n

                                  │ benchmark-results.txt │
                                  │         B/op          │
CircuitBreakerDetection-4                    144.0 ± 0%
CircuitBreakerExecution_Success-4            0.000 ± 0%
CircuitBreakerExecution_Failure-4            0.000 ± 0%
geomean                                                 ¹
¹ summaries must be >0 to compute geomean

                                  │ benchmark-results.txt │
                                  │       allocs/op       │
CircuitBreakerDetection-4                    1.000 ± 0%
CircuitBreakerExecution_Success-4            0.000 ± 0%
CircuitBreakerExecution_Failure-4            0.000 ± 0%
geomean                                                 ¹
¹ summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/module
cpu: AMD EPYC 7763 64-Core Processor                
                                 │ baseline-bench.txt │
                                 │       sec/op       │
IaCStateBackend_InProcess-4              309.2n ± 30%
IaCStateBackend_GRPC-4                   9.735m ±  2%
JQTransform_Simple-4                     680.2n ± 44%
JQTransform_ObjectConstruction-4         1.655µ ±  1%
JQTransform_ArraySelect-4                3.640µ ±  1%
JQTransform_Complex-4                    40.38µ ±  4%
JQTransform_Throughput-4                 2.048µ ±  2%
SSEPublishDelivery-4                     63.62n ±  0%
geomean                                  3.995µ

                                 │ baseline-bench.txt │
                                 │        B/op        │
IaCStateBackend_InProcess-4              416.0 ± 0%
IaCStateBackend_GRPC-4                 5.906Mi ± 9%
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.836k ± 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                
                                 │ benchmark-results.txt │
                                 │        sec/op         │
IaCStateBackend_InProcess-4                 298.9n ± 20%
IaCStateBackend_GRPC-4                      10.10m ±  1%
JQTransform_Simple-4                        621.6n ± 36%
JQTransform_ObjectConstruction-4            1.439µ ±  1%
JQTransform_ArraySelect-4                   3.490µ ±  1%
JQTransform_Complex-4                       42.60µ ±  1%
JQTransform_Throughput-4                    1.780µ ±  2%
SSEPublishDelivery-4                        64.40n ±  1%
geomean                                     3.827µ

                                 │ benchmark-results.txt │
                                 │         B/op          │
IaCStateBackend_InProcess-4                416.0 ±  0%
IaCStateBackend_GRPC-4                   5.827Mi ± 11%
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.861k ± 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                
                                    │ baseline-bench.txt │
                                    │       sec/op       │
SchemaValidation_Simple-4                    1.116µ ± 7%
SchemaValidation_AllFields-4                 1.686µ ± 5%
SchemaValidation_FormatValidation-4          1.578µ ± 1%
SchemaValidation_ManySchemas-4               1.873µ ± 4%
geomean                                      1.535µ

                                    │ baseline-bench.txt │
                                    │        B/op        │
SchemaValidation_Simple-4                   0.000 ± 0%
SchemaValidation_AllFields-4                0.000 ± 0%
SchemaValidation_FormatValidation-4         0.000 ± 0%
SchemaValidation_ManySchemas-4              0.000 ± 0%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                    │ baseline-bench.txt │
                                    │     allocs/op      │
SchemaValidation_Simple-4                   0.000 ± 0%
SchemaValidation_AllFields-4                0.000 ± 0%
SchemaValidation_FormatValidation-4         0.000 ± 0%
SchemaValidation_ManySchemas-4              0.000 ± 0%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

cpu: AMD EPYC 9V74 80-Core Processor                
                                    │ benchmark-results.txt │
                                    │        sec/op         │
SchemaValidation_Simple-4                       1.084µ ± 3%
SchemaValidation_AllFields-4                    1.623µ ± 2%
SchemaValidation_FormatValidation-4             1.580µ ± 1%
SchemaValidation_ManySchemas-4                  1.587µ ± 1%
geomean                                         1.449µ

                                    │ benchmark-results.txt │
                                    │         B/op          │
SchemaValidation_Simple-4                      0.000 ± 0%
SchemaValidation_AllFields-4                   0.000 ± 0%
SchemaValidation_FormatValidation-4            0.000 ± 0%
SchemaValidation_ManySchemas-4                 0.000 ± 0%
geomean                                                   ¹
¹ summaries must be >0 to compute geomean

                                    │ benchmark-results.txt │
                                    │       allocs/op       │
SchemaValidation_Simple-4                      0.000 ± 0%
SchemaValidation_AllFields-4                   0.000 ± 0%
SchemaValidation_FormatValidation-4            0.000 ± 0%
SchemaValidation_ManySchemas-4                 0.000 ± 0%
geomean                                                   ¹
¹ summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/store
cpu: AMD EPYC 7763 64-Core Processor                
                                   │ baseline-bench.txt │
                                   │       sec/op       │
EventStoreAppend_InMemory-4                1.280µ ± 13%
EventStoreAppend_SQLite-4                  1.360m ±  2%
GetTimeline_InMemory/events-10-4           14.87µ ±  4%
GetTimeline_InMemory/events-50-4           73.88µ ± 13%
GetTimeline_InMemory/events-100-4          133.7µ ±  1%
GetTimeline_InMemory/events-500-4          680.7µ ±  2%
GetTimeline_InMemory/events-1000-4         1.402m ±  2%
GetTimeline_SQLite/events-10-4             113.6µ ±  2%
GetTimeline_SQLite/events-50-4             264.1µ ±  5%
GetTimeline_SQLite/events-100-4            452.8µ ±  2%
GetTimeline_SQLite/events-500-4            1.990m ±  3%
GetTimeline_SQLite/events-1000-4           3.872m ±  2%
geomean                                    233.0µ

                                   │ baseline-bench.txt │
                                   │        B/op        │
EventStoreAppend_InMemory-4                  790.5 ± 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.35Ki

                                   │ baseline-bench.txt │
                                   │     allocs/op      │
EventStoreAppend_InMemory-4                  7.000 ± 0%
EventStoreAppend_SQLite-4                    53.00 ± 0%
GetTimeline_InMemory/events-10-4             125.0 ± 0%
GetTimeline_InMemory/events-50-4             653.0 ± 0%
GetTimeline_InMemory/events-100-4           1.306k ± 0%
GetTimeline_InMemory/events-500-4           6.514k ± 0%
GetTimeline_InMemory/events-1000-4          13.02k ± 0%
GetTimeline_SQLite/events-10-4               382.0 ± 0%
GetTimeline_SQLite/events-50-4              1.852k ± 0%
GetTimeline_SQLite/events-100-4             3.681k ± 0%
GetTimeline_SQLite/events-500-4             18.54k ± 0%
GetTimeline_SQLite/events-1000-4            37.29k ± 0%
geomean                                     1.162k

cpu: AMD EPYC 9V74 80-Core Processor                
                                   │ benchmark-results.txt │
                                   │        sec/op         │
EventStoreAppend_InMemory-4                   1.053µ ± 17%
EventStoreAppend_SQLite-4                     1.034m ±  9%
GetTimeline_InMemory/events-10-4              12.68µ ±  3%
GetTimeline_InMemory/events-50-4              70.35µ ±  2%
GetTimeline_InMemory/events-100-4             143.1µ ±  3%
GetTimeline_InMemory/events-500-4             582.0µ ± 17%
GetTimeline_InMemory/events-1000-4            1.188m ±  2%
GetTimeline_SQLite/events-10-4                85.81µ ±  1%
GetTimeline_SQLite/events-50-4                226.2µ ±  2%
GetTimeline_SQLite/events-100-4               395.4µ ±  2%
GetTimeline_SQLite/events-500-4               1.711m ±  1%
GetTimeline_SQLite/events-1000-4              3.351m ±  3%
geomean                                       200.5µ

                                   │ benchmark-results.txt │
                                   │         B/op          │
EventStoreAppend_InMemory-4                     818.0 ± 9%
EventStoreAppend_SQLite-4                     1.985Ki ± 2%
GetTimeline_InMemory/events-10-4              7.953Ki ± 0%
GetTimeline_InMemory/events-50-4              46.62Ki ± 0%
GetTimeline_InMemory/events-100-4             94.48Ki ± 0%
GetTimeline_InMemory/events-500-4             472.8Ki ± 0%
GetTimeline_InMemory/events-1000-4            944.3Ki ± 0%
GetTimeline_SQLite/events-10-4                16.74Ki ± 0%
GetTimeline_SQLite/events-50-4                87.14Ki ± 0%
GetTimeline_SQLite/events-100-4               175.4Ki ± 0%
GetTimeline_SQLite/events-500-4               846.1Ki ± 0%
GetTimeline_SQLite/events-1000-4              1.639Mi ± 0%
geomean                                       67.54Ki

                                   │ benchmark-results.txt │
                                   │       allocs/op       │
EventStoreAppend_InMemory-4                     7.000 ± 0%
EventStoreAppend_SQLite-4                       53.00 ± 0%
GetTimeline_InMemory/events-10-4                125.0 ± 0%
GetTimeline_InMemory/events-50-4                653.0 ± 0%
GetTimeline_InMemory/events-100-4              1.306k ± 0%
GetTimeline_InMemory/events-500-4              6.514k ± 0%
GetTimeline_InMemory/events-1000-4             13.02k ± 0%
GetTimeline_SQLite/events-10-4                  382.0 ± 0%
GetTimeline_SQLite/events-50-4                 1.852k ± 0%
GetTimeline_SQLite/events-100-4                3.681k ± 0%
GetTimeline_SQLite/events-500-4                18.54k ± 0%
GetTimeline_SQLite/events-1000-4               37.29k ± 0%
geomean                                        1.162k

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

@codecov
Copy link
Copy Markdown

codecov Bot commented May 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

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.

ci: live-deployment example validation matrix

2 participants