Skip to content

test(installer): verify GPT backups after abrupt VM loss - #121

Merged
lalalune merged 3 commits into
developfrom
codex/installer-gpt-vm-interruption-20260923
Sep 23, 2026
Merged

lalalune merged 3 commits into
developfrom
codex/installer-gpt-vm-interruption-20260923

Conversation

@lalalune

@lalalune lalalune commented Sep 23, 2026

Copy link
Copy Markdown
Member

Existing artifact persistence qualification kills the writer process while the guest kernel remains alive. Add a local KVM qualification that kills the exact disposable QEMU process at each of four persistence checkpoints and boots the same overlay with a fresh kernel. The native reader must return either the exact artifact or no usable output; the directory-synced checkpoint must recover successfully.

The runner accepts only a completed prepared qualification, checks native source/binary and artifact bindings, preserves the prepared image as unchanged backing storage, and retains per-boot seed/log hashes and QEMU commands. It attaches only disposable image files and disables guest networking.

Validation: complete local 512-byte and 4096-byte artifact lanes (16 final guest boots total), independent inspection of retained log/seed hashes and fresh-kernel/ext4-recovery logs, rejection of incomplete prepared source evidence before VM creation, Python compilation, bun install, and bun run verify. In both lanes the created/written-but-unsynced artifacts were absent after reboot (ENOENT, zero usable bytes); file-synced and directory-synced artifacts were recovered byte-for-byte.

This models abrupt guest/kernel and QEMU process loss. Host caches and physical storage remain powered, so it does not prove physical power-loss safety or complete installer backend integration. Related to #20; does not close it.

@lalalune
lalalune marked this pull request as ready for review September 23, 2026 12:06
@lalalune
lalalune merged commit 5fa49bc into develop Sep 23, 2026
8 checks passed
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