This beta lets any sensor feed RuView, publishes one fused and inspectable presence result per zone, adds a benchmark for person counting and tracking that reports what it cannot resolve, and lands a default-off ruv-FANN presence head for shadow testing.
It is a software beta. Nothing in it is a sensing-accuracy result: tests use synthetic inputs, and the benchmarks have not been run on hardware.
Any sensor in, one fused zone out (ADR-424)
POST /api/v1/sources/readingsaccepts JSON-line readings from any sensor or time series:timestamp_ms,source,kind,zone,values, optionalquality,health,synthetic. Up to 256 lines per request; a bad line is rejected on its own and reported by line number.GET /api/v1/zonesreturns, per zone, a fused presence probability, confidence, whether sources agree, an evidence grade, and every source's own probability, weight, age and health.- CSI nodes join a zone with
RUVIEW_NODE_ZONES=1=office/desk,2=office/sofa. /api/v1/pose/zones/summaryno longer returns four invented zones. It serves the fused zones, or none when nothing is configured.
Rules the endpoint enforces:
| Situation | Result |
|---|---|
| A source goes quiet or reports unhealthy | It stops contributing and confidence falls. It is never read as "empty" |
| No live source covers the zone | presence_probability: null, evidence NONE
|
| Any contributing reading is simulated or replayed | Evidence SYNTHETIC
|
| Any contributing reading came over the open ingest route | Evidence CLAIMED (a sender cannot mark itself verified)
|
| Every contributing source is the server's own hardware reading | Evidence MEASURED
|
Only wifi_csi and mmwave_radar are fused today. Other kinds are accepted as context and not fused. Fusion weights are placeholders until a benchmark measures them, and the response says so (weights_measured: false).
Track-aware benchmark: ambiguity is a result (ADR-424 D7)
scripts/track_benchmark.py scores predicted person tracks against a per-person reference, one held-out room at a time. It is separate from the presence benchmark.
- Every reference window is clear, ambiguous or unusable. A window is ambiguous when the reference itself cannot tell who or how many: its sources disagree on the count, two people are closer than it can separate, someone just entered or left, or a position is missing.
- Ambiguous windows are reported with their share and reasons. They are never forced into a count and never silently dropped.
- On clear windows: count accuracy against a majority-count baseline, per-person precision and recall, identity switches, fragmentations and position error. Clear windows with no prediction are reported too.
- Protocol:
docs/adr/ADR-424/track-benchmark-protocol.md.
ruv-FANN presence head, default off (ADR-425)
New crate ruview-fann-head. Nothing in the server depends on it.
- Parity: the incumbent linear head run through ruv-FANN is bit-identical on 20,000 vectors, including the 0.45 / 0.55 abstention boundaries.
- Candidate: a fixed 10 → 4 → 1 network (49 parameters), fitted deterministically, with a linear control fitted the same way so a capacity gain can be told apart from a change of loss.
- Shadow scoring: the candidate scores the same vector and has no path to a published result.
- Replay:
ruview-fann-replayfits per room on Train sessions and scores HeldOut sessions with the qualification gates fixed in code.
Engine time for one row, MEASURED on one development workstation with a synthetic 10-feature vector:
| Operation | Time |
|---|---|
| Incumbent linear head | 6.5 ns |
| Same head through ruv-FANN | 33.6 ns |
| Candidate | 61–70 ns |
| Shadow, both heads | 75 ns |
| Prepare a head from its document | 6.2 µs |
ruv-FANN is pinned to the exact merged revision d94b47d8 with no default features.
Also since the last platform beta
- ESP32 firmware 0.8.18 (separate pre-release
v0.8.18-esp32): HE-LTF validity gate for C5/C6 and node mDNS discovery (ADR-423). - Presence benchmark harness (ADR-423): radar reference logger, CSI presence recorder and a leave-one-room-out scorer.
- Home Assistant blueprints now state which primitives the server cannot publish yet.
Boundary
- No hardware run backs any accuracy statement in this release. The presence, track and replay benchmarks are tools and protocols; their results are still to be produced.
- The ingest route has no authentication of its own. Keep the server on loopback or a trusted network.
- The ruv-FANN head is not wired into the room learner, which is not on
mainyet. - On the synthetic replay data the refitted linear control passes the same gates as the candidate, so no benefit from the extra capacity has been shown.
- ESP32 statements stay limited to presence, coarse motion and breathing-band vitals. Pose and multi-person identification are not claimed.
Validate
cd v2
cargo test -p wifi-densepose-sensing-server --bin sensing-server -- adr424 source_fusion
cargo test -p ruview-fann-head
cargo bench -p ruview-fann-head --bench head
cd ../scripts && python -m unittest tests/test_track_benchmark.py