Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Phase 006 — real Moss state smoke test

At a glance

FieldValue
Phase familyPhase 0 — forge
Run commandmake phase 006
Underlying make target/scriptvm/phase0/state-smoke.sh
Runs onguest over SSH
Main proof/artifactProves real Moss install/remove/rollback state transitions in a disposable root.
make phase 006

Phase 005 uses moss install --to, which blits files into a target directory but does not create a real Moss state transaction.

Phase 006 uses:

moss -D <root> install onix-hello

That creates real state history under a disposable root.

Expected proof:

install onix-hello -> State #1
remove onix-hello  -> State #2
activate State #1     -> rollback works

This is the final Phase 0 gate because atomic state management is the whole reason we are using Moss.

Files in this phase

FilePurpose
MakefilePhase 0 target implementation
config.shshared settings: Alpine pin, VM name, disk path, ports, os-tools ref
fetch-rootfs.shdownloads and verifies Alpine minirootfs
build-disk.shbuilds the bootable forge disk
chroot-setup.shruns inside the new rootfs while building the disk
launch.shstarts QEMU
ssh.shSSH helper for the running forge
provision.shbuilds moss and boulder inside the VM
build-hello-stone.shcreates and verifies the first .stone
state-smoke.shproves real Moss state install/remove/rollback
clean.shremoves generated forge disk/boot artifacts
install-sudoers.shinstalls/uninstalls the passwordless disk-builder sudoers rule

When Phase 0 is complete

Phase 0 is complete when all of these have worked:

  • make doctor
  • make phase 002
  • make phase 003
  • make phase 004
  • make phase 005
  • make phase 006

At that point we know:

  1. we can boot a musl forge,
  2. we can build the AerynOS tools on musl,
  3. we can build a valid .stone,
  4. we can create a local Moss repo,
  5. we can install/remove packages with real Moss states,
  6. we can roll back to an older state.

Only after this does Phase 1 make sense: real ONIX recipe/repo bootstrap.