Skip to content

refactor: Phase C core deletion — drop GCP SDKs + arm asymmetric CI gate (cloud-SDK extraction COMPLETE)#688

Merged
intel352 merged 8 commits into
mainfrom
feat/phase-c-core-deletion
May 16, 2026
Merged

refactor: Phase C core deletion — drop GCP SDKs + arm asymmetric CI gate (cloud-SDK extraction COMPLETE)#688
intel352 merged 8 commits into
mainfrom
feat/phase-c-core-deletion

Conversation

@intel352
Copy link
Copy Markdown
Contributor

Summary

Plan-2 Phase C core deletion: removes in-core GCP duplicates of code now plugin-served by workflow-plugin-gcp v1.1.0; arms the permanent asymmetric CI gate that prevents future cloud.google.com/go/* deps (beyond OAuth2 ADC's compute/metadata) from leaking back into workflow core. Closes the cloud-SDK extraction project.

3 commits, one per task:

  • Task 17 (cd93ad40): delete module/iac_state_gcs.go + module/storage_gcs.go + module/platform_kubernetes_gke.go + strip case "gcs": from iac_module.go + drop storage.gcs from plugins/storage/plugin.go + DOCUMENTATION.md update. gcs / GKE / storage.gcs now plugin-served via workflow-plugin-gcp v1.1.0 (gke per ADR 0037 — ResourceDriver fold under infra.k8s_cluster).
  • Task 18 (4a80f71b): drop cloud.google.com/go/storage + google.golang.org/api + OpenTelemetry GCP from go.mod (post-tidy); replace stylistic google.Endpoint in module/auth_oauth2.go with literal oauth2.Endpoint{} (drops the unnecessary OAuth2 IdP login transitive); update cmd/wfctl/infra_state_store.go case "gcs": to actionable plugin-required error (matches PR 4's spaces/s3 pattern); arm .phase-c-complete marker; extend scripts/audit-cloud-symbols.sh --check with 2 new invariants (zero unexpected gcp deps + zero azure deps in module/) using comment-immune real_import helper; extend cloud-sdk-audit job in .github/workflows/ci.yml with belt-and-suspenders go list -deps gate. Asymmetric design (aws stays in for provider/aws/ etc., gcp out, compute/metadata allowlisted as the OAuth2 ADC helper) structurally enforced.
  • Task 19 (470de848): Phase C migration doc + final cross-phase verification at docs/migrations/2026-05-15-plugin-modules-on-iac.md — gcs/storage.gcs/gke operator-facing migration steps + OAuth2 ADC allowlist disclosure paragraph + Phase A/B/C × PRs × ADRs recap table + final invariant re-check evidence. DOCUMENTATION.md iac.state row reflects post-PR-5 reality.

Final invariant verification (project-level)

$ bash scripts/audit-cloud-symbols.sh --check
audit-cloud-symbols: OK

$ GOWORK=off go list -deps ./... | grep '^cloud\.google\.com/go'
cloud.google.com/go/compute/metadata    # only the allowlisted OAuth2 ADC helper

$ GOWORK=off go list -deps ./... | grep -E '^cloud\.google\.com/go|^google\.golang\.org/api|^github\.com/Azure/azure-sdk-for-go'
cloud.google.com/go/compute/metadata    # only the allowlisted entry; zero unexpected

Breaking change

Workflow ≥ v0.53.0. Operators using iac.state backend: gcs, storage.gcs, or platform.kubernetes(type:gke) MUST install workflow-plugin-gcp v1.1.0. See migration doc for full instructions.

Rollback

Revert PR 5 → in-core gcs/storage.gcs/platform_kubernetes_gke restore + GCP SDKs return + asymmetric CI gate disarms. gcs clean-break + workflow-plugin-gcp v1.1.0 release roll back as MATCHED PAIR.

Cloud-SDK extraction project — final state

Future PRs accidentally pulling cloud.google.com/go/* (beyond compute/metadata) or google.golang.org/api or github.com/Azure/azure-sdk-for-go will fail the cloud-sdk-audit CI job automatically.

Test plan

  • All 4 audit invariants verified passing in enforcing mode (post-.phase-c-complete)
  • GOWORK=off go build ./... && GOWORK=off go test ./... PASS on every commit
  • OAuth2 SSO module test PASS (auth_oauth2.go literal-endpoint replacement validated)
  • Binary size delta: 208MB → 179MB (29MB savings — concrete evidence the dep drop landed)
  • Asymmetric CI gate independently verified: result is EXACTLY cloud.google.com/go/compute/metadata

🤖 Generated with Claude Code

intel352 added 3 commits May 15, 2026 18:35
…netes_gke — now plugin-served via workflow-plugin-gcp v1.1.0
…te (allowlist OAuth2 ADC compute/metadata) + wfctl gcs actionable error + replace stylistic google.Endpoint in auth_oauth2.go
Copilot AI review requested due to automatic review settings May 15, 2026 23:12
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

Plan-2 Phase C core deletion: removes in-core GCP/GKE/GCS implementations now served by workflow-plugin-gcp, drops GCP SDK dependencies from the core module graph, and adds a permanent CI/audit gate to prevent reintroducing forbidden cloud SDK deps (except the allowlisted cloud.google.com/go/compute/metadata ADC helper).

Changes:

  • Deleted in-core GCS state/storage modules and the GKE Kubernetes backend; updated core/plugin registrations and documentation to reflect plugin ownership.
  • Removed cloud.google.com/go/storage, google.golang.org/api, and related GCP/OpenTelemetry deps from go.mod/go.sum; refactored OAuth2 Google provider to avoid importing golang.org/x/oauth2/google.
  • Added Phase C enforcement to scripts/audit-cloud-symbols.sh and mirrored the dependency-graph gate in CI.

Reviewed changes

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

Show a summary per file
File Description
scripts/audit-cloud-symbols.sh Adds Phase C invariants: module/ import ban and asymmetric build-graph allowlist gate.
plugins/storage/plugin.go Removes storage.gcs module registration and schema from core storage plugin.
plugins/storage/plugin_test.go Updates storage plugin tests to reflect removed storage.gcs.
module/storage_gcs.go Deletes in-core GCS storage module implementation.
module/storage_gcs_test.go Deletes in-core GCS storage module tests.
module/platform_kubernetes_gke.go Deletes in-core GKE backend (Container API) implementation.
module/iac_state_gcs.go Deletes in-core GCS IaC state store implementation.
module/iac_state_gcs_test.go Deletes in-core GCS IaC state store tests.
module/iac_module.go Removes gcs backend from in-core iac.state backends; updates error messaging.
module/auth_oauth2.go Removes oauth2/google import by hardcoding Google OAuth2 endpoints to reduce transitive deps.
go.mod Drops GCP SDK and related transitive dependencies.
go.sum Removes sums for deleted GCP/OpenTelemetry/API deps (post-tidy).
DOCUMENTATION.md Updates module tables to remove storage.gcs and clarify plugin-served state backends.
docs/migrations/2026-05-15-plugin-modules-on-iac.md Extends migration guide to cover Phase C (GCS/GKE) cutover and allowlist rationale.
cmd/wfctl/infra_state_store.go Changes gcs backend handling to an actionable “plugin required” error (matching spaces/s3 pattern).
.phase-c-complete Arms Phase C enforcement mode for the audit script.
.github/workflows/ci.yml Extends cloud-sdk-audit job with setup/go-list based asymmetric dependency gate.
Comments suppressed due to low confidence (1)

plugins/storage/plugin.go:44

  • Capabilities() still describes storage as including “S3, GCS” even though this plugin’s manifest/module registrations no longer include any S3/GCS module types (those are now plugin-served). Please update the capability description to match the current in-core surface to prevent misleading capability docs/UI output.
				Author:      "GoCodeAlone",
				Description: "Storage, database, persistence, and cache modules with DB pipeline steps",
				Tier:        plugin.TierCore,
				ModuleTypes: []string{
					"storage.local",
					"storage.sqlite",
					"storage.artifact",
					"database.workflow",
					"database.partitioned",
					"persistence.store",
					"cache.redis",
				},

Comment thread scripts/audit-cloud-symbols.sh Outdated
Comment on lines +125 to +154
DEPS=$(GOWORK=off go list -deps ./... 2>/dev/null || true)
AZURE_UNEXPECTED=$(echo "$DEPS" | grep -F 'github.com/Azure/azure-sdk-for-go' || true)
API_UNEXPECTED=$(echo "$DEPS" | grep '^google\.golang\.org/api' || true)
GCP_UNEXPECTED=$(echo "$DEPS" \
| grep '^cloud\.google\.com/go' \
| grep -v '^cloud\.google\.com/go/compute/metadata$' \
|| true)
if [[ -n "$AZURE_UNEXPECTED" ]]; then
echo " FAIL: azure-sdk-for-go transitive deps in core build graph:"
printf ' %s\n' $AZURE_UNEXPECTED
FAIL=1
fi
if [[ -n "$API_UNEXPECTED" ]]; then
echo " FAIL: google.golang.org/api transitive deps in core build graph:"
printf ' %s\n' $API_UNEXPECTED
FAIL=1
fi
if [[ -n "$GCP_UNEXPECTED" ]]; then
echo " FAIL: unexpected cloud.google.com/go transitive deps in core build graph:"
printf ' %s\n' $GCP_UNEXPECTED
echo
echo " Only cloud.google.com/go/compute/metadata is allowlisted (OAuth2 ADC helper"
echo " pulled by provider/gcp's service-account auth). If you need a new GCP SDK"
echo " package, factor it into a plugin instead — workflow core is gcp-SDK-free"
echo " per Phase C (plan 2026-05-15-plugin-modules-on-iac.md Task 18)."
FAIL=1
fi
if [[ -z "$AZURE_UNEXPECTED$API_UNEXPECTED$GCP_UNEXPECTED" ]]; then
echo " build graph: clean (compute/metadata allowlisted)"
fi
Comment thread module/auth_oauth2.go Outdated
// transitively pulls `cloud.google.com/go/compute/metadata` (an ADC helper
// for GCE/GKE workload identity) — and Phase C's permanent asymmetric CI
// gate (decisions/0034 + plan 2026-05-15-plugin-modules-on-iac.md Task 18)
// asserts zero `cloud.google.com/go/*` packages in core's build graph.
Comment thread .github/workflows/ci.yml Outdated
env:
GOWORK: "off"
run: |
UNEXPECTED=$(go list -deps ./... \
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 15, 2026

⏱ 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:332023: parsing iteration count: invalid syntax
baseline-bench.txt:665153: parsing iteration count: invalid syntax
baseline-bench.txt:937665: parsing iteration count: invalid syntax
baseline-bench.txt:1277137: parsing iteration count: invalid syntax
baseline-bench.txt:1571093: parsing iteration count: invalid syntax
benchmark-results.txt:276: parsing iteration count: invalid syntax
benchmark-results.txt:327943: parsing iteration count: invalid syntax
benchmark-results.txt:635795: parsing iteration count: invalid syntax
benchmark-results.txt:955167: parsing iteration count: invalid syntax
benchmark-results.txt:1268155: parsing iteration count: invalid syntax
benchmark-results.txt:1576769: 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               7.240m ± 58%   9.166m ± 65%       ~ (p=0.589 n=6)
ComponentLoad-4                     3.527m ±  9%   3.696m ±  2%       ~ (p=0.065 n=6)
ComponentExecute-4                  1.900µ ±  0%   1.967µ ±  1%  +3.53% (p=0.002 n=6)
PoolContention/workers-1-4          1.065µ ±  1%   1.103µ ±  2%  +3.62% (p=0.002 n=6)
PoolContention/workers-2-4          1.062µ ±  1%   1.107µ ±  1%  +4.24% (p=0.002 n=6)
PoolContention/workers-4-4          1.066µ ±  3%   1.119µ ±  1%  +4.97% (p=0.002 n=6)
PoolContention/workers-8-4          1.073µ ±  3%   1.108µ ±  1%  +3.31% (p=0.028 n=6)
PoolContention/workers-16-4         1.072µ ±  0%   1.110µ ±  6%  +3.59% (p=0.002 n=6)
ComponentLifecycle-4                3.533m ±  1%   3.735m ±  2%  +5.71% (p=0.002 n=6)
SourceValidation-4                  2.243µ ±  0%   2.343µ ±  1%  +4.44% (p=0.002 n=6)
RegistryConcurrent-4                761.2n ±  3%   822.2n ±  5%  +8.02% (p=0.004 n=6)
LoaderLoadFromString-4              3.564m ±  1%   3.725m ±  1%  +4.51% (p=0.002 n=6)
geomean                             18.34µ         19.49µ        +6.28%

                            │ baseline-bench.txt │        benchmark-results.txt         │
                            │        B/op        │     B/op      vs base                │
InterpreterCreation-4               2.027Mi ± 0%   2.027Mi ± 0%       ~ (p=0.734 n=6)
ComponentLoad-4                     2.180Mi ± 0%   2.180Mi ± 0%       ~ (p=0.816 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.290 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.286 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                 284.9n ± 11%   287.9n ± 1%       ~ (p=0.065 n=6)
CircuitBreakerExecution_Success-4         21.41n ±  0%   21.46n ± 1%       ~ (p=0.258 n=6)
CircuitBreakerExecution_Failure-4         66.23n ±  0%   66.25n ± 0%       ~ (p=0.513 n=6)
geomean                                   73.92n         74.25n       +0.45%

                                  │ 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              305.4n ±  1%   324.5n ± 27%  +6.24% (p=0.002 n=6)
IaCStateBackend_GRPC-4                   9.122m ± 15%   9.691m ±  4%       ~ (p=0.394 n=6)
JQTransform_Simple-4                     683.4n ± 28%   689.6n ± 34%       ~ (p=0.485 n=6)
JQTransform_ObjectConstruction-4         1.458µ ±  1%   1.533µ ±  2%  +5.11% (p=0.002 n=6)
JQTransform_ArraySelect-4                3.302µ ±  0%   3.427µ ±  0%  +3.79% (p=0.002 n=6)
JQTransform_Complex-4                    38.18µ ±  1%   38.89µ ±  1%  +1.87% (p=0.002 n=6)
JQTransform_Throughput-4                 1.779µ ±  1%   1.849µ ±  1%  +3.91% (p=0.002 n=6)
SSEPublishDelivery-4                     68.62n ±  1%   65.13n ±  0%  -5.09% (p=0.002 n=6)
geomean                                  3.792µ         3.898µ        +2.81%

                                 │ 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.849Mi ± 11%     5.803Mi ± 17%       ~ (p=0.589 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.10%               ²
¹ 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.835k ± 0%       ~ (p=0.959 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.00%               ²
¹ 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.105µ ± 20%   1.100µ ± 20%       ~ (p=1.000 n=6)
SchemaValidation_AllFields-4                1.651µ ±  3%   1.663µ ±  7%       ~ (p=0.699 n=6)
SchemaValidation_FormatValidation-4         1.599µ ±  2%   1.574µ ±  1%  -1.56% (p=0.041 n=6)
SchemaValidation_ManySchemas-4              1.836µ ±  2%   1.846µ ±  3%       ~ (p=0.615 n=6)
geomean                                     1.521µ         1.518µ        -0.17%

                                    │ 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.208µ ± 20%   1.271µ ± 12%        ~ (p=0.485 n=6)
EventStoreAppend_SQLite-4                  1.931m ± 16%   1.499m ±  4%  -22.36% (p=0.002 n=6)
GetTimeline_InMemory/events-10-4           13.35µ ±  3%   13.44µ ±  2%        ~ (p=0.394 n=6)
GetTimeline_InMemory/events-50-4           74.83µ ±  4%   76.86µ ±  1%        ~ (p=0.065 n=6)
GetTimeline_InMemory/events-100-4          121.1µ ±  0%   126.1µ ± 24%   +4.11% (p=0.002 n=6)
GetTimeline_InMemory/events-500-4          623.7µ ±  1%   635.0µ ±  1%   +1.81% (p=0.002 n=6)
GetTimeline_InMemory/events-1000-4         1.273m ±  1%   1.295m ±  1%   +1.73% (p=0.002 n=6)
GetTimeline_SQLite/events-10-4             103.4µ ±  1%   107.2µ ±  1%   +3.68% (p=0.002 n=6)
GetTimeline_SQLite/events-50-4             241.9µ ±  1%   253.4µ ±  1%   +4.74% (p=0.002 n=6)
GetTimeline_SQLite/events-100-4            411.6µ ±  0%   428.1µ ±  2%   +3.99% (p=0.002 n=6)
GetTimeline_SQLite/events-500-4            1.761m ±  1%   1.847m ±  2%   +4.87% (p=0.002 n=6)
GetTimeline_SQLite/events-1000-4           3.418m ±  0%   3.604m ±  1%   +5.44% (p=0.002 n=6)
geomean                                    221.4µ         223.8µ         +1.08%

                                   │ baseline-bench.txt │         benchmark-results.txt         │
                                   │        B/op        │     B/op       vs base                │
EventStoreAppend_InMemory-4                  794.5 ± 9%     789.5 ± 10%       ~ (p=0.818 n=6)
EventStoreAppend_SQLite-4                  1.987Ki ± 3%   1.984Ki ±  1%       ~ (p=0.727 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.545 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%       ~ (p=1.000 n=6)
GetTimeline_SQLite/events-1000-4           1.639Mi ± 0%   1.639Mi ±  0%       ~ (p=1.000 n=6)
geomean                                    67.38Ki        67.34Ki        -0.06%
¹ 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.

… list exit code in audit script + CI gate + correct stale auth_oauth2 comment
@codecov
Copy link
Copy Markdown

codecov Bot commented May 15, 2026

Codecov Report

❌ Patch coverage is 66.66667% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
cmd/wfctl/infra_state_store.go 0.00% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

Copilot AI review requested due to automatic review settings May 15, 2026 23:44
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

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

Comment on lines +93 to +99
while IFS= read -r f; do
[[ -z "$f" ]] && continue
for sdk in 'cloud.google.com/go' 'google.golang.org/api' 'github.com/Azure/azure-sdk-for-go'; do
if real_import "$f" "$sdk"; then
MOD_FORBIDDEN+=("$f -> $sdk")
fi
done
Comment thread scripts/audit-cloud-symbols.sh Outdated
fi
# `|| true` on each grep is fine: grep returning 1 means "no matches" =
# success case. Only the outer `go list` exit code matters for gate sanity.
AZURE_UNEXPECTED=$(echo "$DEPS" | grep -F 'github.com/Azure/azure-sdk-for-go' || true)
Copilot AI review requested due to automatic review settings May 16, 2026 00:18
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

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

Comment on lines 35 to 48
# Extract just the Go import block of a file (handles single `import (...)`).
import_block() {
awk '/^import \(/{f=1} f{print} /^\)/{if(f)exit}' "$1"
}

real_import() { # file, sdk → 0 if sdk appears in a real import (block OR single-line)
# `|| true` on the inner grep: a no-match exit 1 must not poison the pipe
# under `set -o pipefail`.
# Single-line form matches plain, aliased, dot, and blank imports:
# import "pkg" / import foo "pkg" / import . "pkg" / import _ "pkg"
{ import_block "$1"; grep -E '^import +([A-Za-z_.][A-Za-z0-9_]* +)?"' "$1" 2>/dev/null || true; } | grep -q "$2"
# Match the SDK string with `-F` (fixed string): SDK prefixes contain `.`
# which would otherwise be regex metachars matching any character.
{ import_block "$1"; grep -E '^import +([A-Za-z_.][A-Za-z0-9_]* +)?"' "$1" 2>/dev/null || true; } | grep -qF "$2"
}
Comment thread scripts/audit-cloud-symbols.sh Outdated
MOD_FORBIDDEN+=("$f -> $sdk")
fi
done
done < <(grep -rl 'cloud\.google\.com/go\|google\.golang\.org/api\|github\.com/Azure/azure-sdk-for-go' module/ --include='*.go' 2>/dev/null | grep -v '_test\.go' | sort)
@intel352 intel352 merged commit 82a1233 into main May 16, 2026
28 checks passed
@intel352 intel352 deleted the feat/phase-c-core-deletion branch May 16, 2026 00:42
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