Skip to content

docs(plan): DNS providers + DynDNS + scoped secret-set SPEC#735

Merged
intel352 merged 2 commits into
mainfrom
plan/dns-providers-1779275398
May 20, 2026
Merged

docs(plan): DNS providers + DynDNS + scoped secret-set SPEC#735
intel352 merged 2 commits into
mainfrom
plan/dns-providers-1779275398

Conversation

@intel352
Copy link
Copy Markdown
Contributor

Caveman SPEC for Namecheap + Hover + DynDNS + scoped GH secret-set + plugin-declared required-secrets. 20 tasks. Implementation ships as multi-PR cascade.

Caveman SPEC covering:

- Namecheap plugin (go-namecheap-sdk-backed) — T5..T8
- Hover plugin (scraper+TOTP, no SDK) — T9..T13
- Dynamic DNS module (multi-source IP detect, exp backoff) — T14..T16
- wfctl secrets set --scope ∈ {repo,env,org} (default repo) — T1..T2
- wfctl secrets setup --plugin: prompt for plugin-declared
  required_secrets[] + write to chosen scope — T3..T4
- Registry + scenarios + docs + integration tests — T17..T20

20 tasks, 16 constraints, 18 invariants. Status §B empty.

Ships as multiple PRs across workflow, workflow-plugin-namecheap
(new repo), workflow-plugin-hover (new repo), workflow-registry.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 20, 2026 11:11
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 new Caveman SPEC plan document describing a staged implementation for DNS provider plugins (Namecheap + Hover), a DynDNS module, and GitHub Actions secret scoping + plugin-declared required secrets as part of a broader multi-PR delivery.

Changes:

  • Introduces a new plan/SPEC for DNS provider plugins and DynDNS behavior, including login/auth flows and invariants.
  • Specifies proposed wfctl secrets CLI extensions for scoped secret writes (repo/env/org) and plugin-driven secret prompting.
  • Outlines a 20-task execution plan spanning core workflow changes, new external plugins, scenarios, and docs.

@@ -0,0 +1,111 @@
# DNS providers + DynDNS + scoped secret-set

Caveman SPEC. See `FORMAT.md` for grammar.
Comment on lines +50 to +54
env: HOVER_USERNAME ! set if iac.dns provider=hover
env: HOVER_PASSWORD ! set (sensitive)
env: HOVER_TOTP_SECRET ! set (sensitive; base32 seed)
manifest: plugin.json required_secrets[] = [{name, sensitive, description, prompt}]
```
Comment on lines +44 to +46
cmd: `wfctl secrets set <name> --scope <repo|env|org> [--env <env>] [--visibility <all|selected|private>]`
cmd: `wfctl secrets setup --plugin <plugin-name> [--scope <repo|env|org>]`
cmd: `wfctl secrets setup --provider <namecheap|hover|...>` (alias above)
Comment on lines +83 to +84
T1|.|workflow: extend secrets.GitHubSecretsProvider w/ scope (repo|env|org) constructor + Put switch on scope|C5,C6,C7,V4,V5,V6,V16,V17
T2|.|wfctl secrets set --scope flag + delegation to scoped provider; default repo|C5,V18
C10: dyndns ! polling cadence default = 5m; configurable
C11: dyndns IP-detect sources: icanhazip | ifconfig.me | opendns ; multiple sources for redundancy
C12: TOTP code generation in-process; ⊥ external `oathtool` dep
C13: Namecheap auth = (api_user, api_key, client_ip allowlist); wfctl secrets setup writes api_user + api_key
Implements T1+T2 of docs/plans/2026-05-20-dns-providers.md.

secrets/github_provider.go:
- New GitHubSecretScope enum (repo | env | org).
- New GitHubOrgVisibility enum (all | selected | private).
- NewGitHubOrgSecretsProvider mints an org-scoped provider with
  required-field validation (selected requires repoIDs; visibility
  set must be canonical).
- secretsURL() switches on scope (/orgs/{org}, /repos/.../environments,
  or repo default).
- Set() includes visibility + selected_repository_ids in PUT payload
  when scope=org. Repo + env scopes keep existing shape.
- SetEnvironment("foo") flips scope to env; SetEnvironment("")
  reverts to repo.
- Public Scope() reporter.

cmd/wfctl/secrets_detect.go:
- secrets set --scope repo|env|org
- env: --env <name> required; loads repo from app.yaml.
- org: --org <slug> required; --visibility flag (default all);
  bypasses app.yaml.
- --token-env for non-default GH PAT env var.

5 new tests: OrgScopeURL, OrgScope_Selected_RequiresRepoIDs,
OrgScope_PrivateVisibility, RepoScope_NoVisibility, ScopeReporter.
Existing wfctl + secrets suites green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 20, 2026

⏱ 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:307961: parsing iteration count: invalid syntax
baseline-bench.txt:630288: parsing iteration count: invalid syntax
baseline-bench.txt:906328: parsing iteration count: invalid syntax
baseline-bench.txt:1177574: parsing iteration count: invalid syntax
baseline-bench.txt:1472757: parsing iteration count: invalid syntax
benchmark-results.txt:274: parsing iteration count: invalid syntax
benchmark-results.txt:379877: parsing iteration count: invalid syntax
benchmark-results.txt:715113: parsing iteration count: invalid syntax
benchmark-results.txt:1102600: parsing iteration count: invalid syntax
benchmark-results.txt:1688489: parsing iteration count: invalid syntax
benchmark-results.txt:1986762: 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               6.522m ± 57%
ComponentLoad-4                     3.532m ±  3%
ComponentExecute-4                  1.836µ ±  2%
PoolContention/workers-1-4          1.037µ ±  4%
PoolContention/workers-2-4          1.044µ ±  3%
PoolContention/workers-4-4          1.024µ ±  1%
PoolContention/workers-8-4          1.024µ ±  2%
PoolContention/workers-16-4         1.019µ ±  1%
ComponentLifecycle-4                3.617m ±  2%
SourceValidation-4                  2.106µ ±  1%
RegistryConcurrent-4                767.7n ±  6%
LoaderLoadFromString-4              3.633m ±  2%
geomean                             17.84µ

                            │ 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                  6.957m ± 57%
ComponentLoad-4                        3.426m ±  4%
ComponentExecute-4                     1.857µ ±  1%
PoolContention/workers-1-4             1.184µ ±  1%
PoolContention/workers-2-4             1.174µ ±  2%
PoolContention/workers-4-4             1.167µ ±  0%
PoolContention/workers-8-4             1.174µ ±  1%
PoolContention/workers-16-4            1.177µ ±  1%
ComponentLifecycle-4                   3.429m ±  0%
SourceValidation-4                     2.206µ ±  0%
RegistryConcurrent-4                   880.6n ±  8%
LoaderLoadFromString-4                 3.483m ±  1%
geomean                                19.06µ

                            │ 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                  300.4n ± 5%
CircuitBreakerExecution_Success-4          22.67n ± 0%
CircuitBreakerExecution_Failure-4          70.95n ± 0%
geomean                                    78.46n

                                  │ 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                     446.8n ± 7%
CircuitBreakerExecution_Success-4             59.76n ± 0%
CircuitBreakerExecution_Failure-4             64.88n ± 0%
geomean                                       120.1n

                                  │ 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              295.6n ± 24%
IaCStateBackend_GRPC-4                   10.25m ±  1%
JQTransform_Simple-4                     651.9n ± 31%
JQTransform_ObjectConstruction-4         1.427µ ±  1%
JQTransform_ArraySelect-4                3.505µ ±  1%
JQTransform_Complex-4                    42.40µ ±  1%
JQTransform_Throughput-4                 1.784µ ±  2%
SSEPublishDelivery-4                     64.28n ±  1%
geomean                                  3.847µ

                                 │ baseline-bench.txt │
                                 │        B/op        │
IaCStateBackend_InProcess-4             416.0 ±  0%
IaCStateBackend_GRPC-4                5.750Mi ± 10%
JQTransform_Simple-4                  1.273Ki ±  0%
JQTransform_ObjectConstruction-4      1.773Ki ±  0%
JQTransform_ArraySelect-4             2.625Ki ±  0%
JQTransform_Complex-4                 16.22Ki ±  0%
JQTransform_Throughput-4              1.984Ki ±  0%
SSEPublishDelivery-4                    0.000 ±  0%
geomean                                             ¹
¹ summaries must be >0 to compute geomean

                                 │ baseline-bench.txt │
                                 │     allocs/op      │
IaCStateBackend_InProcess-4              2.000 ± 0%
IaCStateBackend_GRPC-4                  6.858k ± 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                 339.8n ± 31%
IaCStateBackend_GRPC-4                      9.657m ±  1%
JQTransform_Simple-4                        703.0n ± 32%
JQTransform_ObjectConstruction-4            1.520µ ±  0%
JQTransform_ArraySelect-4                   3.265µ ±  1%
JQTransform_Complex-4                       36.26µ ±  1%
JQTransform_Throughput-4                    1.861µ ±  1%
SSEPublishDelivery-4                        76.28n ± 11%
geomean                                     3.947µ

                                 │ benchmark-results.txt │
                                 │         B/op          │
IaCStateBackend_InProcess-4                416.0 ±  0%
IaCStateBackend_GRPC-4                   5.628Mi ± 13%
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.872k ± 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.077µ ± 14%
SchemaValidation_AllFields-4                1.641µ ±  4%
SchemaValidation_FormatValidation-4         1.575µ ±  1%
SchemaValidation_ManySchemas-4              1.601µ ±  2%
geomean                                     1.453µ

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

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

cpu: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                    │ benchmark-results.txt │
                                    │        sec/op         │
SchemaValidation_Simple-4                       1.026µ ± 3%
SchemaValidation_AllFields-4                    1.540µ ± 6%
SchemaValidation_FormatValidation-4             1.482µ ± 1%
SchemaValidation_ManySchemas-4                  1.510µ ± 3%
geomean                                         1.371µ

                                    │ 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                993.5n ±  8%
EventStoreAppend_SQLite-4                  1.057m ±  5%
GetTimeline_InMemory/events-10-4           12.88µ ±  3%
GetTimeline_InMemory/events-50-4           58.86µ ± 23%
GetTimeline_InMemory/events-100-4          118.7µ ±  1%
GetTimeline_InMemory/events-500-4          609.8µ ±  2%
GetTimeline_InMemory/events-1000-4         1.232m ±  3%
GetTimeline_SQLite/events-10-4             97.45µ ±  1%
GetTimeline_SQLite/events-50-4             244.5µ ±  1%
GetTimeline_SQLite/events-100-4            408.4µ ±  1%
GetTimeline_SQLite/events-500-4            1.751m ±  1%
GetTimeline_SQLite/events-1000-4           3.455m ±  1%
geomean                                    200.3µ

                                   │ baseline-bench.txt │
                                   │        B/op        │
EventStoreAppend_InMemory-4                  771.5 ± 9%
EventStoreAppend_SQLite-4                  1.982Ki ± 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.21Ki

                                   │ 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.104µ ± 28%
EventStoreAppend_SQLite-4                     908.8µ ±  3%
GetTimeline_InMemory/events-10-4              13.28µ ±  3%
GetTimeline_InMemory/events-50-4              72.58µ ±  1%
GetTimeline_InMemory/events-100-4             146.1µ ±  4%
GetTimeline_InMemory/events-500-4             592.4µ ± 28%
GetTimeline_InMemory/events-1000-4            1.199m ±  1%
GetTimeline_SQLite/events-10-4                86.24µ ±  1%
GetTimeline_SQLite/events-50-4                231.3µ ±  4%
GetTimeline_SQLite/events-100-4               418.9µ ±  1%
GetTimeline_SQLite/events-500-4               1.872m ±  1%
GetTimeline_SQLite/events-1000-4              3.702m ±  1%
geomean                                       205.9µ

                                   │ benchmark-results.txt │
                                   │         B/op          │
EventStoreAppend_InMemory-4                     785.5 ± 7%
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.31Ki

                                   │ 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 20, 2026

Codecov Report

❌ Patch coverage is 34.00000% with 66 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
cmd/wfctl/secrets_detect.go 8.19% 56 Missing ⚠️
secrets/github_provider.go 74.35% 6 Missing and 4 partials ⚠️

📢 Thoughts on this report? Let us know!

@intel352 intel352 merged commit cf2c4b9 into main May 20, 2026
22 checks passed
@intel352 intel352 deleted the plan/dns-providers-1779275398 branch May 20, 2026 11:28
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