yggvault ratatoskr-space connected via regular web
Color theme
also available via yggdrasil mesh http://[203:b338:2a84:a18f:986:47ae:1a4:d8d3]/pkg/ruview/v0.3.0-streaming-engine
vault / ruview / v0.3.0-streaming-engine

ruview @ v0.3.0-streaming-engine

integrity

size
60.8 MiB
downloaded
last checked
source https://github.com/ruvnet/RuView · available · github

release notes

RuView Streaming Engine v0.3.0 — Auditable Environmental Intelligence

What this is

Most WiFi-sensing stacks emit a number and hope you trust it. RuView's streaming engine is built so you don't have to. Every conclusion it reaches — "someone is in the living room," "fall risk elevated," "the room layout changed" — carries a full evidence trail: which sensors saw it, how much they agreed, which calibration and model produced it, and what privacy policy it was emitted under.

The throughline is trust. If you ask "why should I believe this when it says a person fell?", the engine answers with signal evidence, sensor agreement, calibration provenance, and an auditable privacy posture — not just a confidence score.

This release lands the ADR-135→146 series: the data contracts, the trust/privacy/audit machinery, and the algorithms — all real, tested, and composed into one end-to-end pipeline cycle.

The two layers that make it auditable

What's new in v0.3.0

Area Capability
Frame contracts (ADR-136) ComplexSample (LE-canonical), provenance fields on every frame, CanonicalFrame BLAKE3 witness, Stage/Versioned/QualityScored traits
Calibration (ADR-135) BaselineCalibration::apply() stamps a deterministic calibration_id onto each frame
Fusion quality (ADR-137) QualityScore with per-node weights, evidence refs, and contradiction flags; calibration-mismatch detection
Array coordination (ADR-138) clock-quality + geometry gating; degraded nodes go "watch-only"
WorldGraph (ADR-139) the typed digital twin + privacy rollup + deterministic persistence
Semantic records (ADR-140) auditable state records + multi-signal agent routing
Privacy control plane (ADR-141) named modes + actions + a BLAKE3 hash-chained, tamper-evident attestation
Evolution + VoxelMap (ADR-142) cross-link "the room changed" detection + Bayesian occupancy, privacy-gated to a histogram
RF-SLAM (ADR-143) persistent reflector discovery → learned static anchors
UWB fusion (ADR-144) range-constraint refinement with outlier rejection (forward-looking)
Ablation harness (ADR-145) feature-matrix metrics incl. membership-inference privacy leakage
RF encoder (ADR-146) multi-task heads with per-head uncertainty + contrastive batcher (forward-looking)
Engine (wifi-densepose-engine) the composition root: one process_cycle() runs the whole trust pipeline

Quick start

use wifi_densepose_engine::StreamingEngine;
use wifi_densepose_bfld::PrivacyMode;
use wifi_densepose_geo::types::GeoRegistration;
use wifi_densepose_signal::ruvsense::fusion_quality::CalibrationId;

// 1. Build the engine with a privacy posture + model version.
let mut engine = StreamingEngine::new(PrivacyMode::PrivateHome, 1, GeoRegistration::default());

// 2. Describe the space (rooms + sensors are WorldGraph nodes).
let room = engine.add_room("living_room", "Living Room");
let sensor = engine.add_sensor("esp32-com9", room);
engine.register_node_geometry(0, 1.0, 0.0, 0.0);   // ADR-138 array geometry (optional)

// 3. Each 50 ms cycle: feed per-node CSI frames + the calibration epoch.
let out = engine.process_cycle(&node_frames, CalibrationId(0xABCD), room, now_ms)?;

// 4. The result is a *trusted* belief — fully traceable.
println!("class={:?} demoted={} evidence={:?}",
         out.effective_class, out.demoted, out.provenance.evidence);
assert_eq!(out.quality.calibration_id, Some(CalibrationId(0xABCD)));

// 5. Persist the world model; reload reproduces the same query results.
let snapshot = engine.snapshot_json()?;        // RVF payload — never raw RF frames

Per-node calibration (mismatch demotes privacy automatically):

let out = engine.process_cycle_calibrated(
    &node_frames,
    &[Some(CalibrationId(1)), Some(CalibrationId(2))], // disagree → CalibrationIdMismatch
    room, now_ms)?;
assert!(out.demoted);                          // privacy class demoted to Restricted
assert_eq!(out.quality.calibration_id, None);  // no single calibration epoch

Validated (acceptance tests that prove the architecture)

Performance & safety

Build & test

cd v2
cargo build --release --workspace --no-default-features    # optimized build
cargo test --workspace --no-default-features                # full suite
cargo test -p wifi-densepose-engine                         # 13 integration tests
cargo bench -p wifi-densepose-engine                        # per-cycle latency

Status (honest)

Integrated and validated end-to-end: ADR-135/136/137/138/139/141/142/143 via the wifi-densepose-engine composition root. Forward-looking / pending: live 20 Hz sensing-server loop wiring, UWB hardware (ADR-144), and RF-encoder model training (ADR-146). Each GitHub issue (#840–#850) lists what is Built vs Integration glue.

download

unix · zip
curl -fL -o v0.3.0-streaming-engine.zip https://ratatoskr.space/pkg/ruview/v0.3.0-streaming-engine.zip
                    printf '%s  %s\n' 'cc3c0158279774cc53b2a274351eafab500dbf5e00a8f45d9a286417d0ac7d47' 'v0.3.0-streaming-engine.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/ruview/v0.3.0-streaming-engine.zip"
$out = "v0.3.0-streaming-engine.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "cc3c0158279774cc53b2a274351eafab500dbf5e00a8f45d9a286417d0ac7d47") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.3.0-streaming-engine.tar.gz https://ratatoskr.space/pkg/ruview/v0.3.0-streaming-engine.tar.gz
                    printf '%s  %s\n' '7b891cb38c1382a51772ad9abb755700df0f2cd3bc369fe95e6f8495800338c4' 'v0.3.0-streaming-engine.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/ruview/v0.3.0-streaming-engine.tar.gz"
$out = "v0.3.0-streaming-engine.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "7b891cb38c1382a51772ad9abb755700df0f2cd3bc369fe95e6f8495800338c4") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v0.3.0-streaming-engine.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.3.0-streaming-engine.zip
                    printf '%s  %s\n' 'cc3c0158279774cc53b2a274351eafab500dbf5e00a8f45d9a286417d0ac7d47' 'v0.3.0-streaming-engine.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.3.0-streaming-engine.zip"
$out = "v0.3.0-streaming-engine.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "cc3c0158279774cc53b2a274351eafab500dbf5e00a8f45d9a286417d0ac7d47") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v0.3.0-streaming-engine.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.3.0-streaming-engine.tar.gz
                    printf '%s  %s\n' '7b891cb38c1382a51772ad9abb755700df0f2cd3bc369fe95e6f8495800338c4' 'v0.3.0-streaming-engine.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.3.0-streaming-engine.tar.gz"
$out = "v0.3.0-streaming-engine.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "7b891cb38c1382a51772ad9abb755700df0f2cd3bc369fe95e6f8495800338c4") { throw "sha256 mismatch" }
artifact format size hashes
v0.3.0-streaming-engine.zip zip 60.8 MiB
blake3-24 aff182c0ce6e1632a2189ccb3077b5a14a6e3a80c7a6cbdd
sha256 cc3c0158279774cc53b2a274351eafab500dbf5e00a8f45d9a286417d0ac7d47
sha1 9006c6302edb19782c7f77ff60e0437053746e46
v0.3.0-streaming-engine.tar.gz tar.gz 59.0 MiB
blake3-24 f2f177420025e8af6190ae3a1a2da8393adfaa3721905f43
sha256 7b891cb38c1382a51772ad9abb755700df0f2cd3bc369fe95e6f8495800338c4
sha1 131d01fad1863037627cfccccea31a863facf8e9

install

bazel
http_archive(
    name = "ruview",
    urls = ["https://ratatoskr.space/pkg/ruview/v0.3.0-streaming-engine.tar.gz"],
    integrity = "sha256-e4kcs4wTgqUXcq2au3VXAN8PLNO8Np/pXm+ElYADOMQ=",
    strip_prefix = "ruview-v0.3.0-streaming-engine",
)
zig
.url = "https://ratatoskr.space/pkg/ruview/v0.3.0-streaming-engine.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
    name = "ruview",
    urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.3.0-streaming-engine.tar.gz"],
    integrity = "sha256-e4kcs4wTgqUXcq2au3VXAN8PLNO8Np/pXm+ElYADOMQ=",
    strip_prefix = "ruview-v0.3.0-streaming-engine",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v0.3.0-streaming-engine.tar.gz",
← v1444v1428 →