Skip to Content
Viewing feat/v0.5-runtime docs — not the stable branch. Changes vs main · Go to main
axiomOSfeat/v0.5-runtimeTesting & VerificationOverview

Testing Overview

Relevant source files

axiomOS testing is layered by what can be trusted at each level. Host tests cover everything extractable into no_std crates; QEMU smoke tests cover boot and in-guest probes; fuzzing and Miri cover adversarial and unsafe surfaces; Lean proofs cover a small slice of the verifier’s abstract domain; and Raspberry Pi 5 behavior is validated manually.

There is no hardware-in-the-loop CI; Pi 5 testing is manual (README, issue 76). docs/operations/release-verification.md says a local pass must not be taken as physical HIL, independent review, a ForgeFPGA bitstream, or robot-level evidence.

The managed runtime is covered by software, host and QEMU tests only. Physical qualification has not been run and actuation is disabled. See Qualification.

Strategy

LayerWhat it checksWhere
Static policyFormatting, clippy, unsafe-code ledger, inventory, boundaries, generated docs, ABI surface, error policycargo xtask check ..., scripts/verify/*.py
Host unit and integration testsKernel subsystems extracted as crates (kernel_bpf, kernel_vfs, kernel_elfloader, and others)cargo test -p ...
Concurrency modelsLoom models for the run queue and BPF epoch snapshotkernel_run_queue, kernel_bpf
MiriUndefined behavior in unsafe codecargo miri test per crate
QEMU smokeBoot reaches QEMU_BOOT_OK, init probes passaudit gate, scripts/test/smoke-bpf.sh
FuzzingVerifier, signed container, ring buffer, ELF loader, syscall arguments, bridge protocolcargo fuzz
Formal proofsTnum operator soundness in Leanformal/
Managed-runtime host and model testsLifecycle, interleavings, bundle authentication, installer, Shrike control and FPGA simulation, v0.5 reducerskernel/src/bpf/*_tests.rs, firmware/shrike/simulation/tests, tests/scripts/test_v05_*.py (see Tests)
Hardware validationGPIO, e-stop, PWM, timing on real boardsscripts/hil/, manual runbook

The kernel binary cannot run standard Rust unit tests because it uses a custom linker script. CONTRIBUTING.md therefore asks that new functionality be extracted into separate host-testable crates where possible.

Gate flow

Commands

From docs/operations/testing.md:

cargo xtask check inventory cargo xtask check boundary cargo xtask check docs cargo xtask check all --profile quick --no-qemu cargo xtask check all --profile full

Substantial runs retain the command, environment, commit, results, summary and logs under ignored artifacts/runs/ directories.

Pages

PageCovers
TestsHost tests, kernel tests, script tests, smoke, fuzzing
CI and gatesManifests, profiles, xtask checks, GitHub workflows
Formal verificationLean tnum proofs
Hardware-in-the-loopHIL scripts and manual Pi 5 validation
Last updated on