3.1 KiB
3.1 KiB
Phase 7.2: Minimal FreeBSD system closure generated from the Fruix system model
Date: 2026-04-01
Summary
This step materializes the Phase 7.1 Fruix operating-system description into a reproducible system closure under /frx/store.
Added files:
tests/system/materialize-phase7-system-closure.scmtests/system/run-phase7-system-closure.sh
Validation command
Run command:
METADATA_OUT=/tmp/phase7-system-closure-metadata.txt \
./tests/system/run-phase7-system-closure.sh
What the harness does
The harness:
- ensures the local Guile/Fibers/Shepherd runtime needed for the generated system is available
- loads the declarative Phase 7 operating-system object
- materializes the referenced FreeBSD base packages into
/frx/store - materializes local Guile and Shepherd prefixes into
/frx/store - generates a Fruix system closure store item containing:
- boot assets
- a merged system profile
- generated
/etcfiles - an activation script
- a Shepherd configuration
- a generated FreeBSD
rc.dlauncher for Shepherd
- reruns the same materialization a second time and verifies that the same closure path is produced
Observed results
Observed metadata included:
closure_path=/frx/store/...-fruix-system-fruix-freebsdclosure_rebuild_path=/frx/store/...-fruix-system-fruix-freebsdkernel_store=/frx/store/...-freebsd-kernel-15.0-STABLEbootloader_store=/frx/store/...-freebsd-bootloader-15.0-STABLEguile_store=/frx/store/...-fruix-guile-runtime-3.0guile_extra_store=/frx/store/...-fruix-guile-extra-3.0shepherd_store=/frx/store/...-fruix-shepherd-runtime-1.0.9profile_bin_sh=/frx/store/...-fruix-system-fruix-freebsd/profile/bin/shprofile_sbin_init=/frx/store/...-fruix-system-fruix-freebsd/profile/sbin/initprofile_rc=/frx/store/...-fruix-system-fruix-freebsd/profile/etc/rcinit_integration=freebsd-init+rc.d-shepherd
Important findings
- the FreeBSD system definition now materializes into a single reproducible system closure store item rather than remaining only a logical specification
- the closure uses a Guix-like split between:
- referenced store items for package/runtime content
- generated configuration and activation payload in the system closure itself
- the first integrated init strategy is now concretely encoded in the closure contents:
- FreeBSD init and rc infrastructure from the base system profile
- a generated
fruix_shepherdrc script - a generated Shepherd configuration that writes a deterministic ready marker
- rerunning the same materialization produced the same closure path, which is the current prototype proof of reproducible closure generation for this phase
Conclusion
Phase 7.2 is satisfied on the current FreeBSD prototype track:
- a declarative Fruix system description now generates a real system closure under
/frx/store - that closure contains boot files,
/etcpayloads, activation payload, and Shepherd launch integration - the next step is to materialize a root filesystem tree from this closure and statically validate it for later image construction work