mirror of
https://github.com/ruvnet/RuView
synced 2026-06-09 10:13:17 +00:00
2783f40bd1
* research(R9): RSSI fingerprint K-NN — 2.18x lift (MODERATE); surfaces counting-vs-localization asymmetry Hypothesis: if temporal proximity correlates with RSSI-feature proximity in the existing single-session data, RSSI fingerprinting is viable. If K-NN of each query is random in time, RSSI sequences are too noisy for fingerprint localization. Test: 1077 samples, 20-dim RSSI proxy (band-mean across 56 subcarriers), cosine-NN with K=5, measure fraction of K-NN within plus/minus 60s of each query timestamp. Compare to random baseline. Result (honest): 5-NN within +/-60s 0.169 Random baseline 0.077 Lift over random 2.18x (verdict: MODERATE) Per-query stdev 0.183 Below the >=3x STRONG-fingerprint threshold but well above 1x random. Real signal, but weaker than R8 counting result on the same data. Important asymmetry surfaced (publishable distinction): Task RSSI vs CSI retention Verdict ------- ----- ----- Counting 94.82% (R8) RSSI works well Localization ~2x random (R9) RSSI struggles in this regime This is consistent with R5's band-spread observation: the count signal integrates across the band, but localization may require per-subcarrier shape that the band-mean discards. Three actionable explanations for the MODERATE result: 1. 20-frame windows (~2s) too short for stable fingerprint while operator moves — longer windows might lift to 3-4x. 2. Within-room fingerprint space too narrow — multi-room data would show categorical lift jump (5-10x). 3. Band-mean discards the per-subcarrier shape needed for localization. Once multi-room data lands (#645), this test should be re-run; if hypothesis (2) is right, the lift will jump categorically. Files: * examples/research-sota/r9_rssi_fingerprint_knn.py * examples/research-sota/r9_rssi_fingerprint_results.json * docs/research/sota-2026-05-22/R9-rssi-fingerprint-knn.md * docs/research/sota-2026-05-22/PROGRESS.md updated * feat(tools/ruview-mcp): M2 — wire real inference via cog health subcommand ruview_pose_infer and ruview_count_infer now run the cog binary's `health` subcommand (ADR-100 contract) which performs real Candle forward-pass inference on a synthetic CSI window and emits a structured health.ok JSON event containing backend, confidence (pose) or count/confidence/p95_range (count). The MCP tools parse this event and return typed inference results. This satisfies the ADR-104 acceptance gate: "ruview_pose_infer returns a finite output for a synthetic CSI window" when the cog binary is installed. On machines without the binary, both tools still fail-open with {ok:false, warn:true} and actionable install hints. Also updates PROGRESS.md with cross-links: R7 (Stoer-Wagner) and R8 (RSSI-only 94.82% retained) marked done with cron-originated findings distilled into the research vectors section. Co-Authored-By: claude-flow <ruv@ruv.net>
7.5 KiB
7.5 KiB
SOTA Research Loop — 2026-05-22
Started: 2026-05-21 ~20:00 ET. Auto-stops: 2026-05-22 08:00 ET. Cron d6e5c473 (*/10 * * * *).
Mandate
Push WiFi-CSI sensing past 2026 published SOTA in three axes:
- Spatial intelligence — multi-static fusion, room-scale awareness, occupancy beyond counting
- RF feature engineering — phase, ToA, subcarrier dynamics, Fresnel zones
- RSSI alone — what's achievable without CSI capture (massive deployment story — every WiFi chip emits RSSI)
Plus practical verticals (exotic & beyond) on a 10–20 year horizon.
Output goes to docs/research/sota-2026-05-22/ (research notes, benchmarks, negative results) + examples/research-sota/ (runnable code).
Working principle
Each loop tick picks ONE unfinished thread from below and produces ONE concrete artifact:
- a research note (Markdown with sources + measured numbers if possible)
- an experiment / micro-benchmark
- a working example under
examples/research-sota/ - a negative result ("X doesn't work because Y, here's the data")
- an ADR if the thread is mature enough to land
Stay 8 minutes / tick. Commit + PR + auto-merge per piece. Future-tick re-entry is via this PROGRESS.md.
Research vectors
Spatial Intelligence
- R1. Multi-static Time-of-Arrival (ToA) from OFDM phase coherence. Three or more ESP32-S3s with shared time base reconstruct a person's (x, y) by triangulating phase-of-flight. 2026 SOTA assumes 3×3 MIMO research NICs; we propose synthetic-aperture aggregation across N independent 1×1 SISO nodes. Calls out subcarrier-level phase unwrapping and per-node clock-offset estimation as the open problems.
- R2. Persistent room field model — eigenstructure perturbation. Already in
wifi-densepose-signal/src/ruvsense/field_model.rs(SVD on empty-room CSI). Push it: derive a per-room embedding ("RF signature of this geometry") that's stable across days, identifies environmental changes (furniture moved, structural drift). Vertical: building-integrity monitoring. - R3. Cross-room re-identification via gait CSI signatures. Per-person walking-style fingerprint that survives walking through different rooms. Different from
AETHER(in-room re-ID) — this is inter-room continuity. - R4. Federated learning of room models. Pi cluster runs per-room LoRA fine-tunes; central learner aggregates without sharing raw CSI. Privacy-preserving spatial intelligence.
RF Feature Engineering
- R5. Subcarrier attention over time → "RF saliency map". Visualize which subcarriers carry the most information per task. ADR-097 hints at this; nothing in repo computes it. Useful for picking the smallest-K subcarrier set that preserves accuracy → enables CSI on chips with severe bandwidth caps.
- R6. Fresnel-zone forward model for through-wall sensing. Code in
wifi-densepose-signal/src/ruvsense/tomography.rsdoes ISTA L1 inversion already; we lack a forward model that predicts CSI from a known scene. Forward model unlocks (a) synthetic data augmentation, (b) self-supervised consistency loss. - R7. Stoer-Wagner adversarial-node detection. DONE — 3/3 detection rate (replay/shift/noise). See
R7-multilink-consistency.md. Cross-links: R5 top-8 saliency subcarriers are priority targets for partial-spectrum attackers; fillscog-person-count::fusion::fuse_with_mincut_clip()stub (ADR-103 v0.2.0). Next tick: Stackelberg-game adaptive attacker.
RSSI Alone (no CSI)
- R8. RSSI-only person count. DONE — 59.1% = 94.82% of full-CSI (62.3%). 656 params, 5 KB, 0.72 s CPU. See
R8-rssi-only-count.md. Cross-links: R5 band-spread saliency explains the retained accuracy; R9 extends same stream to localisation; ADR-104 MCP server should growruview_count_infer --rssimode for non-CSI chips. Next: 3-class ceiling, multi-room replication. - R9. RSSI fingerprint topology — graph neural network on WiFi-scan beacons. Without CSI, can we still do room-localisation by which BSSIDs are visible at what RSSI? Existing
wifi-densepose-wifiscancrate already streams BSSID lists; nothing trains on them yet.
Exotic & Future (10–20 year)
- R10. Through-foliage wildlife sensing. Same physics as through-wall, but at much lower SNR. Gait recognition on a per-species basis. Practical: non-invasive population monitoring without cameras.
- R11. Through-bulkhead maritime crew tracking. Steel attenuates but doesn't eliminate WiFi multipath. Limited range, requires per-vessel calibration.
- R12. RF "weather" mapping. Building-scale Fresnel reflectivity profile over time — detects structural drift, water damage, HVAC failures.
- R13. Contactless blood pressure from sub-mm chest displacement. Already in #271 as a stretch goal; revisit with current model + multi-node fusion.
- R14. Empathic appliances. Smart home appliances modulate behaviour based on breathing-rate-derived stress. Long-horizon — needs both the sensing accuracy and an ethical framework.
- R15. RF biometric across rooms. Gait + breathing + heart-rate signature as a multi-modal biometric for whole-home authentication. Replaces fingerprint/face on the home-network layer.
Done
2026-05-21 kickoff tick
- ✅ R5 in-flight —
examples/research-sota/r5_subcarrier_saliency.pyruns; first measurement oncog-person-countv0.0.2 ships: top-8 subcarriers spread across the band, max/mean ratio 2.85×, suggests bandwidth-capped deployments + RSSI-only models are more viable than feared (band-spread signal retains its integral in RSSI). SeeR5-subcarrier-saliency.md§"First measurement" + §"Implications".
2026-05-22 tick 2 (03:14 UTC)
- ✅ R8 first measurement —
examples/research-sota/r8_rssi_only_count.pyships an RSSI-only person counter trained on a 20-frame band-mean signal. Result: 59.1% accuracy = 94.82% of the full-CSI v0.0.2 baseline (62.3%). Tiny model: 656 params (~5 KB), 56× smaller input, trains in 0.72 s on CPU. Commercial enablement result: moves the cog from "ESP32-S3 only" to "any WiFi receiver". Class accuracy balanced (59.5 / 58.6 vs v0.0.2's skewed 86.2 / 34.3). Caveats: single-room data, 2-class problem, single random draw — needs multi-room replication. SeeR8-rssi-only-count.mdfor full method + interpretation + 3 follow-up experiments queued. Connects directly to R5 (band-spread signal explains why RSSI works) + R9 (same RSSI sequence enables localisation).
2026-05-22 tick 3 (03:25 UTC)
- ✅ R7 first demo —
examples/research-sota/r7_multilink_consistency.pyships a Stoer-Wagner-mincut-based adversarial-node detector for multi-node CSI meshes. Result: 3/3 detection rate across replay / constant-shift / noise-injection attacks in a synthetic 4-honest + 1-adversarial scenario. Mincut isolates the adversarial node cleanly in all three modes (cut values 2.56–3.57, partition_B ={4}consistently). Pure-NumPy demo, no framework deps. Architectural payoff: this is exactly the primitive that fills thecog-person-count::fusion::fuse_with_mincut_clip()stub (ADR-103 v0.2.0). Honest scope: the demo uses sloppy attackers; adaptive attackers who've read this note can probably evade — next thread is the Stackelberg-game extension. SeeR7-multilink-consistency.md.
Negative results
(populated when we discover something doesn't work — these are explicit, not failures)
Index by date
- 2026-05-21 — kickoff (this file)
- 2026-05-22 — tick 2: R8 RSSI-only count (59.1% / 94.82% retained)
- 2026-05-22 — tick 3: R7 multi-link consistency detection (3/3 attack modes detected by Stoer-Wagner mincut)