Repository navigation
Description
Part of #633. Harness work: #636, #637, and #638. Mere/dinit boot configuration and service lifecycle validation belong to #634; package-manager changes belong to jhuntwork/mere#63.
Keep developer VM tooling under test/qemu, using POSIX shell where practical and explicit inputs.
Completed and observed:
- Publish the namespace smoke harness and usage documentation (Add a QEMU guest namespace test harness #636, merged).
- Verify guest user/group ID mapping, mount/PID namespaces, and private procfs visibility with QEMU TCG.
- Publish a disk-backed Mere/dinit boot harness (Add a disk-backed Mere dinit boot test #637, merged): no initramfs or privileged host mounts.
- Implement explicit fresh-root preparation and saved-input replay (Make QEMU guest preparation explicit and replayable #638; maintainer reports merging). Mere installs directly into the image tree; logs and inputs remain outside it. Both fresh setup and replayed roots booted and powered off in local tests.
Implemented and locally verified in #639 (open; not merged): run Mere inside the guest
- Include an explicit Mere binary plus its required runtime inputs in the guest and record their identities.
- Enter a prepared profile through mere shell and verify a command actually runs inside its isolated environment.
- Build a minimal local recipe through Mere's normal isolated build path; require a script marker and validate the resulting package artifact.
- Check that an intentionally failing recipe returns failure rather than producing a false pass.
- Preserve guest logs, command outcomes, and input records; make failure propagate to the host launcher.
Fresh setup and saved-input replay passed Mere profile entry, isolated recipe build, decompression/extraction and archive payload validation, expected failure (Mere exit 1 with recipe exit code 7), and dinit power-off. The guest has no network device and uses upstream signed metadata through a local file repository. Dynamic ELF rejection also passed. #639 contains the harness integration and documentation; these results are local guest validation, not a claim of merge or CI completion.
Observed inputs so far: QEMU 8.2.2 TCG; Ubuntu kernel 6.8.0-138-generic and static BusyBox 1.36.1 for namespace probes; Mere linux 6.18.42-2, BusyBox 1.37.0-10, and dinit 0.22.1-1 for disk boot. The guest test graph completed and requested kernel power-off through dinit.
Developer test tooling is separate from end-user image tools. A test-only initramfs does not establish a distro requirement. Saved-input replay depends on repository retention. Keep implementation, merge status, and guest validation distinct.
Activity
Add a QEMU guest namespace test harness
Make QEMU guest preparation explicit and replayable