Skip to content

docs(dns): scoped secret-set + IaC DNS provider matrix#741

Merged
intel352 merged 1 commit into
mainfrom
docs/dns-providers-1779285936
May 20, 2026
Merged

docs(dns): scoped secret-set + IaC DNS provider matrix#741
intel352 merged 1 commit into
mainfrom
docs/dns-providers-1779285936

Conversation

@intel352
Copy link
Copy Markdown
Contributor

Per workflow#735 SPEC T19. Two new operator docs.

Per workflow#735 SPEC T19.

docs/wfctl-secrets-scopes.md:
- Scope table (repo/env/org) with URL prefix + PAT scope + visibility
  flags.
- Repo default examples (value/from-file/piped/masked-TTY).
- Env scope reads repo from app.yaml.
- Org scope bypass-app.yaml + visibility flag (all/selected/private).
- Plugin-driven setup walkthrough.
- PAT scope cheat sheet (repo / repo+workflow / admin:org).
- Troubleshooting (403/422/encryption errors).

docs/iac-dns-providers.md:
- Provider matrix: DigitalOcean (verified) / Namecheap / Hover.
- Auth + CIDR / bulk-op caveats per provider.
- Common config shape with all record types (A/AAAA/CNAME/MX/TXT).
- Namecheap single-IP allowlist gotcha (NAT/bastion workaround).
- Hover browser-flow auth + TOTP + failure modes (CAPTCHA, HTML
  regex breakage).
- infra.dyndns config example with multi-source quorum.
- Cross-link to wfctl-secrets-scopes.md + the DNS-providers plan.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 20, 2026 14:07
@intel352 intel352 merged commit 063bbbb into main May 20, 2026
@intel352 intel352 deleted the docs/dns-providers-1779285936 branch May 20, 2026 14:07
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 two new operator-facing documentation pages intended to (1) explain wfctl GitHub secret scoping and (2) provide an IaC DNS provider capability/auth matrix for infra.dns (per workflow#735 SPEC T19).

Changes:

  • Add docs/wfctl-secrets-scopes.md describing repo/env/org GitHub secret destinations and required token scopes.
  • Add docs/iac-dns-providers.md describing DNS provider plugins, config shape, and operational notes.

Reviewed changes

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

File Description
docs/wfctl-secrets-scopes.md New doc describing GitHub secret scopes and intended wfctl secrets usage patterns.
docs/iac-dns-providers.md New doc describing infra.dns providers, configuration examples, and operational guidance.
Comments suppressed due to low confidence (7)

docs/wfctl-secrets-scopes.md:27

  • This section claims piped stdin is honored for wfctl secrets set, but the implementation only reads from --value, --from-file, an explicit injected reader (tests), or an interactive TTY prompt; non-TTY stdin currently errors. Either update the docs to match current behavior or update the command implementation to read from stdin when it’s not a TTY.
Pipes are honored:

```sh
echo -n "abc123" | wfctl secrets set MY_TOKEN
**docs/wfctl-secrets-scopes.md:72**
* The org-scope example for `--visibility selected` implies repo IDs are populated “via a follow-up” and that the CLI will accept them in a future flag. In the current GitHub provider, visibility=selected requires `selected_repository_ids` at provider creation time; `wfctl secrets set --scope org` currently passes `nil` for selected repo IDs, so `--visibility selected` would fail. Please either document that `selected` isn’t supported by `wfctl` yet (and should not be used), or adjust the guidance/examples accordingly.

Only the listed repo IDs can pull. (selected_repository_ids

are populated programmatically via a follow-up; CLI accepts

them in a future flag.)

wfctl secrets set CI_SECRET
--scope org --org GoCodeAlone
--visibility selected
--value "..."

**docs/wfctl-secrets-scopes.md:92**
* This “Plugin-driven setup” section describes `wfctl secrets setup --plugin ...` reading `data/plugins/<plugin>/plugin.json` and iterating `required_secrets[]`, but the current `wfctl secrets setup` implementation only supports `--env` and reads `secrets.entries` from the workflow config. If plugin-driven setup is not implemented in this repo yet, this section should be removed or moved to a future/plan doc to avoid sending operators to a non-existent command/manifest format.

Plugin-driven setup

If you're configuring a plugin that declares required_secrets[] in
its plugin.json (workflow-plugin-namecheap, workflow-plugin-hover,
etc.), use the interactive setup flow:

wfctl secrets setup --plugin workflow-plugin-hover \
  --scope org --org GoCodeAlone --visibility all

This:

  1. Reads data/plugins/workflow-plugin-hover/plugin.json.
  2. Iterates required_secrets[].
  3. Prompts for each (masked iff sensitive: true).
  4. Writes each to the chosen GH scope.
**docs/wfctl-secrets-scopes.md:115**
* The troubleshooting note says the setup flow “skips empty values,” but this doc’s earlier `secrets set` flow would attempt to write an empty value if the user just presses Enter in the masked prompt, which can trigger the GitHub 422 error. Consider rephrasing to distinguish between `wfctl secrets set` (single secret) vs `wfctl secrets setup` (bulk) behavior, and remove the “echo settings” suggestion if the input is masked (no terminal echo).
  • HTTP 422: secret value cannot be empty — the prompted value
    was empty. The setup flow skips empty values; check terminal
    echo settings.
**docs/iac-dns-providers.md:33**
* This example declares DNS under a top-level `resources:` key. `WorkflowConfig` expects infrastructure resources under `infrastructure.resources` (or, for infra.yaml examples elsewhere in this repo, infra resources are declared as `modules` with `type: infra.*`). As written, `resources:` would be ignored by config loading. Please adjust the YAML shape to match one supported by the engine/CLI.

resources:

  • name:
    type: infra.dns
    config:
    provider:
**docs/iac-dns-providers.md:120**
* This doc references an `infra.dyndns` module and describes its behavior/config, but there is no `infra.dyndns` module type in this repo at the moment. Please remove/flag this section as planned functionality (or link to the plugin/module that actually provides it) to avoid documenting a non-existent module.

Dynamic DNS

For dynamic IPs (home labs, mobile workstations), pair any DNS
provider with the infra.dyndns module:

- name: home-dns
  type: infra.dyndns
  config:
    provider: namecheap        # any iac.provider.* module name
    domain: gocodealone.tech
    record_name: home
    poll_interval: 5m
    detect_via: [icanhazip, ifconfig.me, ipify]
    quorum: 2                  # 2-of-3 must agree before update fires
**docs/iac-dns-providers.md:145**
* The secret management section recommends `wfctl secrets setup --plugin ... --scope ...`, but the current `wfctl secrets setup` command only supports `--env` and reads secrets from config (no `--plugin`/`--scope` flags). Please update these commands to something that exists today, or clearly mark them as future/planned so operators don’t try to run unsupported flags.

Secret management

Each provider declares its required secrets in plugin.json's
required_secrets[]. To set them all at once:

wfctl secrets setup --plugin workflow-plugin-namecheap \
  --scope org --org GoCodeAlone

wfctl secrets setup --plugin workflow-plugin-hover \
  --scope env --env production
</details>

Comment on lines +3 to +5
`wfctl secrets set` and `wfctl secrets setup --plugin` both write to
one of three GitHub secret destinations. Each requires a different
PAT scope and exposes different visibility controls.
Comment thread docs/iac-dns-providers.md
Comment on lines +19 to +20
type: iac.provider.<digitalocean|namecheap|hover>
config:
@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:316615: parsing iteration count: invalid syntax
baseline-bench.txt:611054: parsing iteration count: invalid syntax
baseline-bench.txt:912294: parsing iteration count: invalid syntax
baseline-bench.txt:1226494: parsing iteration count: invalid syntax
baseline-bench.txt:1505060: parsing iteration count: invalid syntax
benchmark-results.txt:274: parsing iteration count: invalid syntax
benchmark-results.txt:302525: parsing iteration count: invalid syntax
benchmark-results.txt:603711: parsing iteration count: invalid syntax
benchmark-results.txt:907009: parsing iteration count: invalid syntax
benchmark-results.txt:1163504: parsing iteration count: invalid syntax
benchmark-results.txt:1472115: 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 │       benchmark-results.txt        │
                            │       sec/op       │    sec/op     vs base              │
InterpreterCreation-4               9.253m ± 66%   8.101m ± 61%       ~ (p=0.818 n=6)
ComponentLoad-4                     3.600m ±  2%   3.673m ±  8%  +2.02% (p=0.004 n=6)
ComponentExecute-4                  1.964µ ±  1%   1.983µ ±  1%  +0.99% (p=0.002 n=6)
PoolContention/workers-1-4          1.109µ ±  1%   1.096µ ±  1%       ~ (p=0.084 n=6)
PoolContention/workers-2-4          1.081µ ±  1%   1.101µ ±  1%  +1.94% (p=0.002 n=6)
PoolContention/workers-4-4          1.081µ ±  3%   1.097µ ±  1%       ~ (p=0.087 n=6)
PoolContention/workers-8-4          1.087µ ±  3%   1.112µ ±  2%       ~ (p=0.063 n=6)
PoolContention/workers-16-4         1.088µ ±  0%   1.113µ ±  2%  +2.30% (p=0.002 n=6)
ComponentLifecycle-4                3.623m ±  1%   3.715m ±  1%  +2.53% (p=0.002 n=6)
SourceValidation-4                  2.309µ ±  1%   2.389µ ±  1%  +3.44% (p=0.002 n=6)
RegistryConcurrent-4                782.8n ±  4%   783.0n ±  1%       ~ (p=0.937 n=6)
LoaderLoadFromString-4              3.641m ±  0%   3.808m ±  2%  +4.58% (p=0.002 n=6)
geomean                             19.12µ         19.23µ        +0.57%

                            │ baseline-bench.txt │        benchmark-results.txt         │
                            │        B/op        │     B/op      vs base                │
InterpreterCreation-4               2.027Mi ± 0%   2.027Mi ± 0%       ~ (p=0.974 n=6)
ComponentLoad-4                     2.180Mi ± 0%   2.180Mi ± 0%       ~ (p=0.853 n=6)
ComponentExecute-4                  1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-1-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-2-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-4-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-8-4          1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-16-4         1.203Ki ± 0%   1.203Ki ± 0%       ~ (p=1.000 n=6) ¹
ComponentLifecycle-4                2.183Mi ± 0%   2.183Mi ± 0%       ~ (p=0.792 n=6)
SourceValidation-4                  1.984Ki ± 0%   1.984Ki ± 0%       ~ (p=1.000 n=6) ¹
RegistryConcurrent-4                1.133Ki ± 0%   1.133Ki ± 0%       ~ (p=1.000 n=6) ¹
LoaderLoadFromString-4              2.182Mi ± 0%   2.182Mi ± 0%       ~ (p=0.851 n=6)
geomean                             15.25Ki        15.25Ki       +0.00%
¹ all samples are equal

                            │ baseline-bench.txt │        benchmark-results.txt        │
                            │     allocs/op      │  allocs/op   vs base                │
InterpreterCreation-4                15.68k ± 0%   15.68k ± 0%       ~ (p=1.000 n=6)
ComponentLoad-4                      18.02k ± 0%   18.02k ± 0%       ~ (p=1.000 n=6)
ComponentExecute-4                    25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-1-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-2-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-4-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-8-4            25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
PoolContention/workers-16-4           25.00 ± 0%    25.00 ± 0%       ~ (p=1.000 n=6) ¹
ComponentLifecycle-4                 18.07k ± 0%   18.07k ± 0%       ~ (p=1.000 n=6) ¹
SourceValidation-4                    32.00 ± 0%    32.00 ± 0%       ~ (p=1.000 n=6) ¹
RegistryConcurrent-4                  2.000 ± 0%    2.000 ± 0%       ~ (p=1.000 n=6) ¹
LoaderLoadFromString-4               18.06k ± 0%   18.06k ± 0%       ~ (p=1.000 n=6) ¹
geomean                               183.3         183.3       +0.00%
¹ all samples are equal

pkg: github.com/GoCodeAlone/workflow/middleware
                                  │ baseline-bench.txt │       benchmark-results.txt       │
                                  │       sec/op       │   sec/op     vs base              │
CircuitBreakerDetection-4                  289.1n ± 5%   289.1n ± 5%       ~ (p=0.937 n=6)
CircuitBreakerExecution_Success-4          21.52n ± 0%   21.54n ± 1%       ~ (p=0.379 n=6)
CircuitBreakerExecution_Failure-4          66.77n ± 0%   66.08n ± 0%  -1.04% (p=0.002 n=6)
geomean                                    74.62n        74.38n       -0.31%

                                  │ baseline-bench.txt │       benchmark-results.txt        │
                                  │        B/op        │    B/op     vs base                │
CircuitBreakerDetection-4                 144.0 ± 0%     144.0 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Success-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Failure-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                              ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                  │ baseline-bench.txt │       benchmark-results.txt        │
                                  │     allocs/op      │ allocs/op   vs base                │
CircuitBreakerDetection-4                 1.000 ± 0%     1.000 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Success-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
CircuitBreakerExecution_Failure-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                              ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/module
                                 │ baseline-bench.txt │       benchmark-results.txt        │
                                 │       sec/op       │    sec/op     vs base              │
IaCStateBackend_InProcess-4              307.7n ± 23%   307.9n ± 27%       ~ (p=0.853 n=6)
IaCStateBackend_GRPC-4                   9.463m ±  2%   9.544m ±  7%       ~ (p=0.310 n=6)
JQTransform_Simple-4                     661.3n ± 49%   671.4n ± 38%       ~ (p=0.485 n=6)
JQTransform_ObjectConstruction-4         1.599µ ±  1%   1.533µ ±  2%  -4.16% (p=0.002 n=6)
JQTransform_ArraySelect-4                3.575µ ±  0%   3.521µ ±  2%  -1.50% (p=0.026 n=6)
JQTransform_Complex-4                    39.74µ ±  1%   39.48µ ±  2%       ~ (p=0.310 n=6)
JQTransform_Throughput-4                 1.961µ ±  0%   1.884µ ±  1%  -3.90% (p=0.002 n=6)
SSEPublishDelivery-4                     72.03n ±  1%   71.61n ±  1%       ~ (p=0.093 n=6)
geomean                                  3.971µ         3.928µ        -1.06%

                                 │ baseline-bench.txt │         benchmark-results.txt         │
                                 │        B/op        │     B/op       vs base                │
IaCStateBackend_InProcess-4              416.0 ± 0%       416.0 ±  0%       ~ (p=1.000 n=6) ¹
IaCStateBackend_GRPC-4                 5.954Mi ± 4%     5.849Mi ± 13%       ~ (p=0.699 n=6)
JQTransform_Simple-4                   1.273Ki ± 0%     1.273Ki ±  0%       ~ (p=1.000 n=6) ¹
JQTransform_ObjectConstruction-4       1.773Ki ± 0%     1.773Ki ±  0%       ~ (p=1.000 n=6) ¹
JQTransform_ArraySelect-4              2.625Ki ± 0%     2.625Ki ±  0%       ~ (p=1.000 n=6) ¹
JQTransform_Complex-4                  16.22Ki ± 0%     16.22Ki ±  0%       ~ (p=1.000 n=6) ¹
JQTransform_Throughput-4               1.984Ki ± 0%     1.984Ki ±  0%       ~ (p=1.000 n=6) ¹
SSEPublishDelivery-4                     0.000 ± 0%       0.000 ±  0%       ~ (p=1.000 n=6) ¹
geomean                                             ²                  -0.22%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                 │ baseline-bench.txt │        benchmark-results.txt        │
                                 │     allocs/op      │  allocs/op   vs base                │
IaCStateBackend_InProcess-4              2.000 ± 0%      2.000 ± 0%       ~ (p=1.000 n=6) ¹
IaCStateBackend_GRPC-4                  6.835k ± 0%     6.843k ± 0%       ~ (p=0.372 n=6)
JQTransform_Simple-4                     10.00 ± 0%      10.00 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_ObjectConstruction-4         15.00 ± 0%      15.00 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_ArraySelect-4                30.00 ± 0%      30.00 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_Complex-4                    324.0 ± 0%      324.0 ± 0%       ~ (p=1.000 n=6) ¹
JQTransform_Throughput-4                 17.00 ± 0%      17.00 ± 0%       ~ (p=1.000 n=6) ¹
SSEPublishDelivery-4                     0.000 ± 0%      0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                             ²                +0.01%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/schema
                                    │ baseline-bench.txt │       benchmark-results.txt        │
                                    │       sec/op       │    sec/op     vs base              │
SchemaValidation_Simple-4                    1.106µ ± 6%   1.096µ ±  5%       ~ (p=0.561 n=6)
SchemaValidation_AllFields-4                 1.649µ ± 2%   1.652µ ± 12%       ~ (p=0.937 n=6)
SchemaValidation_FormatValidation-4          1.593µ ± 2%   1.589µ ±  2%       ~ (p=0.699 n=6)
SchemaValidation_ManySchemas-4               1.840µ ± 3%   1.826µ ±  3%       ~ (p=0.180 n=6)
geomean                                      1.520µ        1.514µ        -0.44%

                                    │ baseline-bench.txt │       benchmark-results.txt        │
                                    │        B/op        │    B/op     vs base                │
SchemaValidation_Simple-4                   0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_AllFields-4                0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_FormatValidation-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_ManySchemas-4              0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                                ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                    │ baseline-bench.txt │       benchmark-results.txt        │
                                    │     allocs/op      │ allocs/op   vs base                │
SchemaValidation_Simple-4                   0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_AllFields-4                0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_FormatValidation-4         0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
SchemaValidation_ManySchemas-4              0.000 ± 0%     0.000 ± 0%       ~ (p=1.000 n=6) ¹
geomean                                                ²               +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

pkg: github.com/GoCodeAlone/workflow/store
                                   │ baseline-bench.txt │        benchmark-results.txt        │
                                   │       sec/op       │    sec/op     vs base               │
EventStoreAppend_InMemory-4                1.167µ ± 39%   1.304µ ± 17%        ~ (p=0.240 n=6)
EventStoreAppend_SQLite-4                  1.256m ±  4%   1.417m ±  7%  +12.78% (p=0.002 n=6)
GetTimeline_InMemory/events-10-4           13.92µ ±  3%   13.69µ ±  2%        ~ (p=0.240 n=6)
GetTimeline_InMemory/events-50-4           77.86µ ± 18%   77.37µ ± 20%        ~ (p=0.589 n=6)
GetTimeline_InMemory/events-100-4          125.8µ ±  1%   125.1µ ±  0%        ~ (p=0.132 n=6)
GetTimeline_InMemory/events-500-4          652.8µ ±  1%   641.4µ ±  1%   -1.74% (p=0.002 n=6)
GetTimeline_InMemory/events-1000-4         1.360m ±  1%   1.305m ±  2%   -4.01% (p=0.002 n=6)
GetTimeline_SQLite/events-10-4             110.0µ ±  1%   109.2µ ±  1%   -0.75% (p=0.041 n=6)
GetTimeline_SQLite/events-50-4             258.4µ ±  1%   256.5µ ±  1%        ~ (p=0.132 n=6)
GetTimeline_SQLite/events-100-4            438.3µ ±  1%   432.1µ ±  1%   -1.40% (p=0.002 n=6)
GetTimeline_SQLite/events-500-4            1.891m ±  1%   1.815m ±  1%   -4.02% (p=0.002 n=6)
GetTimeline_SQLite/events-1000-4           3.659m ±  1%   3.544m ±  3%   -3.15% (p=0.009 n=6)
geomean                                    223.2µ         224.0µ         +0.36%

                                   │ baseline-bench.txt │         benchmark-results.txt         │
                                   │        B/op        │     B/op       vs base                │
EventStoreAppend_InMemory-4                  798.5 ± 7%     752.0 ± 12%       ~ (p=0.582 n=6)
EventStoreAppend_SQLite-4                  1.985Ki ± 1%   1.988Ki ±  2%       ~ (p=0.729 n=6)
GetTimeline_InMemory/events-10-4           7.953Ki ± 0%   7.953Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-50-4           46.62Ki ± 0%   46.62Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-100-4          94.48Ki ± 0%   94.48Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-500-4          472.8Ki ± 0%   472.8Ki ±  0%       ~ (p=1.000 n=6)
GetTimeline_InMemory/events-1000-4         944.3Ki ± 0%   944.3Ki ±  0%       ~ (p=0.106 n=6)
GetTimeline_SQLite/events-10-4             16.74Ki ± 0%   16.74Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-50-4             87.14Ki ± 0%   87.14Ki ±  0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-100-4            175.4Ki ± 0%   175.4Ki ±  0%       ~ (p=1.000 n=6)
GetTimeline_SQLite/events-500-4            846.1Ki ± 0%   846.1Ki ±  0%  -0.00% (p=0.022 n=6)
GetTimeline_SQLite/events-1000-4           1.639Mi ± 0%   1.639Mi ±  0%  +0.00% (p=0.015 n=6)
geomean                                    67.41Ki        67.08Ki        -0.49%
¹ all samples are equal

                                   │ baseline-bench.txt │        benchmark-results.txt        │
                                   │     allocs/op      │  allocs/op   vs base                │
EventStoreAppend_InMemory-4                  7.000 ± 0%    7.000 ± 0%       ~ (p=1.000 n=6) ¹
EventStoreAppend_SQLite-4                    53.00 ± 0%    53.00 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-10-4             125.0 ± 0%    125.0 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-50-4             653.0 ± 0%    653.0 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-100-4           1.306k ± 0%   1.306k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-500-4           6.514k ± 0%   6.514k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_InMemory/events-1000-4          13.02k ± 0%   13.02k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-10-4               382.0 ± 0%    382.0 ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-50-4              1.852k ± 0%   1.852k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-100-4             3.681k ± 0%   3.681k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-500-4             18.54k ± 0%   18.54k ± 0%       ~ (p=1.000 n=6) ¹
GetTimeline_SQLite/events-1000-4            37.29k ± 0%   37.29k ± 0%       ~ (p=1.000 n=6) ¹
geomean                                     1.162k        1.162k       +0.00%
¹ all samples are equal

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

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