ruview @ v0.8.0
integrity
- size
- 43.8 MiB
- downloaded
- last checked
release notes
v0.8.0 — Real-time CSI introspection / low-latency tap (ADR-099)
Host-only release. Firmware is unchanged from
v0.6.4-esp32— the introspection tap consumes the existing CSI frame stream produced by current firmware, no flash needed.
What's new
Adds midstream as a parallel introspection tap on wifi-densepose-sensing-server. Two new endpoints, both off by default behind --introspection:
| Endpoint | Format | Purpose |
|---|---|---|
GET /ws/introspection |
newline-delimited JSON, streamed at CSI frame rate | Live attractor + regime + signature-match stream |
GET /api/v1/introspection/snapshot |
single-shot JSON, RUVIEW_API_TOKEN-gated when auth is on |
Pull-based snapshot for orchestrators |
Each snapshot carries:
frame_count,timestamp_nsregime—Idle/Periodic/Transient/Chaotic/Unknownlyapunov_exponent,attractor_dim,attractor_confidenceregime_changed— boolean, flips on the first frame after a regime transitiontop_k_similarity[]— highest-scoring matches against a per-deployment signature library, withabove_thresholdflag
Performance numbers (measured on this branch)
tests/introspection_latency.rs, host-side L1 stand-in scoring on a 1-D mean-amplitude feature, 200-frame noise warm-up → 5-frame motion-ramp signature:
| Signal | Frames to recognise | Ratio vs event-path floor (16 frames) | Status |
|---|---|---|---|
top_k_similarity[0].above_threshold |
5 | 3.20× | Real, repeatable |
regime_changed (10-frame motion window) |
did not fire | — | Needs multi-dim features (ADR-208 P2) |
Per-frame update() p99 |
0.041 ms | ~24× under ADR-099 D4's 1 ms budget | ✅ Meets budget |
ADR-099 D8 is honestly amended in this release. The aspirational 10× ratio is architecturally unreachable on 1-D scalar features — the noise floor of a single mean-amplitude scalar is too wide to discriminate from a motion signature in 1–2 frames. Closing the gap requires ADR-208 Phase 2 (Hailo NPU vec128 embeddings) so multi-dim partial matches can score in 1–2 frames rather than 5. Until that lands, the tap ships off by default and D4 (per-frame budget) is met today, D8 (10× ratio) is contingent on ADR-208 P2.
Validation
- ✅
cargo test --workspace --no-default-features— 1,656 passed, 0 failed, 8 ignored - ✅
python archive/v1/data/proof/verify.py— VERDICT PASS, hash8c0680d7…51c6matches expected - ✅ 13 / 13 introspection-specific tests pass (8 lib + 5 latency/regression)
- ✅ PR #554 CI: 29 SUCCESS, 0 FAILURE (informational dep-scan / security-report still aggregating at merge time, both pass downstream of green code-correctness gates)
What's NOT in this release
- No firmware change — uses existing
v0.6.4-esp32firmware. - No change to
/ws/sensingorwifi-densepose-signal— ADR-098 already settled that those existing seams are correct; this is the parallel-addition counterpart, not a substitution. - No NPU dependency — runs entirely on the existing host CPU. D8's 10× target is documented as contingent on ADR-208 P2.
Files of interest
docs/adr/ADR-099-midstream-introspection-tap.md— full design record + amended D8.v2/crates/wifi-densepose-sensing-server/src/introspection.rs— 578 lines.v2/crates/wifi-densepose-sensing-server/tests/introspection_latency.rs— 288 lines.
Companion tracking
Issue #556 — capability surface, measured baseline, path to closing D8.
Upgrade
Pull, rebuild, restart with --introspection:
git pull && (cd v2 && cargo build --release -p wifi-densepose-sensing-server --bin sensing-server)
./v2/target/release/sensing-server --introspection
/ws/sensing clients are unaffected — no change to existing behaviour.
🤖 Generated with claude-flow
download
curl -fL -o v0.8.0.zip https://ratatoskr.space/pkg/ruview/v0.8.0.zip
printf '%s %s\n' 'd1272e3c269c4cb3fe9ffa51ac325eac9aa07b27e57666803e3e37e15056ffec' 'v0.8.0.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v0.8.0.zip"
$out = "v0.8.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "d1272e3c269c4cb3fe9ffa51ac325eac9aa07b27e57666803e3e37e15056ffec") { throw "sha256 mismatch" }
curl -fL -o v0.8.0.tar.gz https://ratatoskr.space/pkg/ruview/v0.8.0.tar.gz
printf '%s %s\n' '07b482a342f913a8dbe3491e1e8d803fba1471909038d4e0e77200714d8d8ee3' 'v0.8.0.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v0.8.0.tar.gz"
$out = "v0.8.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "07b482a342f913a8dbe3491e1e8d803fba1471909038d4e0e77200714d8d8ee3") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v0.8.0.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.8.0.zip
printf '%s %s\n' 'd1272e3c269c4cb3fe9ffa51ac325eac9aa07b27e57666803e3e37e15056ffec' 'v0.8.0.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.8.0.zip"
$out = "v0.8.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "d1272e3c269c4cb3fe9ffa51ac325eac9aa07b27e57666803e3e37e15056ffec") { throw "sha256 mismatch" }
curl -fL -o v0.8.0.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.8.0.tar.gz
printf '%s %s\n' '07b482a342f913a8dbe3491e1e8d803fba1471909038d4e0e77200714d8d8ee3' 'v0.8.0.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.8.0.tar.gz"
$out = "v0.8.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "07b482a342f913a8dbe3491e1e8d803fba1471909038d4e0e77200714d8d8ee3") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v0.8.0.zip | zip | 43.5 MiB |
blake3-24 8ac2626dd115ccd11bdcc65f06d15ccfbf16a90acbc51cdb
sha256 d1272e3c269c4cb3fe9ffa51ac325eac9aa07b27e57666803e3e37e15056ffec
sha1 388c0a0a2641fffbae1df345bbf6704efe06fb5a
|
| v0.8.0.tar.gz | tar.gz | 42.3 MiB |
blake3-24 4f39a2a9385064999749dd05bc279b905020c5c9a6df7f5e
sha256 07b482a342f913a8dbe3491e1e8d803fba1471909038d4e0e77200714d8d8ee3
sha1 e65221583e46dd2da0672e85c0beb9be7ddf9548
|
install
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v0.8.0.tar.gz"],
integrity = "sha256-B7SCo0L5E6jb40keHo2AP7oUcZCQONTg53IAcU2NjuM=",
strip_prefix = "ruview-v0.8.0",
)
.url = "https://ratatoskr.space/pkg/ruview/v0.8.0.tar.gz",
install via yggdrasil mesh
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.8.0.tar.gz"],
integrity = "sha256-B7SCo0L5E6jb40keHo2AP7oUcZCQONTg53IAcU2NjuM=",
strip_prefix = "ruview-v0.8.0",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.8.0.tar.gz",