Repository navigation
test(configurator): add repeatable isolated recovery lab - #141
Merged
Merged
Conversation
lweberru
requested review from
Breeless,
JoshSTACKIT,
LembDo and
dweezl
as code owners
October 23, 2026 08:44
This was referenced Oct 23, 2026
This was referenced Oct 23, 2026
Open
lweberru
added a commit
that referenced
this pull request
Oct 23, 2026
#143) ## Problem and resulting behavior The initially empty local-filesystem checkpoint gap in #140 must not be inferred for remote backends. Extend #141's deterministic local lab with the real pinned OpenTofu HTTP and S3 backend implementations against in-memory loopback protocol fixtures. Each case starts without workload resources, captures both completed resources in an intermediate checkpoint, hard-stops only its own Apply process group and verifies a fresh Plan is blocked by the orphaned remote lock. Only after confirming that child exited does the controller remove the exact in-memory fixture lock. Fresh Plan/Apply must retain the newly created resource without replacement or ID change. No operational force-unlock path is introduced. ## Validation - Real OpenTofu 1.12.6 HTTP and S3 protocol fixtures passed, including retained checkpoints, lock-blocked Plan and successful recovery with unchanged resource identity. - Six lab isolation/security unit tests passed; Python compile, bilingual command parity and `git diff --check` passed. - Credential-free CI now runs both protocol cases with no raw-State/log artifact publication. This is protocol-fixture evidence, not STACKIT authentication/eventual-consistency/live-lock acceptance or hosted Runner reconciliation. The S3 fixture uses dummy keys; S3 init may establish an empty State object. The initially empty local-filesystem variant remains unqualified in #140. No customer or production Plan/Apply, no cloud provisioning, no Dev deployment or Assistant changes. Refs #90, #95, #140.
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.
Problem and resulting behavior
Recovery acceptance needs a repeatable local environment and deterministic process barriers instead of manual timing. Add a digest-pinned PostgreSQL Compose lab with separate source/restored volumes, internal-only networking, private local backups and no cloud bindings. The controller preserves migration checksums, owners, effective ACLs and RLS, and compares restored application data/functions.
A separate real OpenTofu 1.12.6 fixture interrupts a running Plan at a loopback State read and a saved-plan Apply after an observed checkpoint. The Apply test establishes existing State first, then requires a newly created resource to survive unchanged through fresh Plan/Apply. Controllers terminate only their own synthetic process groups; no production execution bypass is added.
The initially empty local-State variant exposed an incomplete intermediate checkpoint and remains unqualified in #140. Its optional diagnostic fails on missing completed resources; the default passing existing-State test does not claim to solve it. Hosted Runner loss, real S3 locking, cloud reconciliation, full-service restore and real-backup import remain outside this fixture's evidence (#90/#95).
Validation
git diff --checkpassed.Adds the credential-free
Isolated recovery labCI job with cleanup and bilingual operator/workflow documentation. No customer or production operations, no cloud provisioning, no Assistant knowledge changes, no public backup/log artifacts. The local lab is infrastructure as code, not another hosted Dev installation.