Clarify transitional FreeBSD base package boundary

This commit is contained in:
2026-04-02 22:52:36 +02:00
parent 901d0a8448
commit 1108153277
5 changed files with 232 additions and 4 deletions

View File

@@ -2810,3 +2810,67 @@ Next recommended step:
1. complete Phase 12.3 by making the host-staged FreeBSD base boundary explicit in the package/model layer and docs
2. document the first intended replacement order for native world/kernel work
3. then begin Phase 13 with a clearer transitional boundary
## 2026-04-02 — Phase 12.3: made the host-staged FreeBSD base boundary explicit
Completed work:
- wrote the Phase 12.3 report:
- `docs/reports/phase12-host-staged-base-boundary-freebsd.md`
- refined `modules/fruix/packages/freebsd.scm` so the transitional host-copy base boundary is now explicit in the package/model layer
- added and exported named transitional package sets:
- `%freebsd-host-staged-all-packages`
- `%freebsd-host-staged-core-packages`
- `%freebsd-host-staged-development-profile-packages`
- `%freebsd-host-staged-system-packages`
- added and exported:
- `freebsd-host-staged-package?`
- `%freebsd-host-staged-replacement-order`
- preserved compatibility aliases so existing callers still work:
- `%freebsd-core-packages`
- `%freebsd-development-profile-packages`
- `%freebsd-system-packages`
- encoded the intended first replacement order for native base-build work directly in the package layer:
1. `freebsd-kernel`, `freebsd-bootloader`
2. `freebsd-runtime`, `freebsd-libc`, `freebsd-userland`, `freebsd-rc-scripts`
3. `freebsd-networking`, `freebsd-openssh`
4. `freebsd-kernel-headers`, `freebsd-clang-toolchain`
5. `freebsd-gmake`, `freebsd-autotools`, `freebsd-openssl`, `freebsd-zlib`, `freebsd-sh`, `freebsd-bash`
- updated `modules/fruix/system/freebsd.scm` so the generated closure metadata now carries this boundary information too:
- `metadata/store-layout.scm` now includes:
- `host-base-stores`
- `fruix-runtime-stores`
- `host-base-replacement-order`
- `init-mode`
Validation:
- confirmed package-layer behavior directly with Guile:
- `(freebsd-host-staged-package? freebsd-runtime)` => `#t`
- `%freebsd-host-staged-replacement-order` prints the expected staged replacement order
- `tests/system/run-phase7-system-closure.sh` still passes after the package-layer clarification:
- workdir: `/tmp/phase12-3-closure-1775162784`
- inspected generated closure metadata file:
- `/frx/store/25ae9bb85da60b8c77971325e0e11d5390a064132a35e1bab0866cabb802a606-fruix-system-fruix-freebsd/metadata/store-layout.scm`
- confirmed it now includes:
- `host-base-stores`
- `fruix-runtime-stores`
- `host-base-replacement-order`
Important findings:
- the current host-staged FreeBSD base model is no longer just an implicit fact of the implementation; it is now named and documented as a transitional boundary
- preserving compatibility aliases means the current working system model does not need a broad rename/refactor just to make that boundary explicit
- encoding the replacement order directly in the package/model layer gives Phase 13 a clearer starting point for native `world`/`kernel` work
Current assessment:
- Phase 12 is now complete
- the current Fruix pipeline is better documented, easier to diagnose, less noisy at runtime, and clearer about what remains transitional in the FreeBSD base layer
- this is a good stopping point before beginning native FreeBSD base-build artifacts in `/frx/store`
Next recommended step:
1. begin Phase 13.1 by modeling FreeBSD `world` and `kernel` as Fruix-managed build artifacts rather than host-copy packages
2. use `/usr/src` as the initial source of truth on the builder side
3. target the first bootable replacement for the current host-staged kernel and core runtime path