Files
fruix/docs/reports/phase6-real-store-profile-freebsd.md

2.8 KiB

Phase 6.3: Minimal profile installation validated on top of real store outputs

Date: 2026-04-01

Summary

This step validates a minimal user-facing profile installation flow using the real /frx/store outputs produced in Phases 6.1 and 6.2.

Added file:

  • tests/packages/run-phase6-real-store-profile-prototype.sh

Validation command

Run command:

METADATA_OUT=/tmp/phase6-real-store-profile-metadata.txt \
./tests/packages/run-phase6-real-store-profile-prototype.sh

What the harness does

The harness:

  1. reruns the Phase 6.1 real-package build harness
  2. reruns the Phase 6.2 jail-integrated package build harness
  3. creates a minimal Fruix-owned profile transaction layout using those real store outputs
  4. installs generation 1 from the Phase 6.1 store item
  5. installs generation 2 from the Phase 6.2 store item
  6. switches the current profile symlink to generation 2
  7. validates:
    • preserved generation links
    • current-profile switching
    • PATH usability
    • execution from a nearly empty environment

Observed results

Observed metadata included:

  • profile=.../profile
  • profile_target=profile-2-link
  • generation1_store_path=/frx/store/...-hello-2.12.3
  • generation2_store_path=/frx/store/...-hello-2.12.3
  • current_store_path=/frx/store/...-hello-2.12.3
  • profile_hello_output=Hello, world!
  • clean_env_hello_output=Hello, world!
  • installation_mode=minimal-real-store-profile

Important findings

  • the current FreeBSD track now has a minimal profile-generation and profile-switching story that operates on real store outputs rather than the earlier Phase 3 package/profile prototype layer
  • the profile transaction semantics are intentionally small but real:
    • generation 1 is retained
    • generation 2 is created
    • the profile symlink is switched to generation 2
    • executables become reachable through PATH
  • this step intentionally uses a Fruix-owned minimal profile harness because the upstream-derived guix profiles / fruix package path still runs into the unresolved FreeBSD bootstrap-platform issue:
    • dynamic linker name not known for this system "x86_64-freebsd15.0"
  • even with that upstream profile-layer gap still open, the user-facing package-installation boundary is now validated in minimal form on top of real daemon-built store items

Conclusion

Phase 6.3 is satisfied on the current FreeBSD prototype track:

  • packages built through the real store path can be installed into a profile-like user environment
  • generation switching works in a minimal but concrete form
  • package execution through the profile succeeds for the current user
  • Phase 6 as a whole is now complete on the active FreeBSD prototype path, with deeper upstream profile-layer integration remaining follow-up work rather than a blocker to this milestone