r_stat_rssi/r_stat_snr straight from the RNode firmware's per-packet
stat reports — the direct way to tell "firmware reports signal stats"
from "it doesn't" when a peer's RSSI shows as unknown, and a natural
read-back for the LoRa panel.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Every Reticulum-heard peer surfaced as rssi=0 — indistinguishable from a
real 0 dBm reading and, worse, from "heard over the TCP bridge with no
radio involved at all", which made a TCP-fed mesh look like working RF
during the 2026-08-16 radio diagnosis.
- Sidecar: announce handler now uses the 4-arg RNS dispatch to get the
announce packet hash and reports per-announce rssi/snr from Reticulum's
packet-stat cache; LXMF deliveries report message.rssi/snr/q (LXMF
already populates them on direct RNode hops). All None over TCP or
multi-hop — the honest RF-vs-internet discriminator.
- Rust: ReticulumPeer caches last_rssi/last_snr from announce and recv
events (a TCP-relayed announce never blanks a real RF reading), and
get_contacts surfaces them so refresh_contacts propagates real values.
- Identity discovery no longer hardcodes rssi 0: unknown is now None
end-to-end and logged as such.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>