5.9 KiB
5.9 KiB
Progress
This file is now intentionally compact.
Detailed chronological history through Phase 18.2 has been archived at:
docs/reports/progress-log-through-phase18-2-freebsd.md
For a broader narrative summary, see:
docs/PROG_SUMMARY.md
Current status
Fruix currently has:
- declarative system modeling on FreeBSD
- content-addressed system closures under
/frx/store - native FreeBSD base artifacts in
/frx/store - declarative FreeBSD source objects and source materialization
- source-driven native base builds from materialized source snapshots
- side-by-side source revisions and boot validation
- a host-driven non-interactive install path:
fruix system install
- a bootable Fruix-managed installer environment:
fruix system installer
- a bootable Fruix-managed installer ISO:
fruix system installer-iso
- an explicit installed-system generation layout under:
/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 statusfruix system switchfruix system rollback
- a validated separate in-system development environment overlay via:
/run/current-system/development-profile/run/current-development/usr/local/bin/fruix-development-environment
- a validated host-initiated native base-build path inside a Fruix-managed guest via:
- real XCP-ng boot of a development-enabled Fruix system
- in-guest
buildworld/buildkernel - staged
installworld/distribution/installkernel
- a validated controlled guest self-hosted native base-build prototype via:
/usr/local/bin/fruix-self-hosted-native-build- result roots under
/var/lib/fruix/native-builds - in-guest source recovery from current-system metadata
- a validated promotion path that turns native-build result roots into first-class Fruix store objects via:
fruix native-build promote/frx/store/...-fruix-native-world-.../frx/store/...-fruix-native-kernel-.../frx/store/...-fruix-native-headers-.../frx/store/...-fruix-native-bootloader-.../frx/store/...-fruix-native-build-result-...
- an explicit executor model for native base builds with current executor kinds:
hostssh-guestself-hosted
- end-to-end validated staged-result-plus-promotion paths for executor policies:
ssh-guestself-hosted
Validated boot modes still are:
freebsd-init+rc.d-shepherdshepherd-pid1
The validated Phase 18 installation work currently uses:
freebsd-init+rc.d-shepherd
Latest completed achievement
2026-04-06 — Native build executor model introduced and validated across two executor policies
Fruix now has an explicit executor model for native base builds, and the same staged-result-plus-promotion flow is validated across both host-initiated guest execution and guest self-hosted execution.
Highlights:
- native base-build placement is now modeled as executor policy rather than as separate unrelated paths
- current executor kinds are:
hostssh-guestself-hosted
- guest result roots now carry explicit executor metadata instead of only an ad hoc executor string
- both validated executor paths now converge on the same Fruix-native flow:
- stage mutable results under
/var/lib/fruix/native-builds/<run-id> - emit promotion metadata with shared provenance/build-policy/artifact shape
- promote immutable identities into
/frx/store/...
- stage mutable results under
- the
ssh-guestpath now also stages promotable native-build result roots rather than only temporary build directories under/var/tmp - the host can now promote both executor paths through the same command:
fruix native-build promote RESULT_ROOT
Validation:
PASS phase20-host-initiated-native-build-xcpngPASS phase20-host-initiated-native-build-store-promotion-xcpngPASS phase20-self-hosted-native-build-xcpngPASS phase20-native-build-store-promotion-xcpng
Reports:
docs/system-deployment-workflow.mddocs/GUIX_DIFFERENCES.mddocs/reports/phase20-development-environment-freebsd.mddocs/reports/phase20-host-initiated-native-builds-freebsd.mddocs/reports/phase20-self-hosted-native-builds-freebsd.mddocs/reports/phase20-native-build-store-promotion-freebsd.mddocs/reports/phase20-native-build-executor-model-freebsd.md
Recent major milestones
1d00907—Add Fruix bootable installer environment2517710—Add non-interactive Fruix installation flow02a02e3—Document Fruix FreeBSD source policy865012e—Boot Fruix from distinct FreeBSD source revisions8150508—Validate side-by-side FreeBSD source revisions5cbf5b9—Build native bases from materialized FreeBSD sources
Active constraints
- local
bhyveremains blocked under Xen due to lack of nested VT-x exposure - XO self-service creation is still not usable with the current token
- real XCP-ng validation must continue to use:
- VM
90490f2e-e8fc-4b7a-388e-5c26f0157289 - approved A/B VDIs:
0f1f90d3-48ca-4fa2-91d8-fc6339b957437061d761-3639-4bec-87f7-2ba1af924eaa
- VM
- local QEMU/TCG validation keeps conservative default SMP settings;
QEMU_SMPremains overrideable
Next step
docs/PLAN_4.md currently ends at Phase 20.3, and that milestone sequence is now complete.
The next practical follow-up is now clearer:
- extend the shared executor/result model from validated
ssh-guestandself-hostedpaths to thehostpath as well - decide how much of result import/promotion should remain host-side versus become a more integrated Fruix action
- determine whether executor selection should become part of a higher-level Fruix native-build/deployment command surface
The immediate architectural direction is no longer just “can guest self-hosting work?”
It is now:
- how should Fruix expose executor selection, execution policy, and result promotion as one coherent operator-facing workflow?