docs(plan): design for live-deployment example validation CI matrix#726
docs(plan): design for live-deployment example validation CI matrix#726intel352 wants to merge 2 commits into
Conversation
Remote steps must not send host-only HTTP metadata or engine internal config keys through strict protobuf plugin contracts.
Files a design doc for the live-deploy CI matrix deferred from the 2026-05-19 multi-repo QoL sweep. Schema-level validation is insufficient to promote a plugin to 'verified'; this design adds a weekly OIDC-driven GitHub Actions matrix that exercises each IaC plugin's examples/minimal/config.yaml against staging cloud accounts, auto-promotes on green, demotes on 2 consecutive REDs. Execution is gated on operator provisioning staging accounts + GitHub OIDC trust per provider. Document this as the next concrete step. Companion to workflow#725 (marketplace-verify subcommand). Closes #723. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Botched: committed under _worktrees/ subdir of main repo on wrong branch. Redoing on correct worktree. |
There was a problem hiding this comment.
Pull request overview
Adds a design document for a live-deployment CI validation matrix (issue #723), and includes a small RemoteStep robustness change to prevent request encoding failures when PipelineContext metadata contains non-Struct-serializable values.
Changes:
- Filter RemoteStep metadata before encoding to
google.protobuf.Structto avoid failures on unrepresentable metadata values. - Strip engine-internal
"_*"keys from STRICT_PROTO RemoteStep typed config before protojson encoding. - Add a design doc describing the proposed operator-gated live-deploy validation CI matrix and promotion/demotion flow.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| plugin/external/remote_step.go | Filters metadata for Struct encoding; strips internal config keys prior to STRICT_PROTO typed encoding. |
| plugin/external/remote_step_test.go | Adds tests covering metadata filtering and STRICT_PROTO internal-key stripping. |
| _worktrees/live-deploy-design-1779216240/docs/plans/2026-05-19-live-deploy-validation-design.md | New design doc for the live-deploy validation CI matrix (but currently located under a likely unintended worktree directory). |
| if err != nil { | ||
| return nil, fmt.Errorf("remote step %q (handle %s) encode trigger_data as Struct: %w", s.name, s.handleID, err) | ||
| } | ||
| metadata, err := mapToStruct(pc.Metadata) | ||
| metadata, err := mapToStruct(remotePluginMetadata(pc.Metadata)) | ||
| if err != nil { | ||
| return nil, fmt.Errorf("remote step %q (handle %s) encode metadata as Struct: %w", s.name, s.handleID, err) |
| func remotePluginMetadata(metadata map[string]any) map[string]any { | ||
| if metadata == nil { | ||
| return nil | ||
| } | ||
| filtered := make(map[string]any, len(metadata)) | ||
| for key, value := range metadata { | ||
| if _, err := structpb.NewValue(value); err != nil { | ||
| continue | ||
| } | ||
| filtered[key] = value | ||
| } | ||
| return filtered |
| # Live-Deployment Example Validation — Design | ||
|
|
||
| **Date:** 2026-05-19 | ||
| **Trigger:** The 2026-05-19 multi-repo QoL sweep validated plugin examples at SCHEMA level (`wfctl validate --skip-unknown-types`) but never ran them end-to-end against real cloud accounts. Promotion from `experimental` to `verified` remains a manual decision tied to GoCodeAlone-internal usage. | ||
| **Mode:** Design only (operator must provision CI secrets before execution). |
| **Date:** 2026-05-19 | ||
| **Trigger:** The 2026-05-19 multi-repo QoL sweep validated plugin examples at SCHEMA level (`wfctl validate --skip-unknown-types`) but never ran them end-to-end against real cloud accounts. Promotion from `experimental` to `verified` remains a manual decision tied to GoCodeAlone-internal usage. | ||
| **Mode:** Design only (operator must provision CI secrets before execution). | ||
|
|
⏱ Benchmark Results✅ No significant performance regressions detected. benchstat comparison (baseline → PR)
|
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Design doc for the live-deploy CI matrix deferred from the 2026-05-19 QoL sweep. Closes #723. Execution is operator-gated (staging accounts + OIDC trust).