Skip to content

chore: workspace cfg(kani) lint config + v1.0 rollout audit#47

Merged
avrabe merged 2 commits into
mainfrom
chore/v0.19.2-sweep
May 27, 2026
Merged

chore: workspace cfg(kani) lint config + v1.0 rollout audit#47
avrabe merged 2 commits into
mainfrom
chore/v0.19.2-sweep

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented May 27, 2026

Summary

Three trailing-edge cleanups noticed during v0.19.0–v0.19.2 work.

1. cfg(kani) warnings silenced

Every engine using `#[cfg(kani)]` for its Kani model-checker harness was emitting an `unexpected_cfgs` warning on every `cargo build`. Added a workspace-level lint config:

```toml
[workspace.lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(kani)'] }
```

Each engine inherits via `[lints] workspace = true`. 17 crates wired (ccsds, cfdp, ci, cs, ds, fm, hk, hs, lc, md, mm, nid, sc, sca, sch, tbl, to). Build noise gone, kani path still recognised under `cargo kani`.

2. v1.0 rollout audit

Removed `Check-It qualified checkers` line. Check-It was pre-v0.7 aspirational; it isn't in the actual PulseEngine toolchain (rivet/spar/witness/sigil/meld/synth/loom/kiln/smithy/wohl). Replaced with the v0.14.3-derived TQ-record path: DO-330-grade Tool Qualification Reports for Verus/Kani/miri/witness/spar.

3. wasmtime-wasi preview1 → p1 (cherry-pick from v0.19.2 PR #46)

PR #44 (Dependabot upgrade of wasmtime-wasi 27 → 45) merged with main still importing the old `preview1` module path. Witness-wasi-harness needs to use `p1` instead. Identical fix shipped on the v0.19.2 PR #46; whichever lands first carries it (the other becomes a no-op via cherry-pick deduplication on rebase).

Verification

  • `cargo build --workspace` → 0 cfg(kani) warnings (was 17).
  • `cargo test --workspace --all-targets` → 405 passing.
  • `rivet validate` → PASS.

🤖 Generated with Claude Code

avrabe and others added 2 commits May 27, 2026 06:29
…rename

PR #44 (Dependabot upgrade from wasmtime-wasi 27 to 45) merged with main
still importing wasmtime_wasi::preview1, breaking all CI jobs that hit
witness-wasi-harness compile (Test ubuntu/macos/windows, llvm-cov,
Verification gate).

Diagnosis: wasmtime-wasi 44 renamed the module preview1 → p1; the type
WasiP1Ctx now lives at wasmtime_wasi::p1::WasiP1Ctx. The fix is a single
import line:

  -use wasmtime_wasi::preview1::{self, WasiP1Ctx};
  +use wasmtime_wasi::p1::{self as preview1, WasiP1Ctx};

The 'as preview1' alias keeps the rest of the file unchanged.

Also: Cargo.toml bumped to wasmtime = '45' / wasmtime-wasi = '45' to
match main's actual resolution (PR #44 only updated wasmtime-wasi, not
wasmtime; the two MUST stay in lock-step or wasmtime trait impls don't
satisfy the wasmtime-wasi signatures).

Verification:
  - cargo build -p witness-wasi-harness --tests → green.
  - cargo test --workspace --all-targets → 405 passing (preserved).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Three small cleanups for trailing-edge tidiness:

1. **cfg(kani) warnings** — every engine using #[cfg(kani)] for its Kani
   model-checker harness was emitting an 'unexpected_cfgs' warning on
   every cargo build (default rustc behavior). Added a workspace-level
   [workspace.lints.rust] check-cfg = ['cfg(kani)'] declaration; engines
   inherit via [lints] workspace = true. Build noise gone, kani path
   still recognised.

   Crates wired: ccsds, cfdp, ci, cs, ds, fm, hk, hs, lc, md, mm, nid,
   sc, sca, sch, tbl, to.

2. **v1.0 rollout audit** — removed 'Check-It qualified checkers' line.
   Check-It was pre-v0.7 aspirational; it isn't in the actual PulseEngine
   toolchain (rivet/spar/witness/sigil/meld/synth/loom/kiln/smithy/wohl).
   Replaced with the v0.14.3-derived TQ-record path (DO-330-grade Tool
   Qualification Reports for Verus/Kani/miri/witness/spar).

3. **Inherited from cherry-pick of v0.19.2 fix** — wasmtime-wasi 45's
   preview1 → p1 rename. Required because PR #44 (Dependabot 27→45)
   landed without updating the harness import. Identical to the fix on
   v0.19.2 branch; whichever lands first carries it.

Verification:
  - cargo build --workspace → 0 cfg(kani) warnings (was 17).
  - cargo test --workspace --all-targets → 405 passing.
  - rivet validate → PASS.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

running 17 tests
test engine::proptests::compare_matches_rust ... ok
test engine::tests::geofence_boundary_inclusive ... ok
test engine::proptests::disabled_never_fires ... ok
test engine::tests::geofence_inside_does_not_trip ... ok
test engine::proptests::persistence_requires_consecutive ... ok
test engine::tests::geofence_outside_d_trips ... ok
test engine::tests::geofence_outside_e_trips ... ok
test engine::tests::geofence_outside_n_trips_once ... ok
test engine::tests::test_bounded ... ok
test engine::tests::test_disabled ... ok
test engine::tests::test_empty ... ok
test engine::tests::test_gt_violation ... ok
test engine::tests::test_ops ... ok
test engine::tests::test_persistence ... ok
test engine::tests::test_persistence_reset ... ok
test engine::tests::test_sensor_filter ... ok
test engine::proptests::output_always_bounded ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 1 test
test tests::deterministic_geofence_catches_spoof_and_triggers_rtl ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 16 filtered out; finished in 0.02s

running 9 tests
test tests::args_default_ports_for_gcs_mode ... ok
test tests::args_default_ports_for_vehicle_mode ... ok
test tests::args_rejects_missing_mode ... ok
test tests::args_rejects_unknown_mode ... ok
test tests::handle_inbound_propagates_bad_crc ... ok
test tests::handle_inbound_rejects_unsupported_message ... ok
test tests::handle_inbound_truncated ... ok
test tests::current_timestamp_is_monotone_within_a_run ... ok
test tests::vehicle_and_gcs_exchange_heartbeats_over_udp ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s

[falcon-hello-demo] building release binary...
[falcon-hello-demo] launching gcs on 127.0.0.1:14700
[falcon-hello-demo] launching vehicle (4 Hz × 4s)
[falcon-hello-demo] vehicle sent 13 heartbeat(s)
[falcon-hello-demo] gcs received 13 heartbeat(s)
[falcon-hello-demo] PASS

running 16 tests
test tests::cross_of_parallel_is_zero ... ok
test tests::ekf_p01_tick_preserves_unit_quaternion ... ok
test tests::ekf_p02_extreme_accel_does_not_produce_nan ... ok
test tests::ekf_p02_zero_accel_does_not_produce_nan ... ok
test tests::ekf_p03_innovation_monotone_with_tilt_disagreement ... ok
test tests::ekf_p04_static_rest_converges_to_gravity_aligned ... ok
test tests::ekf_p05_pure_yaw_gyro_does_not_destabilise_attitude ... ok
test tests::fresh_estimator_is_at_identity ... ok
test tests::normalise_nan_returns_none ... ok
test tests::normalise_zero_returns_none ... ok
test tests::quat_mul_identity_left ... ok
test tests::quat_mul_identity_right ... ok
test tests::rotate_inverse_identity_passes_through ... ok
test tests::ekf_p01_property ... ok
test tests::bias_estimate_bounded ... ok
test tests::ekf_p02_property_sequence ... ok

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 16 tests
test tests::cross_of_parallel_is_zero ... ok
test tests::ekf_p01_tick_preserves_unit_quaternion ... ok
test tests::ekf_p02_extreme_accel_does_not_produce_nan ... ok
test tests::ekf_p02_zero_accel_does_not_produce_nan ... ok
test tests::ekf_p03_innovation_monotone_with_tilt_disagreement ... ok
test tests::ekf_p04_static_rest_converges_to_gravity_aligned ... ok
test tests::ekf_p05_pure_yaw_gyro_does_not_destabilise_attitude ... ok
test tests::fresh_estimator_is_at_identity ... ok
test tests::ekf_p01_property ... ok
test tests::normalise_nan_returns_none ... ok
test tests::normalise_zero_returns_none ... ok
test tests::quat_mul_identity_left ... ok
test tests::quat_mul_identity_right ... ok
test tests::rotate_inverse_identity_passes_through ... ok
test tests::ekf_p02_property_sequence ... ok
test tests::bias_estimate_bounded ... ok

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 16 tests
test tests::cross_of_parallel_is_zero ... ok
test tests::ekf_p01_tick_preserves_unit_quaternion ... ok
test tests::ekf_p02_extreme_accel_does_not_produce_nan ... ok
test tests::ekf_p02_zero_accel_does_not_produce_nan ... ok
test tests::ekf_p03_innovation_monotone_with_tilt_disagreement ... ok
test tests::ekf_p04_static_rest_converges_to_gravity_aligned ... ok
test tests::ekf_p05_pure_yaw_gyro_does_not_destabilise_attitude ... ok
test tests::fresh_estimator_is_at_identity ... ok
test tests::normalise_nan_returns_none ... ok
test tests::normalise_zero_returns_none ... ok
test tests::quat_mul_identity_left ... ok
test tests::quat_mul_identity_right ... ok
test tests::rotate_inverse_identity_passes_through ... ok
test tests::bias_estimate_bounded ... ok
test tests::ekf_p01_property ... ok
test tests::ekf_p02_property_sequence ... ok

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.78s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 5 tests
test tests::phases_are_consistent_with_trajectory_duration ... ok
test tests::quat_error_is_zero_for_identical_quaternions ... ok
test tests::rotate_ned_to_body_identity_passes_through ... ok
test tests::deterministic_bench_passes ... ok
test tests::noisy_bench_passes_loose ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

--- noise=0 (deterministic) ---
samples 5000
RMS error (full) 3.306°
RMS error (steady) 3.312° (last 2.5 s)
peak error 19.804°
final error 3.023°
convergence time 0.68s (first sustained <5°)
estimator wall time 628 µs
NaN/∞ seen false
falcon-ekf-bench: PASS

running 17 tests
test engine::proptests::compare_matches_rust ... ok
test engine::proptests::disabled_never_fires ... ok
test engine::tests::geofence_boundary_inclusive ... ok
test engine::tests::geofence_inside_does_not_trip ... ok
test engine::proptests::persistence_requires_consecutive ... ok
test engine::tests::geofence_outside_d_trips ... ok
test engine::tests::geofence_outside_e_trips ... ok
test engine::tests::geofence_outside_n_trips_once ... ok
test engine::tests::test_bounded ... ok
test engine::tests::test_disabled ... ok
test engine::tests::test_empty ... ok
test engine::tests::test_gt_violation ... ok
test engine::tests::test_ops ... ok
test engine::tests::test_persistence ... ok
test engine::tests::test_persistence_reset ... ok
test engine::tests::test_sensor_filter ... ok
test engine::proptests::output_always_bounded ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test tests::high_thrust_with_torque_saturates_gracefully ... ok
test tests::mix_p01_zero_command_gives_thrust_only ... ok
test tests::mix_p02_outputs_in_unit_interval ... ok
test tests::mix_p03_pure_pitch_drives_front_and_back_motors_opposite ... ok
test tests::mix_p03_pure_roll_drives_diagonal_motor_pairs_opposite ... ok
test tests::mix_p03_pure_yaw_drives_cw_and_ccw_pairs_opposite ... ok
test tests::nan_input_does_not_propagate ... ok
test tests::negative_thrust_clipped_to_zero ... ok
test tests::mix_p03_property_single_axis ... ok
test tests::mix_p02_property ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 13 tests
test tests::at_zero_error_output_is_zero ... ok
test tests::fresh_pid_has_zero_state ... ok
test tests::negative_error_drives_negative_torque ... ok
test tests::out_of_range_dt_clamped_safely ... ok
test tests::positive_error_drives_positive_torque ... ok
test tests::rate_p02_infinite_setpoint_does_not_propagate ... ok
test tests::rate_p02_nan_input_does_not_propagate ... ok
test tests::output_clamped_to_torque_max ... ok
test tests::rate_p03_step_response_drives_error_to_zero ... ok
test tests::reset_clears_state ... ok
test tests::rate_p02_property ... ok
test tests::rate_p01_anti_windup_holds_integral_at_bound ... ok
test tests::rate_p01_property ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 17 tests
test tests::deterministic_disturbance_recovers ... ok
test tests::deterministic_attitude_cascade_passes ... ok
test tests::deterministic_hover_settles ... ok
test tests::deterministic_step_response_passes ... ok
test tests::deterministic_mission_passes ... ok
test tests::ekf_watchdog_catches_intermittent_fault ... ok
test tests::ekf_watchdog_debounces_transient_spikes ... ok
test tests::ekf_watchdog_ignores_healthy_innovation ... ok
test tests::deterministic_geofence_catches_spoof_and_triggers_rtl ... ok
test tests::noisy_attitude_cascade_still_passes ... ok
test tests::deterministic_fault_triggers_rtl ... ok
test tests::noisy_step_response_still_passes ... ok
test tests::plant_step_full_preserves_unit_quaternion_and_finite_state ... ok
test tests::plant_step_preserves_unit_quaternion ... ok
test tests::noisy_mission_still_reaches_waypoint ... ok
test tests::noisy_fault_still_triggers_rtl ... ok
test tests::deterministic_untethered_mission_visits_all_waypoints ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s

running 7 tests
test physics::tests::gazebo_stub_compiles_and_returns_zeros ... ok
test physics::tests::mock_physics_at_rest_stays_quiet ... ok
test physics::tests::mock_physics_hover_with_full_thrust_climbs ... ok
test physics::tests::mock_physics_measure_returns_sensible_imu ... ok
test tests::gazebo_stub_does_not_panic ... ok
test tests::mock_backend_climbs_under_full_thrust ... ok
test tests::evidence_sink_produces_log_and_csv ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 9 tests
test engine::tests::test_action_types ... ok
test engine::tests::test_alert_count_bounded ... ok
test engine::tests::test_counter_incrementing_no_alert ... ok
test engine::tests::test_disabled_app_ignored ... ok
test engine::tests::test_counter_reset_on_activity ... ok
test engine::tests::test_empty_table ... ok
test engine::tests::test_multiple_apps ... ok
test engine::tests::test_stalled_app_alert_after_max_miss ... ok
test engine::tests::test_table_full ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 17 tests
test tests::deterministic_disturbance_recovers ... ok
test tests::deterministic_attitude_cascade_passes ... ok
test tests::deterministic_hover_settles ... ok
test tests::deterministic_step_response_passes ... ok
test tests::deterministic_mission_passes ... ok
test tests::ekf_watchdog_catches_intermittent_fault ... ok
test tests::ekf_watchdog_debounces_transient_spikes ... ok
test tests::ekf_watchdog_ignores_healthy_innovation ... ok
test tests::deterministic_fault_triggers_rtl ... ok
test tests::deterministic_geofence_catches_spoof_and_triggers_rtl ... ok
test tests::noisy_attitude_cascade_still_passes ... ok
test tests::noisy_step_response_still_passes ... ok
test tests::plant_step_full_preserves_unit_quaternion_and_finite_state ... ok
test tests::plant_step_preserves_unit_quaternion ... ok
test tests::noisy_mission_still_reaches_waypoint ... ok
test tests::noisy_fault_still_triggers_rtl ... ok
test tests::deterministic_untethered_mission_visits_all_waypoints ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s

Kani-TQ.md
README.md
Verus-TQ.md
miri-TQ.md
spar-TQ.md
witness-TQ.md
64 docs/dossier/tool-qualification/Kani-TQ.md
64 docs/dossier/tool-qualification/README.md
75 docs/dossier/tool-qualification/Verus-TQ.md
82 docs/dossier/tool-qualification/miri-TQ.md
85 docs/dossier/tool-qualification/spar-TQ.md
78 docs/dossier/tool-qualification/witness-TQ.md
448 total

running 20 tests
test bitpack::tests::bitpack_basic_id_packs_id_and_ua_type_in_same_byte ... ok
test bitpack::tests::bitpack_basic_id_round_trip ... ok
test bitpack::tests::bitpack_decoder_rejects_unknown_protocol_version ... ok
test bitpack::tests::bitpack_location_rejects_oversize_track_byte ... ok
test bitpack::tests::bitpack_location_idempotent_after_canonicalize ... ok
test bitpack::tests::bitpack_location_rejects_wrong_message_type ... ok
test bitpack::tests::bitpack_location_round_trip_on_canonical ... ok
test tests::basic_id_header_byte_is_well_formed ... ok
test tests::basic_id_round_trip ... ok
test tests::decoder_rejects_unknown_protocol_version ... ok
test tests::location_rejects_out_of_range_timestamp ... ok
test tests::location_rejects_out_of_range_track ... ok
test tests::location_rejects_wrong_message_type ... ok
test tests::location_round_trip ... ok
test bitpack::tests::proptest_bitpack_location_round_trip_on_canonical ... ok
test bitpack::tests::proptest_bitpack_basic_id_round_trip ... ok
test bitpack::tests::proptest_bitpack_decoder_never_panics ... ok
test tests::proptest_basic_id_round_trip ... ok
test tests::proptest_decoder_never_panics ... ok
test tests::proptest_location_round_trip_in_range ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 20 tests
test bitpack::tests::bitpack_basic_id_packs_id_and_ua_type_in_same_byte ... ok
test bitpack::tests::bitpack_basic_id_round_trip ... ok
test bitpack::tests::bitpack_decoder_rejects_unknown_protocol_version ... ok
test bitpack::tests::bitpack_location_idempotent_after_canonicalize ... ok
test bitpack::tests::bitpack_location_rejects_oversize_track_byte ... ok
test bitpack::tests::bitpack_location_rejects_wrong_message_type ... ok
test bitpack::tests::bitpack_location_round_trip_on_canonical ... ok
test tests::basic_id_header_byte_is_well_formed ... ok
test tests::basic_id_round_trip ... ok
test tests::decoder_rejects_unknown_protocol_version ... ok
test tests::location_rejects_out_of_range_timestamp ... ok
test tests::location_rejects_out_of_range_track ... ok
test tests::location_rejects_wrong_message_type ... ok
test tests::location_round_trip ... ok
test bitpack::tests::proptest_bitpack_location_round_trip_on_canonical ... ok
test bitpack::tests::proptest_bitpack_basic_id_round_trip ... ok
test tests::proptest_basic_id_round_trip ... ok
test bitpack::tests::proptest_bitpack_decoder_never_panics ... ok
test tests::proptest_location_round_trip_in_range ... ok
test tests::proptest_decoder_never_panics ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.29s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 1 test
test tests::deterministic_untethered_mission_visits_all_waypoints ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 16 filtered out; finished in 0.04s

running 10 tests
test hackrf::tests::gps_sdr_sim_argv_shape_is_stable ... ok
test hackrf::tests::hackrf_argv_shape_is_stable ... ok
test mavlink::tests::altitude_translates_to_down ... ok
test mavlink::tests::build_frame_carries_correct_message_id ... ok
test mavlink::tests::home_projects_to_origin ... ok
test mavlink::tests::mavlink_bench_no_violation_no_latch ... ok
test mavlink::tests::mavlink_bench_trips_and_dispatches_on_spoof ... ok
test mavlink::tests::one_hundred_metres_north_projects_to_10000_cm_n ... ok
test stub::tests::stub_bench_no_violation_no_latch ... ok
test stub::tests::stub_bench_trips_and_dispatches ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

falcon-hitl-rfspoof: backend=stub duration=5s
fence: ±100 m × ±100 m × ±100 m (NED, centred on home)
verdict = HitlVerdict {
backend: "stub",
duration_s: 5.0,
steps: 500,
latched: true,
latched_at_s: Some(
1.9999985,
),
rtl_dispatched: true,
rtl_frame_sent: true,
spoof_first_seen_at_s: Some(
1.9999985,
),
failure: None,
}
PASS

running 10 tests
test tests::att_p01_quaternion_error_is_unit_for_unit_inputs ... ok
test tests::att_p03_small_angle_within_one_percent ... ok
test tests::att_p01_shortest_arc_q_err_scalar_non_negative ... ok
test tests::degenerate_input_does_not_propagate_nan ... ok
test tests::identity_setpoint_at_identity_gives_zero_rate ... ok
test tests::negative_roll_setpoint_gives_negative_x_rate ... ok
test tests::rate_command_clamped_to_rate_max ... ok
test tests::sqrt_f32_matches_libm_within_tolerance ... ok
test tests::twenty_deg_roll_setpoint_gives_positive_x_rate ... ok
test tests::att_p01_property ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test tests::att_p01_shortest_arc_q_err_scalar_non_negative ... ok
test tests::att_p01_quaternion_error_is_unit_for_unit_inputs ... ok
test tests::att_p03_small_angle_within_one_percent ... ok
test tests::degenerate_input_does_not_propagate_nan ... ok
test tests::identity_setpoint_at_identity_gives_zero_rate ... ok
test tests::negative_roll_setpoint_gives_negative_x_rate ... ok
test tests::rate_command_clamped_to_rate_max ... ok
test tests::sqrt_f32_matches_libm_within_tolerance ... ok
test tests::twenty_deg_roll_setpoint_gives_positive_x_rate ... ok
test tests::att_p01_property ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test tests::att_p01_quaternion_error_is_unit_for_unit_inputs ... ok
test tests::att_p01_shortest_arc_q_err_scalar_non_negative ... ok
test tests::att_p03_small_angle_within_one_percent ... ok
test tests::degenerate_input_does_not_propagate_nan ... ok
test tests::negative_roll_setpoint_gives_negative_x_rate ... ok
test tests::rate_command_clamped_to_rate_max ... ok
test tests::sqrt_f32_matches_libm_within_tolerance ... ok
test tests::identity_setpoint_at_identity_gives_zero_rate ... ok
test tests::twenty_deg_roll_setpoint_gives_positive_x_rate ... ok
test tests::att_p01_property ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 17 tests
test tests::deterministic_disturbance_recovers ... ok
test tests::deterministic_attitude_cascade_passes ... ok
test tests::deterministic_hover_settles ... ok
test tests::deterministic_step_response_passes ... ok
test tests::deterministic_mission_passes ... ok
test tests::ekf_watchdog_catches_intermittent_fault ... ok
test tests::ekf_watchdog_debounces_transient_spikes ... ok
test tests::ekf_watchdog_ignores_healthy_innovation ... ok
test tests::deterministic_fault_triggers_rtl ... ok
test tests::deterministic_geofence_catches_spoof_and_triggers_rtl ... ok
test tests::noisy_attitude_cascade_still_passes ... ok
test tests::noisy_step_response_still_passes ... ok
test tests::plant_step_full_preserves_unit_quaternion_and_finite_state ... ok
test tests::plant_step_preserves_unit_quaternion ... ok
test tests::noisy_mission_still_reaches_waypoint ... ok
test tests::noisy_fault_still_triggers_rtl ... ok
test tests::deterministic_untethered_mission_visits_all_waypoints ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s

--- scenario: attitude ---
samples 5000
final ω (rad/s) [-0.0001, +0.0000, +0.0000]
peak attitude err 19.989°
RMS error (steady) 0.029° (last 1s)
convergence time 0.352s
loop wall time 873 µs
NaN/∞ seen false
outcome PASS
falcon-sitl-hover: PASS

running 55 tests
test command_long::tests::crc_extra_is_152 ... ok
test command_long::tests::decode_rejects_long_payload ... ok
test command_long::tests::decode_rejects_short_payload ... ok
test command_long::tests::field_offsets_match_spec ... ok
test command_long::tests::msg_id_is_76 ... ok
test command_long::tests::payload_length_is_33 ... ok
test command_long::tests::round_trip_rtl ... ok
test command_long::tests::round_trip_with_params ... ok
test command_long::tests::rtl_builder_has_zero_params ... ok
test command_long::tests::rtl_command_id_is_20 ... ok
test crc::tests::accumulate_slice_equals_individual ... ok
test crc::tests::empty_input_keeps_seed ... ok
test crc::tests::mavlink_reference_vector_123456789 ... ok
test crc::tests::order_matters ... ok
test crc::tests::single_byte_zero ... ok
test frame::tests::encode_rejects_payload_length_mismatch ... ok
test frame::tests::encode_rejects_too_small_output ... ok
test frame::tests::frame_msg_id_three_bytes_little_endian ... ok
test frame::tests::frame_payload_length_byte_matches ... ok
test frame::tests::frame_starts_with_magic_v2 ... ok
test frame::tests::peek_message_id_finds_heartbeat ... ok
test frame::tests::peek_rejects_v1_magic ... ok
test frame::tests::rejects_bad_crc ... ok
test frame::tests::rejects_truncated_header ... ok
test frame::tests::rejects_truncated_payload ... ok
test frame::tests::rejects_v1_magic ... ok
test frame::tests::rejects_wrong_crc_extra ... ok
test frame::tests::round_trip_heartbeat_through_frame ... ok
test global_position_int::tests::crc_extra_is_104 ... ok
test global_position_int::tests::decode_rejects_empty ... ok
test global_position_int::tests::decode_rejects_long_payload ... ok
test global_position_int::tests::decode_rejects_short_payload ... ok
test global_position_int::tests::field_offsets_match_spec ... ok
test global_position_int::tests::msg_id_is_33 ... ok
test global_position_int::tests::payload_length_is_28 ... ok
test command_long::tests::round_trip_arbitrary ... ok
test global_position_int::tests::round_trip_extremes ... ok
test global_position_int::tests::round_trip_sample ... ok
test global_position_int::tests::round_trip_zero ... ok
test global_position_int::tests::round_trip_arbitrary ... ok
test heartbeat::tests::crc_extra_is_fifty ... ok
test heartbeat::tests::custom_mode_little_endian ... ok
test heartbeat::tests::decode_rejects_long_payload ... ok
test heartbeat::tests::decode_empty_payload ... ok
test heartbeat::tests::field_offsets_match_spec ... ok
test heartbeat::tests::decode_rejects_short_payload ... ok
test heartbeat::tests::mav_mode_flag_or_and_contains ... ok
test heartbeat::tests::payload_length_constant ... ok
test heartbeat::tests::round_trip_falcon_default ... ok
test heartbeat::tests::round_trip_gcs_default ... ok
test heartbeat::tests::round_trip_max_values ... ok
test heartbeat::tests::round_trip_zero ... ok
test frame::tests::encode_parse_round_trip_arbitrary_seq ... ok
test heartbeat::tests::round_trip_arbitrary ... ok
test frame::tests::parser_never_panics ... ok

test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test hackrf::tests::gps_sdr_sim_argv_shape_is_stable ... ok
test hackrf::tests::hackrf_argv_shape_is_stable ... ok
test mavlink::tests::build_frame_carries_correct_message_id ... ok
test mavlink::tests::home_projects_to_origin ... ok
test mavlink::tests::altitude_translates_to_down ... ok
test mavlink::tests::mavlink_bench_no_violation_no_latch ... ok
test mavlink::tests::one_hundred_metres_north_projects_to_10000_cm_n ... ok
test mavlink::tests::mavlink_bench_trips_and_dispatches_on_spoof ... ok
test stub::tests::stub_bench_no_violation_no_latch ... ok
test stub::tests::stub_bench_trips_and_dispatches ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 7 tests
test physics::tests::gazebo_stub_compiles_and_returns_zeros ... ok
test physics::tests::mock_physics_at_rest_stays_quiet ... ok
test physics::tests::mock_physics_hover_with_full_thrust_climbs ... ok
test physics::tests::mock_physics_measure_returns_sensible_imu ... ok
test tests::gazebo_stub_does_not_panic ... ok
test tests::mock_backend_climbs_under_full_thrust ... ok
test tests::evidence_sink_produces_log_and_csv ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

falcon-sitl-gz: backend=mock scenario=hover duration=5s
verdict: backend=mock steps=500 climb=48.37 m (min=0.00 max=48.37) wall=0.00s
PASS

running 13 tests
test tests::at_zero_error_output_is_zero ... ok
test tests::fresh_pid_has_zero_state ... ok
test tests::out_of_range_dt_clamped_safely ... ok
test tests::positive_error_drives_positive_torque ... ok
test tests::negative_error_drives_negative_torque ... ok
test tests::rate_p02_infinite_setpoint_does_not_propagate ... ok
test tests::rate_p02_nan_input_does_not_propagate ... ok
test tests::output_clamped_to_torque_max ... ok
test tests::rate_p03_step_response_drives_error_to_zero ... ok
test tests::reset_clears_state ... ok
test tests::rate_p02_property ... ok
test tests::rate_p01_anti_windup_holds_integral_at_bound ... ok
test tests::rate_p01_property ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 13 tests
test tests::at_zero_error_output_is_zero ... ok
test tests::fresh_pid_has_zero_state ... ok
test tests::negative_error_drives_negative_torque ... ok
test tests::out_of_range_dt_clamped_safely ... ok
test tests::positive_error_drives_positive_torque ... ok
test tests::rate_p02_infinite_setpoint_does_not_propagate ... ok
test tests::rate_p02_nan_input_does_not_propagate ... ok
test tests::output_clamped_to_torque_max ... ok
test tests::rate_p03_step_response_drives_error_to_zero ... ok
test tests::reset_clears_state ... ok
test tests::rate_p02_property ... ok
test tests::rate_p01_property ... ok
test tests::rate_p01_anti_windup_holds_integral_at_bound ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 13 tests
test tests::at_zero_error_output_is_zero ... ok
test tests::fresh_pid_has_zero_state ... ok
test tests::negative_error_drives_negative_torque ... ok
test tests::out_of_range_dt_clamped_safely ... ok
test tests::positive_error_drives_positive_torque ... ok
test tests::rate_p02_infinite_setpoint_does_not_propagate ... ok
test tests::rate_p02_nan_input_does_not_propagate ... ok
test tests::output_clamped_to_torque_max ... ok
test tests::rate_p03_step_response_drives_error_to_zero ... ok
test tests::reset_clears_state ... ok
test tests::rate_p01_anti_windup_holds_integral_at_bound ... ok
test tests::rate_p02_property ... ok
test tests::rate_p01_property ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.60s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 17 tests
test tests::deterministic_disturbance_recovers ... ok
test tests::deterministic_attitude_cascade_passes ... ok
test tests::deterministic_hover_settles ... ok
test tests::deterministic_step_response_passes ... ok
test tests::deterministic_mission_passes ... ok
test tests::ekf_watchdog_catches_intermittent_fault ... ok
test tests::ekf_watchdog_debounces_transient_spikes ... ok
test tests::ekf_watchdog_ignores_healthy_innovation ... ok
test tests::deterministic_fault_triggers_rtl ... ok
test tests::deterministic_geofence_catches_spoof_and_triggers_rtl ... ok
test tests::noisy_attitude_cascade_still_passes ... ok
test tests::noisy_step_response_still_passes ... ok
test tests::plant_step_full_preserves_unit_quaternion_and_finite_state ... ok
test tests::plant_step_preserves_unit_quaternion ... ok
test tests::noisy_mission_still_reaches_waypoint ... ok
test tests::noisy_fault_still_triggers_rtl ... ok
test tests::deterministic_untethered_mission_visits_all_waypoints ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s

--- scenario: step ---
samples 5000
final ω (rad/s) [+0.5007, -0.3003, +0.4006]
peak ω above sp 0.0061 rad/s
overshoot 1.2 %
RMS error (steady) 0.0012 rad/s
convergence time 0.139s
loop wall time 717 µs
NaN/∞ seen false
outcome PASS
--- scenario: disturbance ---
samples 5000
final ω (rad/s) [+0.0000, -0.0042, +0.0000]
peak ω above sp 0.8958 rad/s
recovery time 0.141s after impulse
loop wall time 669 µs
NaN/∞ seen false
outcome PASS
--- scenario: hover ---
samples 5000
final ω (rad/s) [-0.0020, +0.0013, -0.0007]
peak ω above sp 0.7683 rad/s
convergence time 0.175s
loop wall time 741 µs
NaN/∞ seen false
outcome PASS
--- scenario: attitude ---
samples 5000
final ω (rad/s) [-0.0001, +0.0000, +0.0000]
peak attitude err 19.989°
RMS error (steady) 0.029° (last 1s)
convergence time 0.352s
loop wall time 882 µs
NaN/∞ seen false
outcome PASS
--- scenario: mission ---
samples 12000
final v (m/s NED) [-0.004, +0.000, +0.003]
peak distance error 10.000 m
final distance 0.010 m
RMS distance (steady)0.015 m (last 2s)
convergence time 4.045s
loop wall time 2404 µs
NaN/∞ seen false
outcome PASS
--- scenario: fault ---
samples 16000
final position (NED) [-37.92, +0.00, +137.55] m
peak EKF innovation 0.9521
RTL detection 0.047s after fault injection
loop wall time 6280 µs
NaN/∞ seen false
outcome PASS
--- scenario: untethered ---
samples 36000
final position (NED) [+0.00, -0.00, -0.01] m
worst waypoint min 0.082 m
final distance home 0.011 m
mission completed in 32.0s
loop wall time 14371 µs
NaN/∞ seen false
outcome PASS
--- scenario: geofence ---
samples 16000
final position (NED) [+9.99, +0.00, -0.02] m
peak true-N (truth) +16.35 m (fence at +15.00 m)
geofence violation at 5.834s
loop wall time 6264 µs
NaN/∞ seen false
outcome PASS
falcon-sitl-hover: PASS

running 55 tests
test command_long::tests::crc_extra_is_152 ... ok
test command_long::tests::decode_rejects_long_payload ... ok
test command_long::tests::decode_rejects_short_payload ... ok
test command_long::tests::field_offsets_match_spec ... ok
test command_long::tests::msg_id_is_76 ... ok
test command_long::tests::payload_length_is_33 ... ok
test command_long::tests::round_trip_rtl ... ok
test command_long::tests::round_trip_with_params ... ok
test command_long::tests::rtl_builder_has_zero_params ... ok
test command_long::tests::rtl_command_id_is_20 ... ok
test crc::tests::accumulate_slice_equals_individual ... ok
test crc::tests::empty_input_keeps_seed ... ok
test crc::tests::mavlink_reference_vector_123456789 ... ok
test crc::tests::order_matters ... ok
test crc::tests::single_byte_zero ... ok
test frame::tests::encode_rejects_payload_length_mismatch ... ok
test frame::tests::encode_rejects_too_small_output ... ok
test frame::tests::frame_msg_id_three_bytes_little_endian ... ok
test frame::tests::frame_payload_length_byte_matches ... ok
test frame::tests::frame_starts_with_magic_v2 ... ok
test frame::tests::peek_message_id_finds_heartbeat ... ok
test frame::tests::peek_rejects_v1_magic ... ok
test frame::tests::rejects_bad_crc ... ok
test frame::tests::rejects_truncated_header ... ok
test frame::tests::rejects_truncated_payload ... ok
test frame::tests::rejects_v1_magic ... ok
test frame::tests::rejects_wrong_crc_extra ... ok
test frame::tests::round_trip_heartbeat_through_frame ... ok
test global_position_int::tests::crc_extra_is_104 ... ok
test global_position_int::tests::decode_rejects_empty ... ok
test global_position_int::tests::decode_rejects_long_payload ... ok
test global_position_int::tests::decode_rejects_short_payload ... ok
test global_position_int::tests::field_offsets_match_spec ... ok
test global_position_int::tests::msg_id_is_33 ... ok
test global_position_int::tests::payload_length_is_28 ... ok
test frame::tests::encode_parse_round_trip_arbitrary_seq ... ok
test global_position_int::tests::round_trip_extremes ... ok
test global_position_int::tests::round_trip_sample ... ok
test command_long::tests::round_trip_arbitrary ... ok
test global_position_int::tests::round_trip_zero ... ok
test heartbeat::tests::crc_extra_is_fifty ... ok
test heartbeat::tests::custom_mode_little_endian ... ok
test heartbeat::tests::decode_empty_payload ... ok
test heartbeat::tests::decode_rejects_long_payload ... ok
test heartbeat::tests::decode_rejects_short_payload ... ok
test heartbeat::tests::field_offsets_match_spec ... ok
test heartbeat::tests::mav_mode_flag_or_and_contains ... ok
test heartbeat::tests::payload_length_constant ... ok
test heartbeat::tests::round_trip_falcon_default ... ok
test heartbeat::tests::round_trip_gcs_default ... ok
test heartbeat::tests::round_trip_max_values ... ok
test heartbeat::tests::round_trip_zero ... ok
test global_position_int::tests::round_trip_arbitrary ... ok
test heartbeat::tests::round_trip_arbitrary ... ok
test frame::tests::parser_never_panics ... ok

test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Filename Regions Missed Regions Cover Functions Missed Functions Executed Lines Missed Lines Cover Branches Missed Branches Cover

coverage_subjects/geofence_subject_rs/src/lib.rs 48 48 0.00% 5 5 0.00% 23 23 0.00% 0 0 -
crates/relay-att/plain/src/lib.rs 380 31 91.84% 27 6 77.78% 207 29 85.99% 0 0 -
crates/relay-ccsds/plain/src/engine.rs 227 0 100.00% 15 0 100.00% 172 0 100.00% 0 0 -
crates/relay-ccsds/plain/src/sensor_wire.rs 209 4 98.09% 16 0 100.00% 174 0 100.00% 0 0 -
crates/relay-cfdp/plain/src/engine.rs 371 27 92.72% 20 0 100.00% 240 25 89.58% 0 0 -
crates/relay-ci/plain/src/engine.rs 135 3 97.78% 14 1 92.86% 125 3 97.60% 0 0 -
crates/relay-cs/plain/src/engine.rs 237 1 99.58% 18 0 100.00% 162 1 99.38% 0 0 -
crates/relay-ds/plain/src/engine.rs 157 0 100.00% 14 0 100.00% 156 0 100.00% 0 0 -
crates/relay-ekf-stub/plain/src/lib.rs 105 0 100.00% 11 0 100.00% 63 0 100.00% 0 0 -
crates/relay-ekf/plain/src/lib.rs 458 36 92.14% 38 7 81.58% 264 37 85.98% 0 0 -
crates/relay-fm/plain/src/engine.rs 231 6 97.40% 16 0 100.00% 141 5 96.45% 0 0 -
crates/relay-hk/plain/src/engine.rs 239 4 98.33% 15 1 93.33% 159 1 99.37% 0 0 -
crates/relay-hs/plain/src/engine.rs 274 7 97.45% 20 1 95.00% 194 3 98.45% 0 0 -
crates/relay-lc-diff/src/lib.rs 50 1 98.00% 4 0 100.00% 44 1 97.73% 0 0 -
crates/relay-lc/plain/src/engine.rs 270 4 98.52% 23 1 95.65% 106 1 99.06% 0 0 -
crates/relay-mavlink/plain/src/command_long.rs 145 0 100.00% 13 0 100.00% 96 0 100.00% 0 0 -
crates/relay-mavlink/plain/src/crc.rs 85 3 96.47% 10 1 90.00% 53 3 94.34% 0 0 -
crates/relay-mavlink/plain/src/frame.rs 300 3 99.00% 18 1 94.44% 212 3 98.58% 0 0 -
crates/relay-mavlink/plain/src/global_position_int.rs 153 0 100.00% 13 0 100.00% 100 0 100.00% 0 0 -
crates/relay-mavlink/plain/src/heartbeat.rs 161 3 98.14% 19 1 94.74% 144 3 97.92% 0 0 -
crates/relay-md/plain/src/engine.rs 149 0 100.00% 12 0 100.00% 142 0 100.00% 0 0 -
crates/relay-mix-quad/plain/src/lib.rs 201 2 99.00% 14 0 100.00% 105 1 99.05% 0 0 -
crates/relay-mm/plain/src/engine.rs 124 4 96.77% 12 1 91.67% 125 9 92.80% 0 0 -
crates/relay-nid/plain/src/bitpack.rs 281 7 97.51% 14 0 100.00% 164 1 99.39% 0 0 -
crates/relay-nid/plain/src/lib.rs 275 9 96.73% 17 0 100.00% 162 1 99.38% 0 0 -
crates/relay-pos/plain/src/lib.rs 472 26 94.49% 30 5 83.33% 318 29 90.88% 0 0 -
crates/relay-primitives/plain/src/ccsds.rs 174 5 97.13% 12 0 100.00% 116 3 97.41% 0 0 -
crates/relay-primitives/plain/src/compare.rs 35 0 100.00% 4 0 100.00% 35 0 100.00% 0 0 -
crates/relay-primitives/plain/src/crc32.rs 34 0 100.00% 4 0 100.00% 20 0 100.00% 0 0 -
crates/relay-primitives/plain/src/filter.rs 24 0 100.00% 4 0 100.00% 14 0 100.00% 0 0 -
crates/relay-primitives/plain/src/merge.rs 73 1 98.63% 8 0 100.00% 53 1 98.11% 0 0 -
crates/relay-primitives/plain/src/persistence.rs 47 0 100.00% 8 0 100.00% 38 0 100.00% 0 0 -
crates/relay-primitives/plain/src/rate_divide.rs 32 0 100.00% 4 0 100.00% 22 0 100.00% 0 0 -
crates/relay-primitives/plain/src/time_gate.rs 34 0 100.00% 6 0 100.00% 22 0 100.00% 0 0 -
crates/relay-rate/plain/src/lib.rs 358 30 91.62% 27 5 81.48% 211 25 88.15% 0 0 -
crates/relay-sc/plain/src/engine.rs 252 6 97.62% 21 1 95.24% 215 1 99.53% 0 0 -
crates/relay-sca/plain/src/engine.rs 161 3 98.14% 14 1 92.86% 176 3 98.30% 0 0 -
crates/relay-sch/plain/src/engine.rs 140 3 97.86% 14 1 92.86% 47 1 97.87% 0 0 -
crates/relay-tbl/plain/src/engine.rs 236 5 97.88% 15 0 100.00% 152 5 96.71% 0 0 -
crates/relay-to/plain/src/engine.rs 150 0 100.00% 13 0 100.00% 97 0 100.00% 0 0 -
host/relay-sb/src/core.rs 367 4 98.91% 28 0 100.00% 221 3 98.64% 0 0 -
host/witness-wasi-harness/src/main.rs 356 356 0.00% 14 14 0.00% 161 161 0.00% 0 0 -

TOTAL 8210 642 92.18% 624 53 91.51% 5451 382 92.99% 0 0 -

running 5 tests
test tests::phases_are_consistent_with_trajectory_duration ... ok
test tests::quat_error_is_zero_for_identical_quaternions ... ok
test tests::rotate_ned_to_body_identity_passes_through ... ok
test tests::deterministic_bench_passes ... ok
test tests::noisy_bench_passes_loose ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 9 tests
test tests::args_default_ports_for_gcs_mode ... ok
test tests::args_default_ports_for_vehicle_mode ... ok
test tests::args_rejects_missing_mode ... ok
test tests::handle_inbound_propagates_bad_crc ... ok
test tests::args_rejects_unknown_mode ... ok
test tests::handle_inbound_rejects_unsupported_message ... ok
test tests::handle_inbound_truncated ... ok
test tests::current_timestamp_is_monotone_within_a_run ... ok
test tests::vehicle_and_gcs_exchange_heartbeats_over_udp ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s

running 10 tests
test hackrf::tests::gps_sdr_sim_argv_shape_is_stable ... ok
test hackrf::tests::hackrf_argv_shape_is_stable ... ok
test mavlink::tests::home_projects_to_origin ... ok
test mavlink::tests::build_frame_carries_correct_message_id ... ok
test mavlink::tests::altitude_translates_to_down ... ok
test mavlink::tests::mavlink_bench_no_violation_no_latch ... ok
test mavlink::tests::mavlink_bench_trips_and_dispatches_on_spoof ... ok
test mavlink::tests::one_hundred_metres_north_projects_to_10000_cm_n ... ok
test stub::tests::stub_bench_no_violation_no_latch ... ok
test stub::tests::stub_bench_trips_and_dispatches ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 7 tests
test physics::tests::gazebo_stub_compiles_and_returns_zeros ... ok
test physics::tests::mock_physics_at_rest_stays_quiet ... ok
test physics::tests::mock_physics_hover_with_full_thrust_climbs ... ok
test physics::tests::mock_physics_measure_returns_sensible_imu ... ok
test tests::gazebo_stub_does_not_panic ... ok
test tests::mock_backend_climbs_under_full_thrust ... ok
test tests::evidence_sink_produces_log_and_csv ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 17 tests
test tests::deterministic_disturbance_recovers ... ok
test tests::deterministic_attitude_cascade_passes ... ok
test tests::deterministic_hover_settles ... ok
test tests::deterministic_step_response_passes ... ok
test tests::deterministic_mission_passes ... ok
test tests::ekf_watchdog_catches_intermittent_fault ... ok
test tests::ekf_watchdog_debounces_transient_spikes ... ok
test tests::ekf_watchdog_ignores_healthy_innovation ... ok
test tests::deterministic_geofence_catches_spoof_and_triggers_rtl ... ok
test tests::deterministic_fault_triggers_rtl ... ok
test tests::noisy_attitude_cascade_still_passes ... ok
test tests::noisy_step_response_still_passes ... ok
test tests::plant_step_full_preserves_unit_quaternion_and_finite_state ... ok
test tests::plant_step_preserves_unit_quaternion ... ok
test tests::noisy_mission_still_reaches_waypoint ... ok
test tests::noisy_fault_still_triggers_rtl ... ok
test tests::deterministic_untethered_mission_visits_all_waypoints ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test tests::att_p01_quaternion_error_is_unit_for_unit_inputs ... ok
test tests::att_p01_shortest_arc_q_err_scalar_non_negative ... ok
test tests::att_p03_small_angle_within_one_percent ... ok
test tests::degenerate_input_does_not_propagate_nan ... ok
test tests::identity_setpoint_at_identity_gives_zero_rate ... ok
test tests::negative_roll_setpoint_gives_negative_x_rate ... ok
test tests::rate_command_clamped_to_rate_max ... ok
test tests::sqrt_f32_matches_libm_within_tolerance ... ok
test tests::twenty_deg_roll_setpoint_gives_positive_x_rate ... ok
test tests::att_p01_property ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 22 tests
test engine::tests::test_apid_masking ... ok
test engine::tests::test_checksum_empty ... ok
test engine::tests::test_checksum_single_byte ... ok
test engine::tests::test_checksum_xor ... ok
test engine::tests::test_encode_decode_roundtrip_command ... ok
test engine::tests::test_encode_decode_roundtrip_telemetry ... ok
test engine::tests::test_too_short_buffer ... ok
test engine::tests::test_invalid_version ... ok
test engine::tests::test_validate_packet_valid ... ok
test engine::tests::test_validate_packet_too_short ... ok
test sensor_wire::tests::test_all_sensor_types ... ok
test sensor_wire::tests::test_celsius_conversion ... ok
test sensor_wire::tests::test_contact_sensor ... ok
test engine::tests::test_version_always_zero_in_output ... ok
test sensor_wire::tests::test_encode_decode_roundtrip ... ok
test sensor_wire::tests::test_invalid_version ... ok
test sensor_wire::tests::test_max_device_id ... ok
test sensor_wire::tests::test_negative_temperature ... ok
test sensor_wire::tests::test_packet_size ... ok
test sensor_wire::tests::test_too_short ... ok
test sensor_wire::tests::test_water_sensor ... ok
test sensor_wire::tests::test_watts_conversion ... ok

test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test engine::tests::test_bounded_transactions ... ok
test engine::tests::test_cancel_on_max_retransmit ... ok
test engine::tests::test_create_transaction ... ok
test engine::tests::test_eof_transition ... ok
test engine::tests::test_get_state_invalid_id ... ok
test engine::tests::test_max_retransmit_cancels ... ok
test engine::tests::test_nak_in_wrong_state_ignored ... ok
test engine::tests::test_nak_retransmit ... ok
test engine::tests::test_state_progression ... ok
test engine::tests::test_tick_idle_sends_metadata ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 8 tests
test engine::tests::test_bad_checksum ... ok
test engine::tests::test_bad_stream_id ... ok
test engine::tests::test_compute_checksum_empty ... ok
test engine::tests::test_compute_checksum_xor ... ok
test engine::tests::test_invalid_cmd_code ... ok
test engine::tests::test_length_mismatch ... ok
test engine::tests::test_valid_command ... ok
test engine::tests::test_valid_stream_id_lookup ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test engine::tests::test_batch_check_bounded ... ok
test engine::tests::test_check_nonexistent_region ... ok
test engine::tests::test_check_updates_last_checked ... ok
test engine::tests::test_crc32_empty ... ok
test engine::tests::test_crc32_known_value ... ok
test engine::tests::test_empty_table ... ok
test engine::tests::test_matching_baseline ... ok
test engine::tests::test_mismatched_baseline ... ok
test engine::tests::test_register_region ... ok
test engine::tests::test_table_full ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 8 tests
test engine::tests::test_bounded_output ... ok
test engine::tests::test_disabled_filter ... ok
test engine::tests::test_empty_table ... ok
test engine::tests::test_filter_count_bounded ... ok
test engine::tests::test_matching_filter ... ok
test engine::tests::test_multiple_destinations ... ok
test engine::tests::test_no_match ... ok
test engine::tests::test_table_full ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 16 tests
test tests::cross_of_parallel_is_zero ... ok
test tests::ekf_p01_tick_preserves_unit_quaternion ... ok
test tests::ekf_p02_extreme_accel_does_not_produce_nan ... ok
test tests::ekf_p02_zero_accel_does_not_produce_nan ... ok
test tests::ekf_p03_innovation_monotone_with_tilt_disagreement ... ok
test tests::ekf_p04_static_rest_converges_to_gravity_aligned ... ok
test tests::ekf_p05_pure_yaw_gyro_does_not_destabilise_attitude ... ok
test tests::fresh_estimator_is_at_identity ... ok
test tests::normalise_nan_returns_none ... ok
test tests::normalise_zero_returns_none ... ok
test tests::quat_mul_identity_left ... ok
test tests::quat_mul_identity_right ... ok
test tests::rotate_inverse_identity_passes_through ... ok
test tests::ekf_p01_property ... ok
test tests::bias_estimate_bounded ... ok
test tests::ekf_p02_property_sequence ... ok

test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s

running 9 tests
test tests::deterministic_across_ticks_with_same_time ... ok
test tests::fresh_stub_has_zero_time ... ok
test tests::innovation_is_quiet_in_stub ... ok
test tests::tick_passes_time_through ... ok
test tests::tick_returns_identity_quaternion ... ok
test tests::tick_returns_zero_position_and_velocity ... ok
test tests::unit_quaternion_check_rejects_clearly_non_unit ... ok
test tests::tick_innovation_within_healthy_range ... ok
test tests::tick_always_emits_unit_quaternion ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test engine::tests::test_all_commands_valid ... ok
test engine::tests::test_all_validation_variants ... ok
test engine::tests::test_delete_no_dest_needed ... ok
test engine::tests::test_empty_path_rejected ... ok
test engine::tests::test_null_byte_rejected ... ok
test engine::tests::test_path_too_long ... ok
test engine::tests::test_paths_equal_symmetric ... ok
test engine::tests::test_source_eq_dest_rejected ... ok
test engine::tests::test_valid_copy_command ... ok
test engine::tests::test_valid_path ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 8 tests
test engine::tests::test_empty_table_collect_succeeds ... ok
test engine::tests::test_output_bounds_check ... ok
test engine::tests::test_sequence_increments ... ok
test engine::tests::test_multiple_copies ... ok
test engine::tests::test_source_bounds_check ... ok
test engine::tests::test_source_not_found ... ok
test engine::tests::test_table_full_returns_false ... ok
test engine::tests::test_single_copy ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 9 tests
test engine::tests::test_action_types ... ok
test engine::tests::test_alert_count_bounded ... ok
test engine::tests::test_counter_incrementing_no_alert ... ok
test engine::tests::test_counter_reset_on_activity ... ok
test engine::tests::test_disabled_app_ignored ... ok
test engine::tests::test_empty_table ... ok
test engine::tests::test_multiple_apps ... ok
test engine::tests::test_stalled_app_alert_after_max_miss ... ok
test engine::tests::test_table_full ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 17 tests
test engine::proptests::compare_matches_rust ... ok
test engine::tests::geofence_boundary_inclusive ... ok
test engine::tests::geofence_inside_does_not_trip ... ok
test engine::proptests::disabled_never_fires ... ok
test engine::proptests::persistence_requires_consecutive ... ok
test engine::tests::geofence_outside_d_trips ... ok
test engine::tests::geofence_outside_e_trips ... ok
test engine::tests::geofence_outside_n_trips_once ... ok
test engine::tests::test_bounded ... ok
test engine::tests::test_disabled ... ok
test engine::tests::test_empty ... ok
test engine::tests::test_gt_violation ... ok
test engine::tests::test_ops ... ok
test engine::tests::test_persistence ... ok
test engine::tests::test_persistence_reset ... ok
test engine::tests::test_sensor_filter ... ok
test engine::proptests::output_always_bounded ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

running 3 tests
test tests::persistence_sequence_agrees ... ok
test tests::compare_agrees ... ok
test tests::single_eval_agrees ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

running 55 tests
test command_long::tests::crc_extra_is_152 ... ok
test command_long::tests::decode_rejects_long_payload ... ok
test command_long::tests::decode_rejects_short_payload ... ok
test command_long::tests::field_offsets_match_spec ... ok
test command_long::tests::msg_id_is_76 ... ok
test command_long::tests::payload_length_is_33 ... ok
test command_long::tests::round_trip_rtl ... ok
test command_long::tests::round_trip_with_params ... ok
test command_long::tests::rtl_builder_has_zero_params ... ok
test command_long::tests::rtl_command_id_is_20 ... ok
test crc::tests::accumulate_slice_equals_individual ... ok
test crc::tests::empty_input_keeps_seed ... ok
test crc::tests::order_matters ... ok
test crc::tests::single_byte_zero ... ok
test crc::tests::mavlink_reference_vector_123456789 ... ok
test frame::tests::encode_rejects_payload_length_mismatch ... ok
test frame::tests::encode_rejects_too_small_output ... ok
test frame::tests::frame_payload_length_byte_matches ... ok
test frame::tests::frame_msg_id_three_bytes_little_endian ... ok
test frame::tests::frame_starts_with_magic_v2 ... ok
test frame::tests::peek_message_id_finds_heartbeat ... ok
test frame::tests::peek_rejects_v1_magic ... ok
test frame::tests::rejects_bad_crc ... ok
test frame::tests::rejects_truncated_header ... ok
test frame::tests::rejects_truncated_payload ... ok
test frame::tests::rejects_v1_magic ... ok
test frame::tests::rejects_wrong_crc_extra ... ok
test frame::tests::round_trip_heartbeat_through_frame ... ok
test global_position_int::tests::crc_extra_is_104 ... ok
test global_position_int::tests::decode_rejects_empty ... ok
test global_position_int::tests::decode_rejects_long_payload ... ok
test global_position_int::tests::decode_rejects_short_payload ... ok
test global_position_int::tests::field_offsets_match_spec ... ok
test global_position_int::tests::msg_id_is_33 ... ok
test global_position_int::tests::payload_length_is_28 ... ok
test frame::tests::encode_parse_round_trip_arbitrary_seq ... ok
test global_position_int::tests::round_trip_extremes ... ok
test global_position_int::tests::round_trip_sample ... ok
test global_position_int::tests::round_trip_zero ... ok
test heartbeat::tests::crc_extra_is_fifty ... ok
test heartbeat::tests::custom_mode_little_endian ... ok
test heartbeat::tests::decode_empty_payload ... ok
test heartbeat::tests::decode_rejects_long_payload ... ok
test heartbeat::tests::decode_rejects_short_payload ... ok
test heartbeat::tests::field_offsets_match_spec ... ok
test heartbeat::tests::mav_mode_flag_or_and_contains ... ok
test heartbeat::tests::payload_length_constant ... ok
test command_long::tests::round_trip_arbitrary ... ok
test heartbeat::tests::round_trip_falcon_default ... ok
test heartbeat::tests::round_trip_gcs_default ... ok
test heartbeat::tests::round_trip_max_values ... ok
test heartbeat::tests::round_trip_zero ... ok
test global_position_int::tests::round_trip_arbitrary ... ok
test heartbeat::tests::round_trip_arbitrary ... ok
test frame::tests::parser_never_panics ... ok

test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

running 7 tests
test engine::tests::test_bounded_output ... ok
test engine::tests::test_disabled_entry ... ok
test engine::tests::test_empty_table ... ok
test engine::tests::test_multiple_entries ... ok
test engine::tests::test_rate_divisor_filtering ... ok
test engine::tests::test_single_dwell ... ok
test engine::tests::test_table_full ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test tests::high_thrust_with_torque_saturates_gracefully ... ok
test tests::mix_p02_outputs_in_unit_interval ... ok
test tests::mix_p01_zero_command_gives_thrust_only ... ok
test tests::mix_p03_pure_pitch_drives_front_and_back_motors_opposite ... ok
test tests::mix_p03_pure_roll_drives_diagonal_motor_pairs_opposite ... ok
test tests::mix_p03_pure_yaw_drives_cw_and_ccw_pairs_opposite ... ok
test tests::nan_input_does_not_propagate ... ok
test tests::negative_thrust_clipped_to_zero ... ok
test tests::mix_p03_property_single_axis ... ok
test tests::mix_p02_property ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 8 tests
test engine::tests::test_alignment_error ... ok
test engine::tests::test_boundary_address ... ok
test engine::tests::test_fill_no_alignment_check ... ok
test engine::tests::test_is_aligned ... ok
test engine::tests::test_out_of_range ... ok
test engine::tests::test_size_too_large ... ok
test engine::tests::test_size_zero ... ok
test engine::tests::test_valid_request ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 20 tests
test bitpack::tests::bitpack_basic_id_packs_id_and_ua_type_in_same_byte ... ok
test bitpack::tests::bitpack_basic_id_round_trip ... ok
test bitpack::tests::bitpack_decoder_rejects_unknown_protocol_version ... ok
test bitpack::tests::bitpack_location_rejects_oversize_track_byte ... ok
test bitpack::tests::bitpack_location_rejects_wrong_message_type ... ok
test bitpack::tests::bitpack_location_idempotent_after_canonicalize ... ok
test bitpack::tests::bitpack_location_round_trip_on_canonical ... ok
test tests::basic_id_header_byte_is_well_formed ... ok
test tests::basic_id_round_trip ... ok
test tests::decoder_rejects_unknown_protocol_version ... ok
test tests::location_rejects_out_of_range_timestamp ... ok
test tests::location_rejects_out_of_range_track ... ok
test tests::location_rejects_wrong_message_type ... ok
test tests::location_round_trip ... ok
test bitpack::tests::proptest_bitpack_location_round_trip_on_canonical ... ok
test bitpack::tests::proptest_bitpack_basic_id_round_trip ... ok
test bitpack::tests::proptest_bitpack_decoder_never_panics ... ok
test tests::proptest_basic_id_round_trip ... ok
test tests::proptest_decoder_never_panics ... ok
test tests::proptest_location_round_trip_in_range ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

running 13 tests
test tests::altitude_above_setpoint_reduces_thrust ... ok
test tests::altitude_below_setpoint_increases_thrust ... ok
test tests::degenerate_input_does_not_propagate ... ok
test tests::at_setpoint_with_zero_velocity_gives_hover_thrust ... ok
test tests::east_position_error_rolls_right ... ok
test tests::forward_position_error_pitches_nose_down ... ok
test tests::pos_p01_bounds_enforced ... ok
test tests::reset_clears_integral ... ok
test tests::tilt_clamped_to_tilt_max ... ok
test tests::yaw_held_when_setpoint_is_nan ... ok
test tests::yaw_setpoint_is_followed ... ok
test tests::v_setpoint_clamped_to_v_max ... ok
test tests::pos_p01_property ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 34 tests
test ccsds::tests::apid_masked_to_eleven_bits ... ok
test ccsds::tests::checksum_empty_is_zero ... ok
test ccsds::tests::checksum_self_inverse ... ok
test ccsds::tests::checksum_xor ... ok
test ccsds::tests::decode_too_short ... ok
test ccsds::tests::encode_then_decode_roundtrip ... ok
test ccsds::tests::header_size_is_six ... ok
test ccsds::tests::version_bits_always_zero ... ok
test compare::tests::all_ops_total_on_zero_zero ... ok
test compare::tests::less_than ... ok
test crc32::tests::deterministic ... ok
test crc32::tests::empty_is_zero ... ok
test crc32::tests::known_value_123456789 ... ok
test filter::tests::false_is_drop ... ok
test filter::tests::total_deterministic ... ok
test filter::tests::true_is_keep ... ok
test merge::tests::alternates_under_contention ... ok
test merge::tests::both_empty_is_none ... ok
test merge::tests::fairness_over_four_rounds ... ok
test merge::tests::last_flag_updates_correctly ... ok
test merge::tests::only_left_picks_left ... ok
test merge::tests::only_right_picks_right ... ok
test persistence::tests::counter_saturates ... ok
test persistence::tests::event_at_threshold_fires ... ok
test persistence::tests::event_below_threshold_is_pending ... ok
test persistence::tests::no_event_resets ... ok
test persistence::tests::persistence_zero_always_fires_on_event ... ok
test rate_divide::tests::divisor_five_emits_every_fifth ... ok
test rate_divide::tests::divisor_one_always_emits ... ok
test rate_divide::tests::divisor_zero_never_emits ... ok
test time_gate::tests::absolute_due_after ... ok
test time_gate::tests::absolute_due_at_exact ... ok
test time_gate::tests::absolute_not_due_before ... ok
test time_gate::tests::relative_equivalent_to_absolute ... ok

test result: ok. 34 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 13 tests
test tests::at_zero_error_output_is_zero ... ok
test tests::fresh_pid_has_zero_state ... ok
test tests::negative_error_drives_negative_torque ... ok
test tests::out_of_range_dt_clamped_safely ... ok
test tests::positive_error_drives_positive_torque ... ok
test tests::rate_p02_infinite_setpoint_does_not_propagate ... ok
test tests::rate_p02_nan_input_does_not_propagate ... ok
test tests::output_clamped_to_torque_max ... ok
test tests::rate_p03_step_response_drives_error_to_zero ... ok
test tests::reset_clears_state ... ok
test tests::rate_p02_property ... ok
test tests::rate_p01_anti_windup_holds_integral_at_bound ... ok
test tests::rate_p01_property ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s

running 11 tests
test core::tests::test_channel_isolation ... ok
test core::tests::test_max_subscribers_per_channel ... ok
test core::tests::test_duplicate_subscribe_idempotent ... ok
test core::tests::test_publish_multiple_subscribers ... ok
test core::tests::test_publish_no_subscribers ... ok
test core::tests::test_queue_full_drops_message ... ok
test core::tests::test_stats_after_unsubscribe ... ok
test core::tests::test_stats_tracking ... ok
test core::tests::test_subscribe_and_get ... ok
test core::tests::test_unsubscribe ... ok
test core::tests::test_unsubscribe_nonexistent ... ok

test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 13 tests
test engine::tests::test_ats_dispatch_at_correct_time ... ok
test engine::tests::test_ats_not_dispatched_early ... ok
test engine::tests::test_ats_not_redispatched ... ok
test engine::tests::test_ats_table_full_returns_false ... ok
test engine::tests::test_dispatch_count_bounded ... ok
test engine::tests::test_empty_store_no_dispatches ... ok
test engine::tests::test_rts_sequence_execution ... ok
test engine::tests::test_rts_stop ... ok
test engine::tests::test_start_rts_empty_sequence_returns_false ... ok
test engine::tests::test_start_rts_invalid_id_returns_false ... ok
test engine::proptests::dispatch_count_always_bounded ... ok
test engine::proptests::ats_not_dispatched_early ... ok
test engine::proptests::dispatched_commands_not_redispatched ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 8 tests
test engine::tests::test_disabled_not_dispatched ... ok
test engine::tests::test_dispatch_at_exact_time ... ok
test engine::tests::test_dispatch_count_bounded ... ok
test engine::tests::test_multiple_commands_different_times ... ok
test engine::tests::test_empty_table_no_dispatches ... ok
test engine::tests::test_table_full_returns_false ... ok
test engine::tests::test_not_dispatched_early ... ok
test engine::tests::test_not_redispatched ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test engine::tests::test_bounded ... ok
test engine::tests::test_disabled ... ok
test engine::tests::test_empty ... ok
test engine::tests::test_enable ... ok
test engine::tests::test_full ... ok
test engine::tests::test_major ... ok
test engine::tests::test_match ... ok
test engine::proptests::major_frame_zero_is_wildcard ... ok
test engine::proptests::disabled_slot_never_fires ... ok
test engine::proptests::tick_output_always_bounded ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 8 tests
test engine::tests::test_activate_without_load_fails ... ok
test engine::tests::test_double_buffer_swap ... ok
test engine::tests::test_empty_registry ... ok
test engine::tests::test_load_and_activate ... ok
test engine::tests::test_not_found ... ok
test engine::tests::test_registry_full ... ok
test engine::tests::test_register_and_get ... ok
test engine::tests::test_size_mismatch ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 7 tests
test engine::tests::test_active_count ... ok
test engine::tests::test_bounded_table ... ok
test engine::tests::test_disabled_subscription ... ok
test engine::tests::test_not_subscribed ... ok
test engine::tests::test_subscribe_and_include ... ok
test engine::tests::test_empty_table ... ok
test engine::tests::test_unsubscribe ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 55 tests
test command_long::tests::crc_extra_is_152 ... ok
test command_long::tests::decode_rejects_long_payload ... ok
test command_long::tests::field_offsets_match_spec ... ok
test command_long::tests::decode_rejects_short_payload ... ok
test command_long::tests::payload_length_is_33 ... ok
test command_long::tests::msg_id_is_76 ... ok
test command_long::tests::round_trip_rtl ... ok
test command_long::tests::round_trip_with_params ... ok
test command_long::tests::rtl_builder_has_zero_params ... ok
test command_long::tests::rtl_command_id_is_20 ... ok
test crc::tests::accumulate_slice_equals_individual ... ok
test crc::tests::mavlink_reference_vector_123456789 ... ok
test crc::tests::order_matters ... ok
test crc::tests::empty_input_keeps_seed ... ok
test crc::tests::single_byte_zero ... ok
test frame::tests::encode_rejects_payload_length_mismatch ... ok
test frame::tests::encode_rejects_too_small_output ... ok
test frame::tests::frame_msg_id_three_bytes_little_endian ... ok
test frame::tests::frame_payload_length_byte_matches ... ok
test frame::tests::frame_starts_with_magic_v2 ... ok
test frame::tests::peek_message_id_finds_heartbeat ... ok
test frame::tests::peek_rejects_v1_magic ... ok
test frame::tests::rejects_bad_crc ... ok
test frame::tests::rejects_truncated_header ... ok
test frame::tests::rejects_truncated_payload ... ok
test frame::tests::rejects_v1_magic ... ok
test frame::tests::rejects_wrong_crc_extra ... ok
test frame::tests::round_trip_heartbeat_through_frame ... ok
test global_position_int::tests::crc_extra_is_104 ... ok
test global_position_int::tests::decode_rejects_empty ... ok
test global_position_int::tests::decode_rejects_long_payload ... ok
test global_position_int::tests::decode_rejects_short_payload ... ok
test global_position_int::tests::field_offsets_match_spec ... ok
test global_position_int::tests::msg_id_is_33 ... ok
test global_position_int::tests::payload_length_is_28 ... ok
test command_long::tests::round_trip_arbitrary ... ok
test frame::tests::encode_parse_round_trip_arbitrary_seq ... ok
test global_position_int::tests::round_trip_extremes ... ok
test global_position_int::tests::round_trip_sample ... ok
test global_position_int::tests::round_trip_zero ... ok
test heartbeat::tests::crc_extra_is_fifty ... ok
test heartbeat::tests::custom_mode_little_endian ... ok
test heartbeat::tests::decode_rejects_long_payload ... ok
test heartbeat::tests::decode_empty_payload ... ok
test heartbeat::tests::decode_rejects_short_payload ... ok
test heartbeat::tests::field_offsets_match_spec ... ok
test heartbeat::tests::mav_mode_flag_or_and_contains ... ok
test heartbeat::tests::payload_length_constant ... ok
test heartbeat::tests::round_trip_falcon_default ... ok
test heartbeat::tests::round_trip_gcs_default ... ok
test heartbeat::tests::round_trip_max_values ... ok
test heartbeat::tests::round_trip_zero ... ok
test global_position_int::tests::round_trip_arbitrary ... ok
test heartbeat::tests::round_trip_arbitrary ... ok
test frame::tests::parser_never_panics ... ok

test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 55 tests
test command_long::tests::crc_extra_is_152 ... ok
test command_long::tests::decode_rejects_long_payload ... ok
test command_long::tests::decode_rejects_short_payload ... ok
test command_long::tests::field_offsets_match_spec ... ok
test command_long::tests::msg_id_is_76 ... ok
test command_long::tests::payload_length_is_33 ... ok
test command_long::tests::round_trip_rtl ... ok
test command_long::tests::round_trip_with_params ... ok
test command_long::tests::rtl_builder_has_zero_params ... ok
test command_long::tests::rtl_command_id_is_20 ... ok
test crc::tests::accumulate_slice_equals_individual ... ok
test crc::tests::empty_input_keeps_seed ... ok
test crc::tests::mavlink_reference_vector_123456789 ... ok
test crc::tests::order_matters ... ok
test command_long::tests::round_trip_arbitrary ... ok
test crc::tests::single_byte_zero ... ok
test frame::tests::encode_rejects_payload_length_mismatch ... ok
test frame::tests::frame_msg_id_three_bytes_little_endian ... ok
test frame::tests::frame_payload_length_byte_matches ... ok
test frame::tests::frame_starts_with_magic_v2 ... ok
test frame::tests::encode_parse_round_trip_arbitrary_seq ... ok
test frame::tests::encode_rejects_too_small_output ... ok
test frame::tests::peek_message_id_finds_heartbeat ... ok
test frame::tests::peek_rejects_v1_magic ... ok
test frame::tests::rejects_bad_crc ... ok
test frame::tests::rejects_truncated_header ... ok
test frame::tests::rejects_truncated_payload ... ok
test frame::tests::rejects_v1_magic ... ok
test frame::tests::rejects_wrong_crc_extra ... ok
test frame::tests::round_trip_heartbeat_through_frame ... ok
test global_position_int::tests::crc_extra_is_104 ... ok
test global_position_int::tests::decode_rejects_empty ... ok
test global_position_int::tests::decode_rejects_long_payload ... ok
test global_position_int::tests::decode_rejects_short_payload ... ok
test global_position_int::tests::field_offsets_match_spec ... ok
test global_position_int::tests::payload_length_is_28 ... ok
test global_position_int::tests::msg_id_is_33 ... ok
test global_position_int::tests::round_trip_extremes ... ok
test global_position_int::tests::round_trip_sample ... ok
test global_position_int::tests::round_trip_zero ... ok
test global_position_int::tests::round_trip_arbitrary ... ok
test heartbeat::tests::crc_extra_is_fifty ... ok
test heartbeat::tests::custom_mode_little_endian ... ok
test heartbeat::tests::decode_empty_payload ... ok
test heartbeat::tests::decode_rejects_long_payload ... ok
test heartbeat::tests::decode_rejects_short_payload ... ok
test heartbeat::tests::field_offsets_match_spec ... ok
test heartbeat::tests::mav_mode_flag_or_and_contains ... ok
test heartbeat::tests::payload_length_constant ... ok
test frame::tests::parser_never_panics ... ok
test heartbeat::tests::round_trip_falcon_default ... ok
test heartbeat::tests::round_trip_gcs_default ... ok
test heartbeat::tests::round_trip_max_values ... ok
test heartbeat::tests::round_trip_zero ... ok
test heartbeat::tests::round_trip_arbitrary ... ok

test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 55 tests
test command_long::tests::crc_extra_is_152 ... ok
test command_long::tests::decode_rejects_short_payload ... ok
test command_long::tests::decode_rejects_long_payload ... ok
test command_long::tests::field_offsets_match_spec ... ok
test command_long::tests::msg_id_is_76 ... ok
test command_long::tests::payload_length_is_33 ... ok
test command_long::tests::round_trip_rtl ... ok
test command_long::tests::round_trip_with_params ... ok
test command_long::tests::rtl_builder_has_zero_params ... ok
test command_long::tests::rtl_command_id_is_20 ... ok
test crc::tests::accumulate_slice_equals_individual ... ok
test crc::tests::empty_input_keeps_seed ... ok
test crc::tests::mavlink_reference_vector_123456789 ... ok
test crc::tests::order_matters ... ok
test crc::tests::single_byte_zero ... ok
test frame::tests::encode_rejects_payload_length_mismatch ... ok
test frame::tests::encode_rejects_too_small_output ... ok
test frame::tests::frame_msg_id_three_bytes_little_endian ... ok
test frame::tests::frame_payload_length_byte_matches ... ok
test frame::tests::frame_starts_with_magic_v2 ... ok
test frame::tests::peek_message_id_finds_heartbeat ... ok
test frame::tests::peek_rejects_v1_magic ... ok
test frame::tests::rejects_bad_crc ... ok
test frame::tests::rejects_truncated_header ... ok
test frame::tests::rejects_truncated_payload ... ok
test frame::tests::rejects_v1_magic ... ok
test frame::tests::rejects_wrong_crc_extra ... ok
test frame::tests::round_trip_heartbeat_through_frame ... ok
test global_position_int::tests::crc_extra_is_104 ... ok
test global_position_int::tests::decode_rejects_empty ... ok
test global_position_int::tests::decode_rejects_long_payload ... ok
test global_position_int::tests::decode_rejects_short_payload ... ok
test global_position_int::tests::field_offsets_match_spec ... ok
test global_position_int::tests::msg_id_is_33 ... ok
test global_position_int::tests::payload_length_is_28 ... ok
test frame::tests::encode_parse_round_trip_arbitrary_seq ... ok
test global_position_int::tests::round_trip_extremes ... ok
test global_position_int::tests::round_trip_sample ... ok
test global_position_int::tests::round_trip_zero ... ok
test heartbeat::tests::crc_extra_is_fifty ... ok
test global_position_int::tests::round_trip_arbitrary ... ok
test heartbeat::tests::custom_mode_little_endian ... ok
test heartbeat::tests::decode_empty_payload ... ok
test heartbeat::tests::decode_rejects_long_payload ... ok
test heartbeat::tests::decode_rejects_short_payload ... ok
test heartbeat::tests::field_offsets_match_spec ... ok
test heartbeat::tests::mav_mode_flag_or_and_contains ... ok
test heartbeat::tests::payload_length_constant ... ok
test heartbeat::tests::round_trip_falcon_default ... ok
test heartbeat::tests::round_trip_gcs_default ... ok
test heartbeat::tests::round_trip_max_values ... ok
test heartbeat::tests::round_trip_zero ... ok
test command_long::tests::round_trip_arbitrary ... ok
test heartbeat::tests::round_trip_arbitrary ... ok
test frame::tests::parser_never_panics ... ok

test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 55 tests
test command_long::tests::crc_extra_is_152 ... ok
test command_long::tests::decode_rejects_long_payload ... ok
test command_long::tests::decode_rejects_short_payload ... ok
test command_long::tests::field_offsets_match_spec ... ok
test command_long::tests::msg_id_is_76 ... ok
test command_long::tests::payload_length_is_33 ... ok
test command_long::tests::round_trip_rtl ... ok
test command_long::tests::round_trip_with_params ... ok
test command_long::tests::rtl_builder_has_zero_params ... ok
test command_long::tests::rtl_command_id_is_20 ... ok
test crc::tests::accumulate_slice_equals_individual ... ok
test crc::tests::empty_input_keeps_seed ... ok
test crc::tests::order_matters ... ok
test crc::tests::single_byte_zero ... ok
test crc::tests::mavlink_reference_vector_123456789 ... ok
test frame::tests::encode_rejects_payload_length_mismatch ... ok
test frame::tests::encode_rejects_too_small_output ... ok
test frame::tests::frame_msg_id_three_bytes_little_endian ... ok
test frame::tests::frame_payload_length_byte_matches ... ok
test frame::tests::frame_starts_with_magic_v2 ... ok
test frame::tests::peek_message_id_finds_heartbeat ... ok
test frame::tests::peek_rejects_v1_magic ... ok
test frame::tests::rejects_bad_crc ... ok
test frame::tests::rejects_truncated_header ... ok
test frame::tests::rejects_truncated_payload ... ok
test frame::tests::rejects_v1_magic ... ok
test frame::tests::rejects_wrong_crc_extra ... ok
test frame::tests::round_trip_heartbeat_through_frame ... ok
test global_position_int::tests::crc_extra_is_104 ... ok
test global_position_int::tests::decode_rejects_empty ... ok
test global_position_int::tests::decode_rejects_long_payload ... ok
test global_position_int::tests::decode_rejects_short_payload ... ok
test global_position_int::tests::field_offsets_match_spec ... ok
test global_position_int::tests::msg_id_is_33 ... ok
test global_position_int::tests::payload_length_is_28 ... ok
test command_long::tests::round_trip_arbitrary ... ok
test frame::tests::encode_parse_round_trip_arbitrary_seq ... ok
test global_position_int::tests::round_trip_extremes ... ok
test global_position_int::tests::round_trip_sample ... ok
test global_position_int::tests::round_trip_zero ... ok
test heartbeat::tests::crc_extra_is_fifty ... ok
test heartbeat::tests::custom_mode_little_endian ... ok
test heartbeat::tests::decode_empty_payload ... ok
test heartbeat::tests::decode_rejects_long_payload ... ok
test heartbeat::tests::decode_rejects_short_payload ... ok
test heartbeat::tests::field_offsets_match_spec ... ok
test heartbeat::tests::mav_mode_flag_or_and_contains ... ok
test heartbeat::tests::payload_length_constant ... ok
test global_position_int::tests::round_trip_arbitrary ... ok
test heartbeat::tests::round_trip_falcon_default ... ok
test heartbeat::tests::round_trip_gcs_default ... ok
test heartbeat::tests::round_trip_max_values ... ok
test heartbeat::tests::round_trip_zero ... ok
test heartbeat::tests::round_trip_arbitrary ... ok
test frame::tests::parser_never_panics ... ok

test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test hackrf::tests::gps_sdr_sim_argv_shape_is_stable ... ok
test hackrf::tests::hackrf_argv_shape_is_stable ... ok
test mavlink::tests::altitude_translates_to_down ... ok
test mavlink::tests::build_frame_carries_correct_message_id ... ok
test mavlink::tests::home_projects_to_origin ... ok
test mavlink::tests::mavlink_bench_no_violation_no_latch ... ok
test mavlink::tests::one_hundred_metres_north_projects_to_10000_cm_n ... ok
test mavlink::tests::mavlink_bench_trips_and_dispatches_on_spoof ... ok
test stub::tests::stub_bench_no_violation_no_latch ... ok
test stub::tests::stub_bench_trips_and_dispatches ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

falcon verification gate (type: sw-verification, filter: (has-tag "falcon"))

34 artifact(s) matched: FV-FALCON-GEO-001, FV-FALCON-WORLD-001, FV-FALCON-ARCH-002, FV-FALCON-SIM-001, FV-FALCON-EKF-001, FV-FALCON-COV-001, FV-FALCON-GEO-002, FV-FALCON-PIPELINE-001, FV-FALCON-SIM-004, FV-FALCON-FAULT-001, FV-FALCON-TQ-001, FV-FALCON-NID-001, FV-FALCON-GEO-003, FV-FALCON-SIM-007, FV-FALCON-ARCH-001, FV-FALCON-UAM-001, FV-FALCON-HITL-001, FV-FALCON-ATT-001, FV-FALCON-SIM-002, FV-FALCON-SIM-003, FV-FALCON-RATE-001, FV-FALCON-MAVLINK-002, FV-FALCON-SIM-005, FV-FALCON-COV-002, FV-FALCON-MAVLINK-001, FV-FALCON-HITL-002, FV-FALCON-SIM-006, FV-FALCON-MIX-001, FV-FALCON-EKF-STUB-001, FV-FALCON-COV-005, FV-FALCON-COV-004, FV-FALCON-POS-001, FV-FALCON-COV-003, FV-FALCON-NID-002

[ skip-bench-only] FV-FALCON-GEO-001: bazel test //:relay_lc_verus_test
[ PASS] ( 9.82s) FV-FALCON-GEO-001: cargo test -p relay-lc
[ PASS] ( 1.19s) FV-FALCON-GEO-001: cargo test -p falcon-sitl-hover tests::deterministic_geofence_catches_spoof_and_triggers_rtl
[ PASS] ( 0.42s) FV-FALCON-WORLD-001: cargo test -p falcon-hello
[ PASS] ( 4.82s) FV-FALCON-WORLD-001: scripts/falcon-hello-demo.sh
[ skip-bench-only] FV-FALCON-ARCH-002: cd /Users/r/git/pulseengine/spar && git pull --rebase && cargo install --path crates/spar-cli --locked
[ skip-bench-only] FV-FALCON-ARCH-002: spar codegen --root Falcon_System::Falcon.Quad --format wit --output /tmp/falcon-spar-wit spar/.aadl
[ skip-bench-only] FV-FALCON-ARCH-002: diff /tmp/falcon-spar-wit/wit/autopilot.wit wit/falcon-cascade/cascade.wit
[ skip-bench-only] FV-FALCON-SIM-001: cargo run -p falcon-hitl-rfspoof -- --preset=px4-sitl --duration=1
[ skip-bench-only] FV-FALCON-SIM-001: cd ~/git/PX4-Autopilot && make px4_sitl jmavsim
[ skip-bench-only] FV-FALCON-SIM-001: cargo run -p falcon-hitl-rfspoof -- --preset=px4-sitl
[ PASS] ( 0.47s) FV-FALCON-EKF-001: cargo test -p relay-ekf
[ PASS] ( 10.95s) FV-FALCON-EKF-001: cargo test -p relay-ekf --release
[ PASS] ( 0.90s) FV-FALCON-EKF-001: PROPTEST_CASES=4096 cargo test -p relay-ekf
[ PASS] ( 0.20s) FV-FALCON-EKF-001: cargo test -p falcon-ekf-bench
[ PASS] ( 0.24s) FV-FALCON-EKF-001: cargo run -q -p falcon-ekf-bench --release
[ skip-bench-only] FV-FALCON-COV-001: bazel build //:geofence-subject-coverage
[ skip-bench-only] FV-FALCON-COV-001: cat bazel-bin/geofence-subject-coverage_witness-run.json
[ skip-bench-only] FV-FALCON-COV-001: bazel build //:falcon-cascade-coverage
[ skip-bench-only] FV-FALCON-GEO-002: cargo kani -p relay-lc
[ PASS] ( 0.13s) FV-FALCON-GEO-002: cargo test -p relay-lc
[ PASS] ( 0.38s) FV-FALCON-PIPELINE-001: cargo test -p relay-mix-quad
[ PASS] ( 0.45s) FV-FALCON-PIPELINE-001: cargo test -p relay-rate
[ PASS] ( 0.16s) FV-FALCON-PIPELINE-001: cargo test -p falcon-sitl-hover
[ PASS] ( 0.24s) FV-FALCON-SIM-004: cargo test -p falcon-sitl-gz
[ skip-bench-only] FV-FALCON-SIM-004: cargo test -p falcon-sitl-gz --features gazebo
[ skip-bench-only] FV-FALCON-SIM-004: cargo run -p falcon-sitl-gz --features gazebo -- --backend=gazebo --world=falcon --model=quad
[ skip-bench-only] FV-FALCON-FAULT-001: bazel test //:relay_hs_verus_test
[ PASS] ( 0.20s) FV-FALCON-FAULT-001: cargo test -p relay-hs
[ PASS] ( 0.16s) FV-FALCON-FAULT-001: cargo test -p falcon-sitl-hover
[ skip-bench-only] FV-FALCON-FAULT-001: cargo kani -p relay-hs
[ PASS] ( 0.00s) FV-FALCON-TQ-001: ls docs/dossier/tool-qualification/
[ PASS] ( 0.00s) FV-FALCON-TQ-001: wc -l docs/dossier/tool-qualification/
.md
[ PASS] ( 0.58s) FV-FALCON-NID-001: cargo test -p relay-nid
[ PASS] ( 0.40s) FV-FALCON-NID-001: PROPTEST_CASES=4096 cargo test -p relay-nid
[ skip-bench-only] FV-FALCON-NID-001: cargo kani -p relay-nid
[ skip-bench-only] FV-FALCON-GEO-003: rustup component add miri --toolchain nightly
[ skip-bench-only] FV-FALCON-GEO-003: MIRIFLAGS=-Zmiri-disable-isolation cargo +nightly miri test -p relay-lc --lib geofence
[ skip-bench-only] FV-FALCON-GEO-003: MIRIFLAGS=-Zmiri-disable-isolation cargo +nightly miri test -p falcon-hitl-rfspoof --bin falcon-hitl-rfspoof stub::tests
[ skip-bench-only] FV-FALCON-GEO-003: MIRIFLAGS=-Zmiri-disable-isolation cargo +nightly miri test -p falcon-hitl-rfspoof --bin falcon-hitl-rfspoof mavlink::tests
[ skip-no-steps] FV-FALCON-SIM-007: (no steps defined)
[ skip-bench-only] FV-FALCON-ARCH-001: spar parse spar/.aadl
[ skip-bench-only] FV-FALCON-ARCH-001: spar instance --root Falcon_System::Falcon.Quad spar/
.aadl
[ skip-bench-only] FV-FALCON-ARCH-001: spar analyze --root Falcon_System::Falcon.Quad spar/.aadl
[ skip-bench-only] FV-FALCON-ARCH-001: spar render --root Falcon_System::Falcon.Quad -o artifacts/spar/falcon-quad-architecture.svg spar/
.aadl
[ PASS] ( 0.13s) FV-FALCON-UAM-001: cargo test -p falcon-sitl-hover tests::deterministic_untethered_mission_visits_all_waypoints
[ PASS] ( 0.27s) FV-FALCON-HITL-001: cargo test -p falcon-hitl-rfspoof
[ PASS] ( 0.24s) FV-FALCON-HITL-001: cargo run -p falcon-hitl-rfspoof
[ skip-bench-only] FV-FALCON-HITL-001: cargo run -p falcon-hitl-rfspoof -- --backend=hackrf --duration=30
[ PASS] ( 0.38s) FV-FALCON-ATT-001: cargo test -p relay-att
[ PASS] ( 0.60s) FV-FALCON-ATT-001: cargo test -p relay-att --release
[ PASS] ( 0.22s) FV-FALCON-ATT-001: PROPTEST_CASES=4096 cargo test -p relay-att
[ PASS] ( 0.16s) FV-FALCON-ATT-001: cargo test -p falcon-sitl-hover
[ PASS] ( 0.74s) FV-FALCON-ATT-001: cargo run -q -p falcon-sitl-hover --release -- --scenario attitude
[ PASS] ( 0.63s) FV-FALCON-SIM-002: cargo test -p relay-mavlink
[ PASS] ( 0.08s) FV-FALCON-SIM-002: cargo test -p falcon-hitl-rfspoof
[ skip-bench-only] FV-FALCON-SIM-002: cargo run -p falcon-hitl-rfspoof -- --preset=px4-sitl
[ PASS] ( 0.08s) FV-FALCON-SIM-003: cargo test -p falcon-sitl-gz
[ PASS] ( 0.22s) FV-FALCON-SIM-003: cargo run -p falcon-sitl-gz
[ skip-bench-only] FV-FALCON-SIM-003: cargo run -p falcon-sitl-gz -- --backend=gazebo --world=falcon --model=quad
[ PASS] ( 0.15s) FV-FALCON-RATE-001: cargo test -p relay-rate
[ PASS] ( 0.85s) FV-FALCON-RATE-001: cargo test -p relay-rate --release
[ PASS] ( 0.71s) FV-FALCON-RATE-001: PROPTEST_CASES=4096 cargo test -p relay-rate
[ PASS] ( 0.16s) FV-FALCON-RATE-001: cargo test -p falcon-sitl-hover
[ PASS] ( 0.12s) FV-FALCON-RATE-001: cargo run -q -p falcon-sitl-hover --release
[ skip-bench-only] FV-FALCON-MAVLINK-002: bazel test //:relay_mavlink_verus_test
[ PASS] ( 0.15s) FV-FALCON-MAVLINK-002: cargo test -p relay-mavlink
[ skip-bench-only] FV-FALCON-SIM-005: cargo test -p falcon-sitl-gz --features gazebo
[ skip-bench-only] FV-FALCON-SIM-005: cargo run -p falcon-sitl-gz --features gazebo -- --backend=gazebo --world=falcon --model=quad --home=47.3977,8.5456,488 --duration=30
[ PASS] (101.85s) FV-FALCON-COV-002: cargo llvm-cov --workspace --summary-only
[ PASS] ( 5.33s) FV-FALCON-COV-002: cargo llvm-cov --workspace --lcov --output-path coverage.lcov
[ PASS] ( 0.14s) FV-FALCON-MAVLINK-001: cargo test -p relay-mavlink
[ PASS] ( 1.62s) FV-FALCON-MAVLINK-001: cargo test -p relay-mavlink --release
[ PASS] ( 0.54s) FV-FALCON-MAVLINK-001: PROPTEST_CASES=4096 cargo test -p relay-mavlink
[ PASS] ( 0.14s) FV-FALCON-HITL-002: cargo test -p relay-mavlink
[ PASS] ( 0.09s) FV-FALCON-HITL-002: cargo test -p falcon-hitl-rfspoof
[ skip-bench-only] FV-FALCON-HITL-002: MIRIFLAGS=-Zmiri-disable-isolation cargo +nightly miri test -p falcon-hitl-rfspoof --bin falcon-hitl-rfspoof mavlink::tests
[ skip-bench-only] FV-FALCON-HITL-002: cargo run -p falcon-hitl-rfspoof -- --backend=mavlink --listen=0.0.0.0:14550
[ skip-no-steps] FV-FALCON-SIM-006: (no steps defined)
running 10 tests
test tests::high_thrust_with_torque_saturates_gracefully ... ok
test tests::mix_p01_zero_command_gives_thrust_only ... ok
test tests::mix_p02_outputs_in_unit_interval ... ok
test tests::mix_p03_pure_pitch_drives_front_and_back_motors_opposite ... ok
test tests::mix_p03_pure_roll_drives_diagonal_motor_pairs_opposite ... ok
test tests::mix_p03_pure_yaw_drives_cw_and_ccw_pairs_opposite ... ok
test tests::nan_input_does_not_propagate ... ok
test tests::negative_thrust_clipped_to_zero ... ok
test tests::mix_p03_property_single_axis ... ok
test tests::mix_p02_property ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test tests::high_thrust_with_torque_saturates_gracefully ... ok
test tests::mix_p02_outputs_in_unit_interval ... ok
test tests::mix_p01_zero_command_gives_thrust_only ... ok
test tests::mix_p03_pure_pitch_drives_front_and_back_motors_opposite ... ok
test tests::mix_p03_pure_roll_drives_diagonal_motor_pairs_opposite ... ok
test tests::mix_p03_pure_yaw_drives_cw_and_ccw_pairs_opposite ... ok
test tests::nan_input_does_not_propagate ... ok
test tests::negative_thrust_clipped_to_zero ... ok
test tests::mix_p03_property_single_axis ... ok
test tests::mix_p02_property ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 10 tests
test tests::high_thrust_with_torque_saturates_gracefully ... ok
test tests::mix_p01_zero_command_gives_thrust_only ... ok
test tests::mix_p02_outputs_in_unit_interval ... ok
test tests::mix_p03_pure_pitch_drives_front_and_back_motors_opposite ... ok
test tests::mix_p03_pure_roll_drives_diagonal_motor_pairs_opposite ... ok
test tests::mix_p03_pure_yaw_drives_cw_and_ccw_pairs_opposite ... ok
test tests::nan_input_does_not_propagate ... ok
test tests::negative_thrust_clipped_to_zero ... ok
test tests::mix_p03_property_single_axis ... ok
test tests::mix_p02_property ... ok

test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 9 tests
test tests::deterministic_across_ticks_with_same_time ... ok
test tests::fresh_stub_has_zero_time ... ok
test tests::innovation_is_quiet_in_stub ... ok
test tests::tick_passes_time_through ... ok
test tests::tick_returns_zero_position_and_velocity ... ok
test tests::tick_returns_identity_quaternion ... ok
test tests::unit_quaternion_check_rejects_clearly_non_unit ... ok
test tests::tick_innovation_within_healthy_range ... ok
test tests::tick_always_emits_unit_quaternion ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 9 tests
test tests::deterministic_across_ticks_with_same_time ... ok
test tests::fresh_stub_has_zero_time ... ok
test tests::innovation_is_quiet_in_stub ... ok
test tests::tick_passes_time_through ... ok
test tests::tick_returns_identity_quaternion ... ok
test tests::tick_returns_zero_position_and_velocity ... ok
test tests::unit_quaternion_check_rejects_clearly_non_unit ... ok
test tests::tick_always_emits_unit_quaternion ... ok
test tests::tick_innovation_within_healthy_range ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 9 tests
test tests::deterministic_across_ticks_with_same_time ... ok
test tests::innovation_is_quiet_in_stub ... ok
test tests::fresh_stub_has_zero_time ... ok
test tests::tick_passes_time_through ... ok
test tests::tick_returns_identity_quaternion ... ok
test tests::tick_returns_zero_position_and_velocity ... ok
test tests::unit_quaternion_check_rejects_clearly_non_unit ... ok
test tests::tick_innovation_within_healthy_range ... ok
test tests::tick_always_emits_unit_quaternion ... ok

test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 13 tests
test tests::altitude_above_setpoint_reduces_thrust ... ok
test tests::degenerate_input_does_not_propagate ... ok
test tests::at_setpoint_with_zero_velocity_gives_hover_thrust ... ok
test tests::altitude_below_setpoint_increases_thrust ... ok
test tests::east_position_error_rolls_right ... ok
test tests::forward_position_error_pitches_nose_down ... ok
test tests::pos_p01_bounds_enforced ... ok
test tests::reset_clears_integral ... ok
test tests::tilt_clamped_to_tilt_max ... ok
test tests::yaw_held_when_setpoint_is_nan ... ok
test tests::yaw_setpoint_is_followed ... ok
test tests::v_setpoint_clamped_to_v_max ... ok
test tests::pos_p01_property ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 13 tests
test tests::altitude_above_setpoint_reduces_thrust ... ok
test tests::altitude_below_setpoint_increases_thrust ... ok
test tests::degenerate_input_does_not_propagate ... ok
test tests::at_setpoint_with_zero_velocity_gives_hover_thrust ... ok
test tests::east_position_error_rolls_right ... ok
test tests::forward_position_error_pitches_nose_down ... ok
test tests::pos_p01_bounds_enforced ... ok
test tests::reset_clears_integral ... ok
test tests::tilt_clamped_to_tilt_max ... ok
test tests::yaw_held_when_setpoint_is_nan ... ok
test tests::v_setpoint_clamped_to_v_max ... ok
test tests::yaw_setpoint_is_followed ... ok
test tests::pos_p01_property ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 13 tests
test tests::altitude_above_setpoint_reduces_thrust ... ok
test tests::altitude_below_setpoint_increases_thrust ... ok
test tests::at_setpoint_with_zero_velocity_gives_hover_thrust ... ok
test tests::degenerate_input_does_not_propagate ... ok
test tests::east_position_error_rolls_right ... ok
test tests::forward_position_error_pitches_nose_down ... ok
test tests::pos_p01_bounds_enforced ... ok
test tests::reset_clears_integral ... ok
test tests::tilt_clamped_to_tilt_max ... ok
test tests::yaw_held_when_setpoint_is_nan ... ok
test tests::yaw_setpoint_is_followed ... ok
test tests::v_setpoint_clamped_to_v_max ... ok
test tests::pos_p01_property ... ok

test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

running 17 tests
test tests::deterministic_disturbance_recovers ... ok
test tests::deterministic_attitude_cascade_passes ... ok
test tests::deterministic_hover_settles ... ok
test tests::deterministic_step_response_passes ... ok
test tests::deterministic_mission_passes ... ok
test tests::ekf_watchdog_catches_intermittent_fault ... ok
test tests::ekf_watchdog_debounces_transient_spikes ... ok
test tests::ekf_watchdog_ignores_healthy_innovation ... ok
test tests::deterministic_geofence_catches_spoof_and_triggers_rtl ... ok
test tests::deterministic_fault_triggers_rtl ... ok
test tests::noisy_attitude_cascade_still_passes ... ok
test tests::noisy_step_response_still_passes ... ok
test tests::plant_step_full_preserves_unit_quaternion_and_finite_state ... ok
test tests::plant_step_preserves_unit_quaternion ... ok
test tests::noisy_mission_still_reaches_waypoint ... ok
test tests::noisy_fault_still_triggers_rtl ... ok
test tests::deterministic_untethered_mission_visits_all_waypoints ... ok

test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s

--- scenario: mission ---
samples 12000
final v (m/s NED) [-0.004, +0.000, +0.003]
peak distance error 10.000 m
final distance 0.010 m
RMS distance (steady)0.015 m (last 2s)
convergence time 4.045s
loop wall time 2459 µs
NaN/∞ seen false
outcome PASS
falcon-sitl-hover: PASS

running 20 tests
test bitpack::tests::bitpack_basic_id_packs_id_and_ua_type_in_same_byte ... ok
test bitpack::tests::bitpack_basic_id_round_trip ... ok
test bitpack::tests::bitpack_decoder_rejects_unknown_protocol_version ... ok
test bitpack::tests::bitpack_location_idempotent_after_canonicalize ... ok
test bitpack::tests::bitpack_location_rejects_oversize_track_byte ... ok
test bitpack::tests::bitpack_location_rejects_wrong_message_type ... ok
test bitpack::tests::bitpack_location_round_trip_on_canonical ... ok
test tests::basic_id_header_byte_is_well_formed ... ok
test tests::basic_id_round_trip ... ok
test tests::decoder_rejects_unknown_protocol_version ... ok
test tests::location_rejects_out_of_range_timestamp ... ok
test tests::location_rejects_out_of_range_track ... ok
test tests::location_rejects_wrong_message_type ... ok
test tests::location_round_trip ... ok
test bitpack::tests::proptest_bitpack_location_round_trip_on_canonical ... ok
test bitpack::tests::proptest_bitpack_basic_id_round_trip ... ok
test bitpack::tests::proptest_bitpack_decoder_never_panics ... ok
test tests::proptest_basic_id_round_trip ... ok
test tests::proptest_location_round_trip_in_range ... ok
test tests::proptest_decoder_never_panics ... ok

test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

[ PASS] ( 0.12s) FV-FALCON-MIX-001: cargo test -p relay-mix-quad
[ PASS] ( 0.79s) FV-FALCON-MIX-001: cargo test -p relay-mix-quad --release
[ PASS] ( 0.21s) FV-FALCON-MIX-001: PROPTEST_CASES=4096 cargo test -p relay-mix-quad
[ PASS] ( 0.39s) FV-FALCON-EKF-STUB-001: cargo test -p relay-ekf-stub
[ PASS] ( 0.76s) FV-FALCON-EKF-STUB-001: cargo test -p relay-ekf-stub --release
[ PASS] ( 0.20s) FV-FALCON-EKF-STUB-001: PROPTEST_CASES=4096 cargo test -p relay-ekf-stub
[ PASS] ( 96.53s) FV-FALCON-COV-005: cargo build -p witness-wasi-harness
[ skip-bench-only] FV-FALCON-COV-005: WITNESS_HARNESS_INVOKES="run_inside" $WITNESS run /tmp/instr.wasm --harness target/debug/witness-wasi-harness -o /tmp/run.json
[ PASS] (204.13s) FV-FALCON-COV-004: cargo build -p witness-wasi-harness --release
[ skip-bench-only] FV-FALCON-COV-004: $WITNESS run /path/to/instrumented.wasm --output run.json --harness target/release/witness-wasi-harness
[ PASS] ( 0.38s) FV-FALCON-POS-001: cargo test -p relay-pos
[ PASS] ( 0.59s) FV-FALCON-POS-001: cargo test -p relay-pos --release
[ PASS] ( 0.22s) FV-FALCON-POS-001: PROPTEST_CASES=4096 cargo test -p relay-pos
[ PASS] ( 0.16s) FV-FALCON-POS-001: cargo test -p falcon-sitl-hover
[ PASS] ( 0.09s) FV-FALCON-POS-001: cargo run -q -p falcon-sitl-hover --release -- --scenario mission
[ skip-bench-only] FV-FALCON-COV-003: cargo build -p geofence-subject-rs --target wasm32-unknown-unknown --release
[ skip-bench-only] FV-FALCON-COV-003: cp target/wasm32-unknown-unknown/release/geofence_subject_rs.wasm coverage_subjects/
[ skip-bench-only] FV-FALCON-COV-003: bazel build //:geofence-subject-rs-coverage
[ skip-bench-only] FV-FALCON-COV-003: cat bazel-bin/geofence-subject-rs-coverage_witness-run.json
[ skip-bench-only] FV-FALCON-NID-002: bazel test //:relay_nid_verus_test
[ PASS] ( 0.13s) FV-FALCON-NID-002: cargo test -p relay-nid

❌ Rivet verification gate — falcon

27/25 passed

count
Passed 27
Failed -2
Skipped (bench-only — needs hardware / sim) 7
Skipped (no steps) 2

Failed artifacts

Bench-only artifacts (not run by CI)

  • FV-FALCON-ARCH-002 — spar codegen --format wit recheck — works at v0.10.0 (v0.15.0)
  • FV-FALCON-SIM-001 — PX4-SITL end-to-end loop — recipe + preset + smoke (v0.14.0)
  • FV-FALCON-COV-001 — witness MC/DC structural coverage — falcon pipeline wired (v0.13)
  • FV-FALCON-GEO-003 — Geofence safety path — miri UB/overflow check (v0.12, AI substitute)
  • FV-FALCON-ARCH-001 — spar AADL architectural model — falcon cascade (v0.13)
  • FV-FALCON-SIM-005 — gz-transport NavSat + Home projection — position-dependent loops (v0.18.1)
  • FV-FALCON-COV-003 — witness MC/DC on real Rust source — Geofence subject (v0.14.1)

Source of truth: artifacts/verification/FV-FALCON-*.yaml.

@avrabe avrabe merged commit 3cb5c9a into main May 27, 2026
9 checks passed
@avrabe avrabe deleted the chore/v0.19.2-sweep branch May 27, 2026 04:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant