146 lines
5.5 KiB
Markdown
146 lines
5.5 KiB
Markdown
# 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
|
|
- 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-...`
|
|
|
|
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 — Native base builds promoted into first-class Fruix store objects
|
|
|
|
Fruix now has a validated end-to-end path that treats guest native base-build results as **staged mutable results first**, and then promotes them into **immutable Fruix store identities**.
|
|
|
|
Highlights:
|
|
|
|
- guest self-hosted runs still record staged results under:
|
|
- `/var/lib/fruix/native-builds/<run-id>`
|
|
- `/var/lib/fruix/native-builds/latest`
|
|
- those result roots now carry promotion metadata describing:
|
|
- executor / executor-version
|
|
- closure path
|
|
- source store provenance
|
|
- build policy
|
|
- artifact entries for:
|
|
- `world`
|
|
- `kernel`
|
|
- `headers`
|
|
- `bootloader`
|
|
- the host can now run:
|
|
- `fruix native-build promote RESULT_ROOT`
|
|
- promotion creates immutable `/frx/store` objects for:
|
|
- `world`
|
|
- `kernel`
|
|
- `headers`
|
|
- `bootloader`
|
|
- promotion also creates a result-bundle store object that references those artifact stores
|
|
- the validated promotion metadata now makes Fruix-native native-build identity explicit instead of leaving results only as ad hoc files under `/var/lib/fruix/native-builds/...`
|
|
|
|
Validation:
|
|
|
|
- `PASS phase20-self-hosted-native-build-xcpng`
|
|
- `PASS phase20-native-build-store-promotion-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`
|
|
- `docs/reports/phase20-native-build-store-promotion-freebsd.md`
|
|
|
|
## Recent major milestones
|
|
|
|
- `1d00907` — `Add Fruix bootable installer environment`
|
|
- `2517710` — `Add non-interactive Fruix installation flow`
|
|
- `02a02e3` — `Document Fruix FreeBSD source policy`
|
|
- `865012e` — `Boot Fruix from distinct FreeBSD source revisions`
|
|
- `8150508` — `Validate side-by-side FreeBSD source revisions`
|
|
- `5cbf5b9` — `Build 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 now clearer:
|
|
|
|
- unify host-initiated and self-hosted native-build execution behind a shared Fruix executor/result model
|
|
- make the same first-class promotion story available regardless of whether the outer loop is host-driven or guest-driven
|
|
- decide how much of result import/promotion should remain host-side versus become a more integrated Fruix deployment action
|
|
|
|
The immediate architectural direction is no longer just “can guest self-hosting work?”
|
|
|
|
It is now:
|
|
|
|
- how should Fruix represent native base builds as real first-class objects and workflows across different executors?
|