Skip to content

fix(recovery): verify copied Runner droplet payloads - #151

Merged
lweberru merged 1 commit into
mainfrom
fix/recovery-cloned-droplet-source
Oct 24, 2026
Merged

lweberru merged 1 commit into
mainfrom
fix/recovery-cloned-droplet-source

Conversation

@lweberru

Copy link
Copy Markdown
Collaborator

The local recovery-preparation tool compared a warm app's copied droplet GUID with its template source GUID. CAPI assigns the copy a new GUID, so this check would reject a legitimate standby before any Runner stop.

Verify the immutable SHA-256 payload, staged state and exact owning app instead, while retaining the broker's original template-source GUID. Fail closed on missing/invalid checksums, changed source, foreign ownership or incomplete copies. Record both GUIDs and the payload checksum privately. Tests now model CAPI copies with genuinely different GUIDs.

Validation: 28 recovery/controller tests pass. The exact verifier also accepted the real current-source CF clone and rejected the older different-source clone using only GET requests, with zero lease or cloud mutations. English/German runbooks updated. This changes the local operator tool only; the successful Dev app release and native hold module remain unchanged, so no further app deployment is needed. Hosted-job recovery remains unqualified under #95.

@lweberru
lweberru merged commit 952c082 into main Oct 24, 2026
14 checks passed
@lweberru
lweberru deleted the fix/recovery-cloned-droplet-source branch October 24, 2026 10:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant