v2629

ruvnet/RuViewv2629Sep 9, 2026by github-actions[bot]

AI Summary

Fixes a sensing-server bug where physically implausible RSSI sentinel values were incorrectly updating node history and mean RSSI calculations.

Key Highlights

  • Fixes RSSI poisoning issue caused by edge-vitals packets without valid flags.
  • Adds an `is_plausible_rssi()` guard to filter out invalid values like -1 or -2 dBm.
  • Ensures implausible readings fall back to the node's last known-good reading.
  • Mirrors the plausibility-filter pattern already present in `update_csi_fps_ema()`.

Full Release Notes

Automated release from CI pipeline

**Changes:**
fix(sensing-server): don't let edge-vitals sentinel RSSI poison mean_rssi (#1882)

The ESP32 edge-vitals packet (0xC511_0002) carries a raw i8 RSSI byte with
no "valid" flag. When the edge pipeline hasn't sampled a real reading yet,
it has been observed sending near-zero sentinel values (-1, -2 dBm) that
are physically implausible for a WiFi link. These were pushed straight
into the node's rssi_history and the room's fused mean_rssi, producing a
one-tick reading of ~-2 dBm on node 3 while its own CSI path simultaneously
showed a real ~-50 dBm signal.

Add an is_plausible_rssi() guard (mirroring the existing
update_csi_fps_ema() plausibility-filter pattern) so an implausible RSSI
falls back to the node's last known-good reading instead of overwriting it.

**Docker Image:**
`ghcr.io/ruvnet/RuView:00a42d7cda32cb742206593d8fb2f854db41a19e`