Automated release from CI pipeline
Changes:
feat(tools/ruview-mcp): M2 — wire real inference via cog health (#706)
- 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:
- 20-frame windows (~2s) too short for stable fingerprint while operator
moves — longer windows might lift to 3-4x. - Within-room fingerprint space too narrow — multi-room data would
show categorical lift jump (5-10x). - 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
Docker Image:
ghcr.io/ruvnet/RuView:2783f40bd1146f065281987821fcf97079d48b87