Skip to content

Cloud-SDK extraction B/C/D — PR 1: IaCStateBackend.Configure RPC + host wiring#679

Merged
intel352 merged 3 commits into
mainfrom
feat/cloud-sdk-bcd-p1-configure-rpc
May 14, 2026
Merged

Cloud-SDK extraction B/C/D — PR 1: IaCStateBackend.Configure RPC + host wiring#679
intel352 merged 3 commits into
mainfrom
feat/cloud-sdk-bcd-p1-configure-rpc

Conversation

@intel352
Copy link
Copy Markdown
Contributor

Summary

  • Adds the IaCStateBackend.Configure RPC (ConfigureRequest{backend_name, config_json bytes}) — Phase A's contract shipped with no config-passing RPC, so plugin-served IaC state backends round-trip state but can't receive their bucket/credential config. See decisions/0036.
  • Host wiring: iac_module.go's Init() default arm now calls Configure with the JSON-encoded module config before wrapping the plugin client.
  • Mirrors the existing InitializeRequest.config_json pattern — JSON bytes, no structpb/Any (the iac.proto hard invariant).

Plan PR 1 of the cloud-SDK-extraction B/C/D plan. Gates every plugin PR (they pin this merge commit) + PR 2 (azure Configure retrofit).

Test plan

  • GOWORK=off go build ./... green; Configure|StateBackend|IaCState tests across ./module + ./plugin/... PASS
  • TestIaCModuleConfigureWiring + TestIaCModuleConfigureError PASS (config round-trip, error-wrap, store-nil-on-failure)
  • runtime-launch-validation: server starts clean against a plugin-backed iac.state config
  • spec + quality review passed (zero Critical/Important)

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings May 14, 2026 22:20
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 missing configuration-passing hook for plugin-served IaC state backends by introducing a new IaCStateBackend.Configure RPC and wiring it into the host’s iac.state module initialization flow.

Changes:

  • Added IaCStateBackend.Configure(ConfigureRequest{backend_name, config_json}) to iac.proto and regenerated Go protobuf + gRPC bindings.
  • Implemented host-side wiring so IaCModule.Init() configures a resolved plugin backend by sending the JSON-encoded module config before exposing the store.
  • Added/updated unit tests covering generated types and the new Configure wiring (happy-path + error propagation).

Reviewed changes

Copilot reviewed 7 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
plugin/external/proto/iac.proto Adds Configure RPC and request/response messages for IaC state backends.
plugin/external/proto/iac.pb.go Regenerated protobuf Go types to include ConfigureRequest/Response.
plugin/external/proto/iac_grpc.pb.go Regenerated gRPC client/server interfaces and service descriptor including Configure.
plugin/external/proto/iac_statebackend_test.go Ensures new generated types exist/compile.
module/iac_state_plugin_registry_test.go Updates client stub to satisfy the expanded IaCStateBackendClient interface.
module/iac_state_grpc_client.go Adds grpcIaCStateStore.Configure to call the plugin’s Configure RPC.
module/iac_state_grpc_client_test.go Adds a unit test validating Configure request contents/JSON round-trip.
module/iac_module.go Calls Configure during iac.state init when resolving a plugin backend.
module/iac_module_test.go New tests covering IaCModule.Init() Configure wiring and error wrapping behavior.
Files not reviewed (2)
  • plugin/external/proto/iac.pb.go: Language not supported
  • plugin/external/proto/iac_grpc.pb.go: Language not supported

Comment thread module/iac_module.go
Comment on lines +96 to +99
store := newGRPCIaCStateStore(client)
if err := store.Configure(context.Background(), m.backend, m.config); err != nil {
return fmt.Errorf("iac.state %q: backend %q: configure plugin backend: %w", m.name, m.backend, err)
}
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implemented in 6e17cb5IaCModule.Init() now detects status.Code(err) == codes.Unimplemented from the Configure call and returns an actionable "upgrade the backend plugin" error citing decisions/0036; other gRPC codes keep the generic path. New TestIaCModuleConfigureUnimplemented covers it.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 14, 2026

Codecov Report

❌ Patch coverage is 10.65574% with 109 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
plugin/external/proto/iac.pb.go 1.14% 86 Missing ⚠️
plugin/external/proto/iac_grpc.pb.go 0.00% 21 Missing ⚠️
module/iac_state_grpc_client.go 66.66% 1 Missing and 1 partial ⚠️

📢 Thoughts on this report? Let us know!

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 14, 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:301570: parsing iteration count: invalid syntax
baseline-bench.txt:620384: parsing iteration count: invalid syntax
baseline-bench.txt:923322: parsing iteration count: invalid syntax
baseline-bench.txt:1199632: parsing iteration count: invalid syntax
baseline-bench.txt:1496684: parsing iteration count: invalid syntax
benchmark-results.txt:276: parsing iteration count: invalid syntax
benchmark-results.txt:348172: parsing iteration count: invalid syntax
benchmark-results.txt:678923: parsing iteration count: invalid syntax
benchmark-results.txt:1200258: parsing iteration count: invalid syntax
benchmark-results.txt:1503019: parsing iteration count: invalid syntax
benchmark-results.txt:1765751: 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               6.081m ± 60%   9.746m ± 68%       ~ (p=0.485 n=6)
ComponentLoad-4                     3.577m ±  1%   3.521m ±  0%  -1.56% (p=0.002 n=6)
ComponentExecute-4                  1.938µ ±  1%   1.912µ ±  1%  -1.34% (p=0.004 n=6)
PoolContention/workers-1-4          1.082µ ±  2%   1.073µ ±  2%  -0.79% (p=0.041 n=6)
PoolContention/workers-2-4          1.082µ ±  1%   1.072µ ±  2%       ~ (p=0.413 n=6)
PoolContention/workers-4-4          1.083µ ±  4%   1.072µ ±  1%  -1.11% (p=0.048 n=6)
PoolContention/workers-8-4          1.080µ ±  1%   1.071µ ±  1%  -0.88% (p=0.030 n=6)
PoolContention/workers-16-4         1.087µ ±  1%   1.080µ ±  2%       ~ (p=0.258 n=6)
ComponentLifecycle-4                3.611m ±  1%   3.528m ±  0%  -2.29% (p=0.002 n=6)
SourceValidation-4                  2.303µ ±  1%   2.266µ ±  1%  -1.63% (p=0.002 n=6)
RegistryConcurrent-4                794.6n ±  3%   775.0n ±  5%       ~ (p=0.394 n=6)
LoaderLoadFromString-4              3.616m ±  0%   3.548m ±  0%  -1.86% (p=0.002 n=6)
geomean                             18.39µ         18.88µ        +2.66%

                            │ 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.853 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.416 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                  286.8n ± 3%   283.1n ± 7%       ~ (p=0.394 n=6)
CircuitBreakerExecution_Success-4          21.54n ± 0%   21.52n ± 1%       ~ (p=0.758 n=6)
CircuitBreakerExecution_Failure-4          66.27n ± 0%   65.62n ± 0%  -0.98% (p=0.002 n=6)
geomean                                    74.24n        73.66n       -0.78%

                                  │ 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              302.2n ± 31%    305.4n ± 29%       ~ (p=0.240 n=6)
IaCStateBackend_GRPC-4                   9.306m ±  4%   10.021m ±  2%  +7.68% (p=0.002 n=6)
JQTransform_Simple-4                     673.6n ± 31%    649.3n ± 32%       ~ (p=0.310 n=6)
JQTransform_ObjectConstruction-4         1.454µ ±  1%    1.433µ ±  1%  -1.41% (p=0.006 n=6)
JQTransform_ArraySelect-4                3.411µ ±  1%    3.278µ ±  1%  -3.89% (p=0.002 n=6)
JQTransform_Complex-4                    38.78µ ±  2%    37.58µ ±  0%  -3.08% (p=0.002 n=6)
JQTransform_Throughput-4                 1.810µ ±  0%    1.750µ ±  1%  -3.31% (p=0.002 n=6)
SSEPublishDelivery-4                     66.96n ±  1%    65.59n ±  0%  -2.05% (p=0.002 n=6)
geomean                                  3.807µ          3.764µ        -1.14%

                                 │ 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.866Mi ± 11%     5.914Mi ± 12%       ~ (p=0.937 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.834k ± 0%     6.835k ± 0%       ~ (p=0.727 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.130µ ± 15%   1.100µ ± 15%       ~ (p=0.180 n=6)
SchemaValidation_AllFields-4                1.650µ ±  1%   1.659µ ±  1%       ~ (p=0.288 n=6)
SchemaValidation_FormatValidation-4         1.584µ ±  3%   1.581µ ±  4%       ~ (p=0.946 n=6)
SchemaValidation_ManySchemas-4              1.850µ ±  2%   1.764µ ±  2%  -4.65% (p=0.002 n=6)
geomean                                     1.529µ         1.502µ        -1.76%

                                    │ 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.338µ ± 15%   1.255µ ± 17%        ~ (p=0.589 n=6)
EventStoreAppend_SQLite-4                  1.487m ±  4%   1.570m ±  9%   +5.64% (p=0.004 n=6)
GetTimeline_InMemory/events-10-4           13.46µ ±  4%   13.44µ ±  2%        ~ (p=0.818 n=6)
GetTimeline_InMemory/events-50-4           75.72µ ± 20%   75.12µ ±  2%        ~ (p=0.394 n=6)
GetTimeline_InMemory/events-100-4          122.2µ ±  1%   154.0µ ±  5%  +26.04% (p=0.002 n=6)
GetTimeline_InMemory/events-500-4          628.7µ ±  1%   800.9µ ± 20%  +27.38% (p=0.002 n=6)
GetTimeline_InMemory/events-1000-4         1.288m ±  1%   1.314m ±  1%   +2.04% (p=0.002 n=6)
GetTimeline_SQLite/events-10-4             106.0µ ±  0%   104.6µ ±  1%   -1.30% (p=0.002 n=6)
GetTimeline_SQLite/events-50-4             248.4µ ±  1%   246.0µ ±  1%        ~ (p=0.093 n=6)
GetTimeline_SQLite/events-100-4            420.5µ ±  1%   420.5µ ±  1%        ~ (p=1.000 n=6)
GetTimeline_SQLite/events-500-4            1.781m ±  2%   1.808m ±  1%   +1.48% (p=0.041 n=6)
GetTimeline_SQLite/events-1000-4           3.496m ±  1%   3.488m ±  0%        ~ (p=0.699 n=6)
geomean                                    221.3µ         230.1µ         +3.96%

                                   │ baseline-bench.txt │         benchmark-results.txt         │
                                   │        B/op        │     B/op       vs base                │
EventStoreAppend_InMemory-4                  788.0 ± 5%     779.5 ± 11%       ~ (p=0.589 n=6)
EventStoreAppend_SQLite-4                  1.984Ki ± 2%   1.986Ki ±  3%       ~ (p=0.974 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.076 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=0.141 n=6)
GetTimeline_SQLite/events-1000-4           1.639Mi ± 0%   1.639Mi ±  0%       ~ (p=0.675 n=6)
geomean                                    67.33Ki        67.27Ki        -0.08%
¹ 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.

When a plugin-served iac.state backend is an older build whose Configure
RPC returns gRPC codes.Unimplemented, IaCModule.Init() now returns an
actionable error telling the operator to upgrade the backend plugin to a
version that supports Configure (decisions/0036 co-deploy requirement).
Other gRPC codes keep the existing generic configure-failed error path.

codecov note: the codecov/patch failure on #679 is a repo-config gap, not
a PR-1 defect. The patch is dominated by generated *.pb.go (iac.pb.go +
iac_grpc.pb.go, ~270 lines, 0% coverage) and the repo has no codecov.yml
/.codecov.yml ignoring generated files. The real new lines (iac_module.go
default arm + grpcIaCStateStore.Configure) are covered by unit tests;
only the defensive json.Marshal error branch is uncovered.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@intel352 intel352 merged commit 522748f into main May 14, 2026
25 of 26 checks passed
@intel352 intel352 deleted the feat/cloud-sdk-bcd-p1-configure-rpc branch May 14, 2026 22:56
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