# Development and verification ## Fast host checks ```sh cargo test --workspace --offline cargo clippy --workspace --all-targets --offline --exclude kaptan-geprc-f722-v2 --exclude kaptan-kakute-f7-mini-v3 -- -D warnings cargo clippy -p platform-stm32f7 --all-targets --offline -- -D warnings cargo fmt --check git diff --check ``` ## Target checks ```sh cargo check -p kaptan-geprc-f722-v2 --release --target thumbv7em-none-eabihf --offline cargo check -p kaptan-kakute-f7-mini-v3 --release --target thumbv7em-none-eabihf --offline ``` ## Strict core coverage ```sh scripts/report-test-coverage.sh ``` The strict gate requires 100% line and branch coverage for `kaptan-math`, `kaptan-navigation`, `kaptan-control`, and `kaptan-safety`. It isolates each core package's coverage artifacts, unions LCOV source-line records, and uses full LLVM source spans to merge generic branch instantiations without lowering the gate. ## Simulation acceptance ```sh python3 tools/sitl/world-structure-test.py python3 -m unittest tools/sitl/test_kaptan_sim.py tools/sitl/e2e-smoke.sh ``` The Docker smoke is intentionally separate from host unit tests because it builds the pinned base images, Rust binary, Gazebo plugin, and full loopback plant.