Repository navigation
RFC21: Prevent competing volume writes during embedded Gateway recovery - #3773
stevenlee-oai wants to merge 3 commits into
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: blocked before merge. What this changesThis PR proposes provider-verified recovery of embedded Gateway state after an unclean stop and links the plan from RFC-0021. Example: An embedded Gateway using OpenClaw 9cc4450e is killed and replaced on its retained state volume.
Review scores
ProductKind: Docs · Worth it: Yes Merge readiness⛔ Blocked before merge - 1 item remains Keep this PR open for Compute and runtime design review: it identifies a concrete recovery boundary, preserves operator confirmation when custody is uncertain, and introduces no runtime changes. Priority: P2 Decision needed
Before merge
FindingsNone. Agent review detailsHow this fits togetherCompute manages Agent workloads and retained volumes; the proposed bootstrap would combine provider custody evidence with OpenClaw's fingerprinted recovery command before admitting model work. flowchart TB
A[Stopped embedded Gateway] --> B[Retained Agent state]
C[Compute Driver] -. verifies termination and custody .-> D[Proposed trusted bootstrap]
B -. inspected locks .-> D
D -. qualified custody .-> E[Native recovery and first chat]
D -. unresolved custody .-> F[Operator confirmation]
Technical reviewBest possible solution: Keep automatic recovery disabled until a provider can enforce exclusive custody throughout handoff and qualify successful recovery plus competing-writer refusals. Do we have a high-confidence way to reproduce the issue? No runtime reproduction is required for this documentation-only PR; source inspection confirms the shared-volume initializer and heartbeat-aging test assumptions, while the linked failed job belongs to the managed-mode branch. Is this the best way to solve the issue? The proposal uses the existing Compute lifecycle and native fingerprinted recovery command, correctly separating exact termination from exclusive custody and preserving operator recovery when either cannot be established. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 1bd061c09f1c. Provenance checked
SecurityNone. EvidenceWhat I checked:
LabelsLabel changes:
Label justifications:
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment Reviewed October 26, 2026, 2:40 PM ET / 18:40 UTC. |
Two containers can write the same ordinary Docker volume even after the original Gateway has stopped. This RFC21 follow-up asks how Compute could prevent competing writers from attaching to embedded Agent state while a replacement recovers. Compute and runtime maintainers can review this storage guarantee separately from Gateway managed mode. Proposal
OCE #2982 accepts temporary operator recovery after an embedded hard crash. OCE #2633 implements unattended recovery for a verified Docker predecessor and the first Gateway container restarted by kubelet in the same Pod. Both cases passed its restart check at
bb403839. A new Pod with an unverifiable owner requires operator confirmation. #3355 covers dedicated Gateway state. Managed mode #2982 · Unattended recovery #2633 · Passing restart check · Dedicated recovery #3355On Docker Engine 29.9.0, the stopped Gateway retained its name and was the only listed attachment. A differently named initializer then mounted the same volume and wrote a marker. A separate reader saw the write. The proposal describes how to test a storage mechanism against that case. No provider mechanism has been selected.