github ruvnet/RuView v0.9.4-sensor-fusion-beta.1
RuView v0.9.4 Sensor Fusion Beta 1

latest release: v3632
pre-release49 minutes ago

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)

Three sources feed one fused, graded zone result

  • POST /api/v1/sources/readings accepts JSON-line readings from any sensor or time series: timestamp_ms, source, kind, zone, values, optional quality, health, synthetic. Up to 256 lines per request; a bad line is rejected on its own and reported by line number.
  • GET /api/v1/zones returns, 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/summary no 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)

Reference windows classed clear, ambiguous or unusable

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)

Incumbent head published, ruv-FANN candidate in shadow

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-replay fits 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 main yet.
  • 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

Don't miss a new RuView release

NewReleases is sending notifications on new releases.