fix(sandbox): preserve stopped resume failures#184
Merged
shekohex merged 1 commit intoJul 10, 2026
Conversation
6 tasks
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
recoverStoppedSandboxtyped seam so products own snapshot/delete/confirmation policy, then authorize replacement creationValidation
pnpm vitest run src/sandbox/index.test.ts(120 passed)pnpm typecheckNODE_OPTIONS=--max-old-space-size=8192 pnpm buildpnpm test(138 files, 2,244 tests passed)git diff --check HEAD^ HEADProof
409 EGRESS_PROXY_RECOVERY_REQUIRED-shaped error frommatch.resume()reaches the caller by object identity, with zero delete/create calls.box-w1-recoveryas both name and idempotency key.Consumer Path
tangle-network/gtm-agent#562can returnok(null)while awaiting explicit retention approval, or snapshot/delete then return a durable freshreplacementBoxKeyandrestorespec.Review Guide
src/sandbox/index.ts: Stage 2 now fails loud by default and permits only explicit product-authorized recovery.src/sandbox/index.test.ts: typed/generic propagation, no implicit deletion, fresh identity enforcement, and restore decisions.Closes #183