docs/adr/ADR-067-ruvector-v2.0.5-upgrade.md
Status: Proposed Date: 2026-03-23 Deciders: @ruvnet Related: ADR-016 (RuVector training pipeline integration), ADR-017 (RuVector signal + MAT integration), ADR-029 (RuvSense multistatic sensing)
RuView currently pins all five core RuVector crates at v2.0.4 (from crates.io) plus a vendored ruvector-crv v0.1.1 and optional ruvector-gnn v2.0.5. The upstream RuVector workspace has moved to v2.0.5 with meaningful improvements to the crates we depend on, and has introduced new crates that could benefit RuView's detection pipeline.
| RuView Module | RuVector Crate | Current Version | Purpose |
|---|---|---|---|
signal/subcarrier.rs | ruvector-mincut | 2.0.4 | Graph min-cut subcarrier partitioning |
signal/spectrogram.rs | ruvector-attn-mincut | 2.0.4 | Attention-gated spectrogram denoising |
signal/bvp.rs | ruvector-attention | 2.0.4 | Attention-weighted BVP aggregation |
signal/fresnel.rs | ruvector-solver | 2.0.4 | Fresnel geometry estimation |
mat/triangulation.rs | ruvector-solver | 2.0.4 | TDoA survivor localization |
mat/breathing.rs | ruvector-temporal-tensor | 2.0.4 | Tiered compressed breathing buffer |
mat/heartbeat.rs | ruvector-temporal-tensor | 2.0.4 | Tiered compressed heartbeat spectrogram |
viewpoint/* (4 files) | ruvector-attention | 2.0.4 | Cross-viewpoint fusion with geometric bias |
crv/ (optional) | ruvector-crv | 0.1.1 (vendored) | CRV protocol integration |
crv/ (optional) | ruvector-gnn | 2.0.5 | GNN graph topology |
ruvector-mincut:
std::timeruvector-attention / ruvector-attn-mincut:
ruvector-temporal-tensor:
ruvector-gnn:
Result in MultiHeadAttention and RuvectorLayer constructors (breaking improvement — safer)sona (new — Self-Optimizing Neural Architecture):
loadState/saveState), trajectory counter fixruvector-coherence (new):
ruvector-core (new):
Bump the 5 core crates from v2.0.4 to v2.0.5 in the workspace Cargo.toml:
ruvector-mincut = "2.0.5" # was 2.0.4 — 10-30% faster, safer
ruvector-attn-mincut = "2.0.5" # was 2.0.4 — workspace versioning
ruvector-temporal-tensor = "2.0.5" # was 2.0.4 — fmt only
ruvector-solver = "2.0.5" # was 2.0.4 — workspace versioning
ruvector-attention = "2.0.5" # was 2.0.4 — workspace versioning
Expected impact: The mincut performance improvement directly benefits signal/subcarrier.rs which runs subcarrier graph partitioning every tick. 10-30% faster partitioning reduces per-frame CPU cost.
Add ruvector-coherence with spectral feature to wifi-densepose-ruvector:
Use case: Replace or augment the custom phase coherence logic in viewpoint/coherence.rs with spectral graph coherence scoring. The current implementation uses phasor magnitude for phase coherence — spectral Fiedler estimation would provide a more robust measure of multi-node CSI consistency, especially for detecting when a node's signal quality degrades.
Integration point: viewpoint/coherence.rs — add SpectralCoherenceScore as a secondary coherence metric alongside existing phase phasor coherence. Use spectral gap estimation to detect structural changes in the multi-node CSI graph (e.g., a node dropping out or a new reflector appearing).
Replace the logistic regression adaptive classifier in the sensing server with a SONA-backed learning engine:
Current state: The sensing server's adaptive training (POST /api/v1/adaptive/train) uses a hand-rolled logistic regression on 15 CSI features. It requires explicit labeled recordings and provides no cross-session persistence.
Proposed improvement: Use sona::SonaEngine to:
saveState()/loadState() replaces the current adaptive_model.jsonfind_patterns() enables "this CSI signature looks like room X where we learned Y"Integration point: New adaptive_sona.rs module in wifi-densepose-sensing-server, behind a sona feature flag. The existing logistic regression remains the default.
Current state: The person detection pipeline uses hand-crafted features (variance, change_points, motion_band_power, spectral_power) with fixed normalization ranges.
Potential: Use ruvector-core's ONNX embedding support to generate learned CSI embeddings that capture room geometry, person count, and activity patterns in a single vector. This would enable:
Status: Exploratory — requires training data collection and embedding model design. Not a near-term target.
ruvector-gnn v2.0.5 changed constructors from panic to Result — any existing crv feature users need to handle the Result. Our vendored ruvector-crv may need updates.| Phase | Scope | Effort | Priority |
|---|---|---|---|
| 1 | Bump 5 crates to v2.0.5 | 1 hour | High — free perf + security |
| 2 | Add ruvector-coherence | 1 day | Medium — improves multi-node stability |
| 3 | SONA adaptive learning | 3 days | Medium — replaces manual training workflow |
| 4 | CSI embeddings via ruvector-core | 1-2 weeks | Low — exploratory research |
The vendor/ruvector git submodule has been updated from commit f8f2c60 (v2.0.4 era) to 51a3557 (latest origin/main). This provides local reference for the full upstream source when developing Phases 2-4.
vendor/ruvector/docs/adr/ADR-124*.mdvendor/ruvector/crates/sona/src/lib.rsvendor/ruvector/crates/ruvector-coherence/src/spectral.rsvendor/ruvector/crates/ruvector-core/src/embeddings.rs