docs(adr): Add ADR-017 — ruvector integration for signal and MAT crates

ADR-017 documents 7 concrete integration points across wifi-densepose-signal
(ADR-014 SOTA algorithms) and wifi-densepose-mat (ADR-001 disaster detection):

Signal crate opportunities:
1. subcarrier_selection.rs → ruvector-mincut DynamicMinCut: dynamic O(n^1.5 log n)
   sensitive/insensitive subcarrier partitioning (vs static O(n log n) sort)
2. spectrogram.rs → ruvector-attn-mincut: self-attention gating over STFT time
   frames to suppress noise and multipath interference
3. bvp.rs → ruvector-attention: ScaledDotProductAttention for sensitivity-weighted
   BVP aggregation across subcarriers (replaces uniform sum)
4. fresnel.rs → ruvector-solver: NeumannSolver estimates unknown TX-body-RX
   geometry from multi-subcarrier Fresnel observations

MAT crate opportunities:
5. triangulation.rs → ruvector-solver: O(1) 2×2 Neumann system for multi-AP
   TDoA survivor localization (vs O(N^3) dense Gaussian elimination)
6. breathing.rs → ruvector-temporal-tensor: tiered compression reduces
   13.4 MB/zone breathing buffer to 3.4–6.7 MB (50–75% less)
7. heartbeat.rs → ruvector-temporal-tensor: per-frequency-bin tiered storage
   for micro-Doppler spectrograms with hot/warm/cold access tiers

Also fixes ADR-002 dependency strategy: replaces non-existent crate names
(ruvector-core, ruvector-data-framework, ruvector-consensus, ruvector-wasm
at "0.1") with the verified published v2.0.4 crates per ADR-016.

https://claude.ai/code/session_01BSBAQJ34SLkiJy4A8SoiL4
This commit is contained in:
Claude
2026-02-28 16:03:55 +00:00
parent 45143e494d
commit 0e7e01c649
2 changed files with 628 additions and 15 deletions

View File

@@ -128,29 +128,39 @@ crates/wifi-densepose-rvf/
### Dependency Strategy
**Verified published crates** (crates.io, all at v2.0.4 as of 2026-02-28):
```toml
# In Cargo.toml workspace dependencies
[workspace.dependencies]
ruvector-core = { version = "0.1", features = ["hnsw", "sona", "gnn"] }
ruvector-data-framework = { version = "0.1", features = ["rvf", "witness", "crypto"] }
ruvector-consensus = { version = "0.1", features = ["raft"] }
ruvector-wasm = { version = "0.1", features = ["edge-runtime"] }
ruvector-mincut = "2.0.4" # Dynamic min-cut, O(n^1.5 log n) graph partitioning
ruvector-attn-mincut = "2.0.4" # Attention + mincut gating in one pass
ruvector-temporal-tensor = "2.0.4" # Tiered temporal compression (50-75% memory reduction)
ruvector-solver = "2.0.4" # NeumannSolver — O(√n) Neumann series convergence
ruvector-attention = "2.0.4" # ScaledDotProductAttention
```
Feature flags control which RuVector capabilities are compiled in:
> **Note (ADR-017 correction):** Earlier versions of this ADR specified
> `ruvector-core`, `ruvector-data-framework`, `ruvector-consensus`, and
> `ruvector-wasm` at version `"0.1"`. These crates do not exist at crates.io.
> The five crates above are the verified published API surface at v2.0.4.
> Capabilities such as RVF cognitive containers (ADR-003), HNSW search (ADR-004),
> SONA (ADR-005), GNN patterns (ADR-006), post-quantum crypto (ADR-007),
> Raft consensus (ADR-008), and WASM runtime (ADR-009) are internal capabilities
> accessible through these five crates or remain as forward-looking architecture.
> See ADR-017 for the corrected integration map.
Feature flags control which ruvector capabilities are compiled in:
```toml
[features]
default = ["rvf-store", "hnsw-search"]
rvf-store = ["ruvector-data-framework/rvf"]
hnsw-search = ["ruvector-core/hnsw"]
sona-learning = ["ruvector-core/sona"]
gnn-patterns = ["ruvector-core/gnn"]
post-quantum = ["ruvector-data-framework/crypto"]
witness-chains = ["ruvector-data-framework/witness"]
raft-consensus = ["ruvector-consensus/raft"]
wasm-edge = ["ruvector-wasm/edge-runtime"]
full = ["rvf-store", "hnsw-search", "sona-learning", "gnn-patterns", "post-quantum", "witness-chains", "raft-consensus", "wasm-edge"]
default = ["mincut-matching", "solver-interpolation"]
mincut-matching = ["ruvector-mincut"]
attn-mincut = ["ruvector-attn-mincut"]
temporal-compress = ["ruvector-temporal-tensor"]
solver-interpolation = ["ruvector-solver"]
attention = ["ruvector-attention"]
full = ["mincut-matching", "attn-mincut", "temporal-compress", "solver-interpolation", "attention"]
```
## Consequences