github ruvnet/RuView v0.9.5-presence-evidence-beta.1
RuView v0.9.5 Presence Evidence Beta 1

latest release: v3659
pre-release2 hours ago

RuView v0.9.5 Presence Evidence Beta 1

This beta adds the tools to test a presence model against independent labels, and reports what they found on real hardware: the existing per-node classifier is effectively always on for the link tested, and a small fitted head on windowed features is not.

Every figure below is MEASURED on one ESP32-C6 in one room over one afternoon. Treat them as a first result, not a specification.

What was measured (ADR-426)

Labels: "occupied" means keyboard or mouse input in the last three seconds; "empty" means a 31-minute stretch the operator declared by leaving the room.

Model, scored on held-out sessions False positives, empty room Sensitivity, occupied
Existing per-node classifier 99.6 % 93.7 %
ruv-FANN head on level features (/1) 2.6 % 87.2 %, falling to 71.9 % an hour later
ruv-FANN head on windowed features (/2) 0.0 % (0 of 3,069) 91.2 %, and 100 % on two later sessions
Linear control on windowed features (/2) 0.0 % 91.3 %, and 100 % on the later session
  • The existing classifier's defect is filed as #2522. It reported present on 6,093 of 6,104 empty-room observations. This release does not change it.
  • Windowed features are what fixed the drift. ruview.node-features/2 measures how much each reading varied over 30 seconds instead of its level. The variability of signal strength alone separated occupied from empty in every session.
  • ruv-FANN's extra capacity is not needed once the features are good. On windowed features the linear control matches the 73-parameter candidate.
  • Fitting is platform-specific. The same fit is bit-identical on three Linux targets and different on Windows, because f32::exp differs (ruv-FANN #210). One exported head scores identically on all four, so heads are shipped as files and never refitted per machine.

What is new

  • Server shadow, default off. Build with --features fann-shadow. RUVIEW_FANN_SHADOW_LOG captures per-node features; RUVIEW_FANN_SHADOW_HEAD scores an exported head beside the live decision; GET /api/v1/shadow/fann reports counters and disagreement. The head has no path to a published result. A default build contains no ruv-FANN.
  • Reference labels without extra hardware. scripts/input_activity_logger.py records keyboard and mouse idle time (nothing else) as an occupied-only reference. scripts/build_replay_rows.py turns a capture into replay rows labelled by a radar, by input activity, by an operator's declaration, or by the server itself, and every report states which.
  • Crate tools in ruview-fann-head: ruview-fann-fit (export a head from Train rows, --balance to even out the classes), ruview-fann-window (re-encode a capture with windowed features), ruview-fann-replay --learning-curve, and ruview-fann-repro (cross-machine reproducibility probe).

Boundary

  • One node, one room, one afternoon. No second room, no other day, no ESP32-S3.
  • "Occupied" was seated and typing. A motionless person may look like an empty room to a variability measure; that session has not been recorded. Neither has activity in an adjacent room.
  • "Empty" is the operator's declaration. No radar confirmed it.
  • The two empty halves used for Train and HeldOut are one continuous recording split in time.
  • The replay gates return "not judged": two of their four conditions were never recorded.
  • The shadow is a diagnostic. Nothing in this release changes what RuView publishes.
  • 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 ruview-fann-head
cargo test -p wifi-densepose-sensing-server --features fann-shadow --bin sensing-server -- adr426
cargo run --release -p ruview-fann-head --bin ruview-fann-repro
cd ../scripts && python -m unittest tests/test_build_replay_rows.py tests/test_input_activity_logger.py

Don't miss a new RuView release

NewReleases is sending notifications on new releases.