Files
fruix/docs/PROGRESS.md

4.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 status
    • fruix system switch
    • fruix 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

Validated boot modes still are:

  • freebsd-init+rc.d-shepherd
  • shepherd-pid1

The validated Phase 18 installation work currently uses:

  • freebsd-init+rc.d-shepherd

Latest completed achievement

2026-04-05 — Phase 20.3 completed

Fruix now has a validated first controlled guest self-hosted native base-build prototype, on top of the already validated host-initiated in-guest build path.

Highlights:

  • development-enabled systems now ship an in-guest helper at:
    • /usr/local/bin/fruix-self-hosted-native-build
  • the helper recovers the declared materialized FreeBSD source store from:
    • /run/current-system/metadata/store-layout.scm
  • the helper records self-hosted build results under:
    • /var/lib/fruix/native-builds/<run-id>
    • /var/lib/fruix/native-builds/latest
  • heavy object/stage work remains under:
    • /var/tmp/fruix-self-hosted-native-builds/<run-id>
  • the prototype exposed an important contract detail:
    • a naive reuse of the development-shell exports polluted buildworld
    • the validated helper therefore sanitizes development-oriented variables such as MAKEFLAGS, CPPFLAGS, CFLAGS, CXXFLAGS, and LDFLAGS before world/kernel bootstrap
  • the validated result includes guest-recorded native artifact outputs for:
    • kernel
    • bootloader slice
    • headers / usr/share/mk

Validation:

  • PASS phase20-self-hosted-native-build-xcpng

Reports:

  • docs/system-deployment-workflow.md
  • docs/GUIX_DIFFERENCES.md
  • docs/reports/phase20-development-environment-freebsd.md
  • docs/reports/phase20-host-initiated-native-builds-freebsd.md
  • docs/reports/phase20-self-hosted-native-builds-freebsd.md

Recent major milestones

  • 1d00907Add Fruix bootable installer environment
  • 2517710Add non-interactive Fruix installation flow
  • 02a02e3Document Fruix FreeBSD source policy
  • 865012eBoot Fruix from distinct FreeBSD source revisions
  • 8150508Validate side-by-side FreeBSD source revisions
  • 5cbf5b9Build native bases from materialized FreeBSD sources

Active constraints

  • local bhyve remains 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-fc6339b95743
      • 7061d761-3639-4bec-87f7-2ba1af924eaa
  • local QEMU/TCG validation keeps conservative default SMP settings; QEMU_SMP remains 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 therefore no longer another planned PLAN_4 phase, but a product decision:

  • whether to keep the new guest self-hosted helper as a narrow prototype while Phase 20.2 remains the default operator path
  • or whether to invest in a broader guest-driven Fruix-native native-build workflow

Phase 20.3 is now complete: Fruix validates a first controlled guest self-hosted native FreeBSD base-build prototype on the approved real XCP-ng path.