test(vm): boot upgrade and recovery acceptance scenarios - #77
Conversation
|
Warning Review limit reachedNext included review available in 23 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Central YAML (base), Organization UI (inherited) Review profile: CHILL Plan: Team Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (7)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
a76ea20 to
2a58e21
Compare
2a58e21 to
c57d364
Compare
c57d364 to
1b6ecc8
Compare
1b6ecc8 to
3e30296
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 3e30296. Configure here.
3e30296 to
582e724
Compare
582e724 to
bd5b135
Compare
1ca8063 to
ce6db58
Compare
2c7d69d to
ef94b79
Compare
ef94b79 to
9756a27
Compare
9756a27 to
d8c7133
Compare
d8c7133 to
67ffcc9
Compare

Container tests cannot verify boot persistence. Add a QEMU harness that boots a real Arch disk, installs with a baseline binary, upgrades with the candidate, interrupts an actual pacman transaction, checks conservative recovery, rolls back, and boots again to verify package and ledger persistence.
The baseline defaults to the latest published stable release, with origin/main as the initial fallback while no releases exist. CI retains binary hashes, baseline identity, bootstrap logs, and both boot logs. KVM is used when available, with TCG fallback.
Validation: the checked-in harness passed locally and in GitHub Actions, including both boots. Fixture repositories and keys are disposable; CI does not upload their private keys.
Stack created with GitHub Stacks CLI • Give Feedback 💬
Note
Medium Risk
New mandatory CI depends on Docker, QEMU, sudo, and GitHub API for baselines, so flakes or runner gaps could block merges without changing production runtime code.
Overview
Adds a boot acceptance harness that container tests cannot cover: Docker prepares an Arch rootfs with signed fixture repos and snapshots, exports an ext4 disk, and QEMU boots it twice with a real kernel/initramfs (KVM when available, TCG otherwise).
First boot installs with a baseline
pacvamp(latest stable tag ororigin/main), upgrades with the candidate, kills an in-flight update after pacman mutates packages, checks conservativerecover, rolls back to a signed snapshot, and records phase-one success. Second boot asserts package version, ledger, cleared journals, and snapshot pin survived shutdown.CI gains mandatory
vm-e2e(QEMU, e2fsprogs, full workspace build,bash harness/vm/run); thefinalfan-in gate now requires it and uploadstarget/vm-results(logs and binary hashes, not fixture keys).PLAN.mdandharness/docs describe the suite as separate from snapshot promotion;hk.pkllints the new shell scripts.Reviewed by Cursor Bugbot for commit 67ffcc9. Bugbot is set up for automated code reviews on this repo. Configure here.