# Testing PhotonCloud treats VM-first validation as the canonical local proof path. ## Canonical Validation ```bash nix run ./nix/test-cluster#cluster -- fresh-smoke ``` This flow: - builds all six VM images on the host - boots the cluster in dependency order - validates control-plane, worker, gateway, storage, and fault-injection behavior - proves that `deployer` seeds scheduler-managed native services directly from declarative Nix cluster state ## Publishable Checks ```bash nix run ./nix/test-cluster#cluster -- fresh-smoke nix run ./nix/test-cluster#cluster -- fresh-matrix nix run ./nix/test-cluster#cluster -- fresh-bench-storage nix build .#checks.x86_64-linux.deployer-vm-smoke ``` Use these three commands as the release-facing local proof set: - `fresh-smoke`: whole-cluster readiness, core behavior, and fault injection - `fresh-matrix`: composed service scenarios such as `prismnet + flashdns + fiberlb` and PrismNet-backed VM hosting bundles with `plasmavmc + coronafs + lightningstor` - `fresh-bench-storage`: CoronaFS local-vs-shared-volume throughput, cross-worker volume visibility, and LightningStor large/small-object throughput capture - `deployer-vm-smoke`: prebuilt NixOS system closure handoff into `nix-agent`, proving host rollout can activate a host-built target without guest-side compilation ## Operational Commands ```bash nix run ./nix/test-cluster#cluster -- status nix run ./nix/test-cluster#cluster -- logs node01 nix run ./nix/test-cluster#cluster -- ssh node04 nix run ./nix/test-cluster#cluster -- matrix nix run ./nix/test-cluster#cluster -- bench-storage nix run ./nix/test-cluster#cluster -- fresh-matrix nix run ./nix/test-cluster#cluster -- fresh-bench-storage nix run ./nix/test-cluster#cluster -- stop nix run ./nix/test-cluster#cluster -- clean ``` ## Validation Philosophy - package unit tests are useful but not sufficient - host-built VM clusters are the main integration signal - distributed storage and virtualization paths must be checked under failure, not only at steady state ## Legacy Note Older manual launch scripts under `baremetal/vm-cluster` are archived only for historical reference. They are not the release-validation path.