system: validate installed rollback workflow

This commit is contained in:
2026-04-05 01:39:24 +02:00
parent b3b1ba2489
commit 9dae4e5c84
9 changed files with 1170 additions and 75 deletions

View File

@@ -30,6 +30,10 @@ Fruix currently has:
- `/var/lib/fruix/system`
- explicit installed-system retention roots under:
- `/frx/var/fruix/gcroots`
- a validated installed-system generation switch/rollback workflow via:
- `fruix system status`
- `fruix system switch`
- `fruix system rollback`
Validated boot modes still are:
@@ -42,30 +46,35 @@ The validated Phase 18 installation work currently uses:
## Latest completed achievement
### 2026-04-04 — Phase 19.2 completed
### 2026-04-04 — Phase 19.3 completed
Fruix now records an explicit installed-system generation layout and retention-root model instead of relying mainly on harness knowledge.
Fruix now has a validated installed-system operator workflow for switching to a staged candidate generation and rolling back to the recorded previous generation.
Highlights:
- added explicit installed-system generation layout under:
- `/var/lib/fruix/system`
- added explicit installed-system retention roots under:
- `/frx/var/fruix/gcroots`
- installed targets now record a first-generation deployment directory containing:
- `closure`
- `metadata.scm`
- `provenance.scm`
- `install.scm`
- `/run/current-system` remains the runtime boundary and still points directly at the active closure path
- added Guix-oriented operator notes in:
- `docs/GUIX_DIFFERENCES.md`
- updated deployment workflow documentation to reflect the new explicit generation model
- installed systems now ship an in-guest Fruix deployment helper at:
- `/usr/local/bin/fruix`
- validated in-guest command surface:
- `fruix system status`
- `fruix system switch /frx/store/...-fruix-system-...`
- `fruix system rollback`
- switching now records explicit rollback state under:
- `/var/lib/fruix/system/rollback`
- `/var/lib/fruix/system/rollback-generation`
- switching now records explicit rollback GC roots under:
- `/frx/var/fruix/gcroots/rollback-system`
- the validated installed-system workflow now supports:
- stage candidate closure in `/frx/store`
- switch to generation 2
- reboot into the candidate
- rollback to generation 1
- reboot into the restored current system
Validation:
- `PASS phase19-generation-layout-qemu`
- regression re-check:
- `PASS phase19-installed-system-rollback-qemu`
- regression re-checks:
- `PASS phase19-generation-layout-qemu`
- `PASS phase18-installer-iso`
Reports:
@@ -74,6 +83,7 @@ Reports:
- `docs/GUIX_DIFFERENCES.md`
- `docs/reports/phase19-deployment-workflow-freebsd.md`
- `docs/reports/phase19-generation-layout-freebsd.md`
- `docs/reports/phase19-installed-system-rollback-freebsd.md`
## Recent major milestones
@@ -99,6 +109,6 @@ Reports:
Per `docs/PLAN_4.md`, the next planned step is:
- **Phase 19.3** — validate installed-system rollback through the intended operator-facing workflow
- **Phase 20.1** — validate a Fruix-managed development environment for native FreeBSD base work
Phase 19.2 is now complete: Fruix has an explicit installed-system generation layout and retention-root model on FreeBSD.
Phase 19.3 is now complete: Fruix validates installed-system generation switching and rollback through the intended operator-facing workflow.