feat(falcon): v0.19.2 — Actuators message + multi_thread runtime (Finding 2 closed)#46
Conversation
|
running 9 tests test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s [falcon-hello-demo] building release binary... running 55 tests test result: ok. 55 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 55 tests 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 result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.34s 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 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 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 result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s 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 result: ok. 20 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 20 tests 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 result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s 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 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 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 17 tests test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s Kani-TQ.md running 17 tests test result: ok. 17 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 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 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 result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.64s 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 result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s --- noise=0 (deterministic) --- running 13 tests 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 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 result: ok. 13 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 17 tests test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s --- scenario: mission --- running 13 tests test result: ok. 13 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 13 tests 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 result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.49s 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 result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s --- scenario: step --- running 10 tests 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 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 result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s 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 result: ok. 55 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 result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 7 tests test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s running 10 tests 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 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 result: ok. 10 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 17 tests test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s --- scenario: attitude --- running 1 test test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 16 filtered out; finished in 0.04s Filename Regions Missed Regions Cover Functions Missed Functions Executed Lines Missed Lines Cover Branches Missed Branches Covercoverage_subjects/geofence_subject_rs/src/lib.rs 48 48 0.00% 5 5 0.00% 23 23 0.00% 0 0 -
|
| count | |
|---|---|
| Passed | 28 |
| Failed | -3 |
| Skipped (bench-only — needs hardware / sim) | 7 |
| Skipped (no steps) | 3 |
Failed artifacts
Bench-only artifacts (not run by CI)
FV-FALCON-SIM-005— gz-transport NavSat + Home projection — position-dependent loops (v0.18.1)FV-FALCON-GEO-003— Geofence safety path — miri UB/overflow check (v0.12, AI substitute)FV-FALCON-ARCH-002— spar codegen --format wit recheck — works at v0.10.0 (v0.15.0)FV-FALCON-ARCH-001— spar AADL architectural model — falcon cascade (v0.13)FV-FALCON-COV-001— witness MC/DC structural coverage — falcon pipeline wired (v0.13)FV-FALCON-SIM-001— PX4-SITL end-to-end loop — recipe + preset + smoke (v0.14.0)FV-FALCON-COV-003— witness MC/DC on real Rust source — Geofence subject (v0.14.1)
Source of truth: artifacts/verification/FV-FALCON-*.yaml.
…ding 2 closed
Lands the architectural fix for v0.19.1's Finding 1 (per-rotor Double
publishes → single Actuators publish) plus a tokio runtime model fix
that fully closes Finding 2 (IMU + NavSat under-rate).
Ships:
- gz.msgs.Actuators defined locally (gz-transport-rs 0.1.0 doesn't
ship actuators.proto); prost::Message derive, wire-compatible
with Harmonic MulticopterMotorModel.
- Single publish to /<model>/cmd_vel; per-rotor mpsc fanout
collapsed to one channel carrying [4×f32].
- tokio runtime: new_current_thread → new_multi_thread(2 workers).
The spawned subscriber + publisher tasks now actually run after
setup block_on returns (current_thread only drives during explicit
block_on; the 51 IMU frames / 4 Hz observed at v0.19.1 were
stragglers from the brief setup window). Closes Finding 2.
- prost = { version = "0.13", features = ["derive"] } as gazebo dep.
- bench-evidence/gz-sim/{1779853824-*, 2026-05-27-*.md}
- FV-FALCON-SIM-008 + FEAT-FALCON-v0.19.2 rollout entry.
v0.19.2 bench (15-second hover):
verdict: backend=gazebo steps=1500 climb=0.00 m
counters: imu_recv=3572 navsat_recv=178 motor_send=1500
IMU rate observed 203 Hz / configured 200 Hz ✓
NavSat observed 10.1 Hz / configured 10 Hz ✓
motor_send observed 100 Hz exact ✓
climb 0.00 m ✗ (sub-issues)
Two sub-issues found, both v0.19.3 targets:
1a. gz-transport-rs 0.1.0's advertise-direction discovery isn't
reaching gz Sim 8's registry (subscribe direction works; gz CLI
publish on same topic does register). Upstream wire-format or
partition mismatch.
1b. Even native `gz topic -p` publishing full-rpm Actuators to
/quad/cmd_vel doesn't lift the body. SDF model tuning issue
(motorConstant or plugin namespace).
Verification:
- cargo test --workspace → 405 passing (preserved).
- cargo test -p falcon-sitl-gz --features gazebo → 11/11.
- cargo build --features gazebo → green.
- rivet validate → PASS.
Headline: IMU + NavSat now stream at configured rates, counters work
end-to-end, bridge survives heavy load (3572+178+1500 events in 17 s,
zero errors).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…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>
1120b79 to
b7446f5
Compare
Summary
Targets v0.19.1's two findings.
What ships
v0.19.2 bench evidence (15-second hover)
```
verdict: backend=gazebo steps=1500 climb=0.00 m
counters: imu_recv=3572 navsat_recv=178 motor_send=1500
```
Two sub-issues for v0.19.3
1a. gz-transport-rs 0.1.0's advertise-direction discovery isn't reaching gz Sim 8's registry (subscribe direction works; gz CLI publish on same topic does register). Upstream wire-format or partition mismatch.
1b. Even native `gz topic -p` publishing full-rpm Actuators to `/quad/cmd_vel` doesn't lift the body. SDF model tuning issue (motorConstant or plugin namespace).
Full details in `bench-evidence/gz-sim/2026-05-27-v0.19.2-actuators-and-multi-thread-findings.md`.
Verification
Headline
IMU + NavSat now stream at configured rates; the counters work end-to-end; the bridge survives heavy load (3572+178+1500 events in 17 s, zero errors). The runtime fix alone is the win — the v0.18.0/0.19.0 framework was running on an orphaned task setup that never actually drove the IO past the brief setup window.
🤖 Generated with Claude Code