Repository navigation
feat(iac): pass persisted state on update - #1021
Merged
Merged
Conversation
Reread durable state at dispatch, including saved plans. Preserve legacy clients while state-dependent providers fail closed without prior state.
⏱ Benchmark Results✅ No significant performance regressions detected. benchstat comparison (baseline → PR)
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add an optional persisted-state update contract without changing ResourceDriver.Update or the Update RPC name. The CLI rereads its durable backend at dispatch, including saved-plan execution. Both public adapters transmit additive prior_state; the SDK dispatches the native optional interface and leaves other RPCs unchanged.
Existing public clients without the new lookup hook retain legacy Update. State-dependent providers must reject nil state before mutation. Supplied missing, ambiguous, mismatched or malformed state fails closed. No DigitalOcean heuristics, private epoch cache, credential persistence, dependency changes or cloud operations.
Scope Manifest
Plan: workspace docs/plans/2026-10-02-workflow-compute-recovery-0a.md, approved ADR 0152.
PR Count: 14; Tasks: 25; Status: approved locked recovery plan, other phases remain open.
PR row 11: Task 22, fix/prior-state-update-20261003. This PR implements that row only.
Doc-reconciliation: clean.
Verification
Runtime Launch Transcript
Actual SDK plugin processes and the public providerclient/shared apply APIs:
Reopened filesystem state and the actual CLI dispatch see generation 9 rather than captured 7 or saved-plan 1. No prior Diff is used. Invalid identity/config is rejected before mutation.
Failure-signature scrape: no unexpected panic, startup, permission, version or schema failures. Intentional denial cases above return errors. Boundary proof PASS; no live provider/cloud mutation claimed.
Remaining Gates
Publish and verify an immutable Workflow successor before DigitalOcean or private-app adoption. Original installed-agent, A/B, privileged scrub, STG and dogfood acceptance remain open.
Existing full-scan OSV baseline on preceding main reported 173 findings; this PR changes no dependency files and does not disable scanning or claim that baseline fixed.