ruv
e99a41434d
chore: bump workspace to v0.3.0 and publish 15 crates to crates.io
...
- Workspace version: 0.2.0 → 0.3.0
- All internal path dependency versions updated
- ruvector-crv/gnn gated behind optional `crv` feature (removed [patch.crates-io])
- All 15 crates published to crates.io at v0.3.0
Published crates (in order):
1. wifi-densepose-core
2. wifi-densepose-vitals
3. wifi-densepose-wifiscan
4. wifi-densepose-hardware
5. wifi-densepose-config
6. wifi-densepose-db
7. wifi-densepose-signal
8. wifi-densepose-nn
9. wifi-densepose-ruvector
10. wifi-densepose-api
11. wifi-densepose-train
12. wifi-densepose-mat
13. wifi-densepose-wasm
14. wifi-densepose-sensing-server
15. wifi-densepose-cli
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-03-02 08:39:23 -05:00
ruv
60e0e6d3c4
feat: ADR-033 CRV signal-line integration + ruvector-crv 6-stage pipeline
...
Implement full CRV (Coordinate Remote Viewing) signal-line protocol
mapping to WiFi CSI sensing via ruvector-crv:
- Stage I: CsiGestaltClassifier (6 gestalt types from amplitude/phase)
- Stage II: CsiSensoryEncoder (texture/color/temperature/sound/luminosity/dimension)
- Stage III: Mesh topology encoding (AP nodes/links → GNN graph)
- Stage IV: Coherence gate → AOL detection (signal vs noise separation)
- Stage V: Pose interrogation via differentiable search
- Stage VI: Person partitioning via MinCut clustering
- Cross-session convergence for cross-room identity
New files:
- crv/mod.rs: 1,430 lines, 43 tests
- crv_bench.rs: 8 criterion benchmarks (gestalt, sensory, pipeline, convergence)
- ADR-033: 740-line architecture decision with 30+ acceptance criteria
- patches/ruvector-crv: Fix ruvector-gnn 2.0.5 API mismatch
Dependencies: ruvector-crv 0.1.1, ruvector-gnn 2.0.5
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-03-01 22:21:59 -05:00
ruv
b4f1e55546
feat: combine ADR-029/030/031 + DDD domain model into implementation branch
...
Merges two feature branches into ruvsense-full-implementation:
- ADR-029: RuvSense multistatic sensing mode
- ADR-030: RuvSense persistent field model (7 exotic tiers)
- ADR-031: RuView sensing-first RF mode (renumbered from ADR-028-ruview)
- DDD domain model (6 bounded contexts, event bus)
- Research docs (multistatic fidelity architecture, SOTA 2026)
Renames ADR-028-ruview → ADR-031 to avoid conflict with ADR-028 (ESP32 audit).
Updates CLAUDE.md with all 31 ADRs.
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-03-01 21:25:14 -05:00
ruv
00530aee3a
merge: resolve README conflict (26 ADRs includes ADR-025 + ADR-026)
...
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-03-01 11:02:18 -05:00
Claude
ed3261fbcb
feat(ruvector): implement ADR-017 as wifi-densepose-ruvector crate + fix MAT warnings
...
New crate `wifi-densepose-ruvector` implements all 7 ruvector v2.0.4
integration points from ADR-017 (signal processing + MAT disaster detection):
signal::subcarrier — mincut_subcarrier_partition (ruvector-mincut)
signal::spectrogram — gate_spectrogram (ruvector-attn-mincut)
signal::bvp — attention_weighted_bvp (ruvector-attention)
signal::fresnel — solve_fresnel_geometry (ruvector-solver)
mat::triangulation — solve_triangulation TDoA (ruvector-solver)
mat::breathing — CompressedBreathingBuffer 50-75% mem reduction (ruvector-temporal-tensor)
mat::heartbeat — CompressedHeartbeatSpectrogram tiered compression (ruvector-temporal-tensor)
16 tests, 0 compilation errors. Workspace grows from 14 → 15 crates.
MAT crate: fix all 54 warnings (0 remaining in wifi-densepose-mat):
- Remove unused imports (Arc, HashMap, RwLock, mpsc, Mutex, ConfidenceScore, etc.)
- Prefix unused variables with _ (timestamp_low, agc, perm)
- Add #![allow(unexpected_cfgs)] for onnx feature gates in ML files
- Move onnx-conditional imports under #[cfg(feature = "onnx")] guards
README: update crate count 14→15, ADR count 24→26, add ruvector crate
table with 7-row integration summary.
Total tests: 939 → 955 (16 new). All passing, 0 regressions.
https://claude.ai/code/session_0164UZu6rG6gA15HmVyLZAmU
2026-03-01 15:50:05 +00:00
Tuan Tran
0723af8f8a
update cargo.lock
2026-03-01 14:30:12 +07:00
Tuan Tran
504875e608
remove unused once-cell package
2026-03-01 14:26:29 +07:00
ruv
fc409dfd6a
feat: ADR-023 full DensePose training pipeline (Phases 1-8)
...
Implement complete WiFi CSI-to-DensePose neural network pipeline:
Phase 1 - Dataset loaders: .npy/.mat v5 parsers, MM-Fi + Wi-Pose
loaders, subcarrier resampling (114->56, 30->56), DataPipeline
Phase 2 - Graph transformer: COCO BodyGraph (17 kp, 16 edges),
AntennaGraph, multi-head CrossAttention, GCN message passing,
CsiToPoseTransformer full pipeline
Phase 4 - Training loop: 6-term composite loss (MSE, cross-entropy,
UV regression, temporal consistency, bone length, symmetry),
SGD+momentum, cosine+warmup scheduler, PCK/OKS metrics, checkpoints
Phase 5 - SONA adaptation: LoRA (rank-4, A*B delta), EWC++ Fisher
regularization, EnvironmentDetector (3-sigma drift), temporal
consistency loss
Phase 6 - Sparse inference: NeuronProfiler hot/cold partitioning,
SparseLinear (skip cold rows), INT8/FP16 quantization with <0.01
MSE, SparseModel engine, BenchmarkRunner
Phase 7 - RVF pipeline: 6 new segment types (Index, Overlay, Crypto,
WASM, Dashboard, AggregateWeights), HNSW index, OverlayGraph,
RvfModelBuilder, ProgressiveLoader (3-layer: A=instant, B=hot, C=full)
Phase 8 - Server integration: --model, --progressive CLI flags,
4 new REST endpoints, WebSocket pose_keypoints + model_status
229 tests passing (147 unit + 48 bin + 34 integration)
Benchmark: 9,520 frames/sec (105μs/frame), 476x real-time at 20 Hz
7,832 lines of pure Rust, zero external ML dependencies
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-02-28 23:22:15 -05:00
ruv
1192de951a
feat: ADR-021 vital sign detection + RVF container format ( closes #45 )
...
Implement WiFi CSI-based vital sign detection and RVF model container:
- Pure-Rust radix-2 DIT FFT with Hann windowing and parabolic interpolation
- FIR bandpass filter (windowed-sinc, Hamming) for breathing (0.1-0.5 Hz)
and heartbeat (0.8-2.0 Hz) band isolation
- VitalSignDetector with rolling buffers (30s breathing, 15s heartbeat)
- RVF binary container with 64-byte SegmentHeader, CRC32 integrity,
6 segment types (Vec, Manifest, Quant, Meta, Witness, Profile)
- RvfBuilder/RvfReader with file I/O and VitalSignConfig support
- Server integration: --benchmark, --load-rvf, --save-rvf CLI flags
- REST endpoint /api/v1/vital-signs and WebSocket vital_signs field
- 98 tests (32 unit + 16 RVF integration + 18 vital signs integration)
- Benchmark: 7,313 frames/sec (136μs/frame), 365x real-time at 20 Hz
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-02-28 22:52:19 -05:00
ruv
d956c30f9e
feat: Rust sensing server with full DensePose-compatible API
...
Replace Python FastAPI + WebSocket servers with a single 2.1MB Rust binary
(wifi-densepose-sensing-server) that serves all UI endpoints:
- REST: /health/*, /api/v1/info, /api/v1/pose/current, /api/v1/pose/stats,
/api/v1/pose/zones/summary, /api/v1/stream/status
- WebSocket: /api/v1/stream/pose (pose_data with 17 COCO keypoints),
/ws/sensing (raw sensing_update stream on port 8765)
- Static: /ui/* with no-cache headers
WiFi-derived pose estimation: derive_pose_from_sensing() generates 17 COCO
keypoints from CSI/WiFi signal data with motion-driven animation.
Data sources: ESP32 CSI via UDP :5005, Windows WiFi via netsh, simulation
fallback. Auto-detection probes each in order.
UI changes:
- Point all endpoints to Rust server on :8080 (was Python :8000)
- Fix WebSocket sensing URL to include /ws/sensing path
- Remove sensingOnlyMode gating — all tabs init normally
- Remove api.service.js sensing-only short-circuit
- Fix clearPingInterval bug in websocket.service.js
Also removes obsolete k8s/ template manifests.
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-02-28 21:29:45 -05:00
rUv
92a5182dc3
feat(adr-018): ESP32-S3 firmware, Rust aggregator, and live CSI pipeline
...
Complete end-to-end WiFi CSI capture pipeline verified on real hardware:
- ESP32-S3 firmware: WiFi STA + promiscuous mode CSI collection,
ADR-018 binary serialization, UDP streaming at ~20 Hz
- Rust aggregator CLI binary (clap): receives UDP frames, parses with
Esp32CsiParser, prints per-frame summary (node, seq, rssi, amp)
- UDP aggregator module with per-node sequence tracking and drop detection
- CsiFrame bridge to detection pipeline (amplitude/phase/SNR conversion)
- Python ESP32 binary parser with UDP reader
- Presence detection confirmed: motion score 10/10 from live CSI variance
Hardware verified: ESP32-S3-DevKitC-1 (CP2102, MAC 3C:0F:02:EC:C2:28),
Docker ESP-IDF v5.2 build, esptool 5.1.0 flash, 20 Rust + 6 Python tests pass.
Co-Authored-By: claude-flow <ruv@ruv.net >
2026-02-28 13:22:04 -05:00
Claude
18170d7daf
feat(adr-017): Complete all 7 ruvector integrations across signal and MAT crates
...
All ADR-017 integration points now implemented:
--- wifi-densepose-signal ---
1. subcarrier_selection.rs — ruvector-mincut: mincut_subcarrier_partition
uses DynamicMinCut to dynamically partition sensitive/insensitive
subcarriers via O(n^1.5 log n) graph bisection. Tests: 8 passed.
2. spectrogram.rs — ruvector-attn-mincut: gate_spectrogram applies
self-attention (Q=K=V, configurable lambda) over STFT time frames
to suppress noise/multipath interference. Tests: 2 added.
3. bvp.rs — ruvector-attention: attention_weighted_bvp uses
ScaledDotProductAttention for sensitivity-weighted BVP aggregation
across subcarriers (vs uniform sum). Tests: 2 added.
4. fresnel.rs — ruvector-solver: solve_fresnel_geometry estimates
unknown TX-body-RX geometry from multi-subcarrier Fresnel observations
via NeumannSolver. Regularization scaled to inv_w_sq_sum * 0.5 for
guaranteed convergence (spectral radius = 0.667). Tests: 10 passed.
--- wifi-densepose-mat ---
5. localization/triangulation.rs — ruvector-solver: solve_tdoa_triangulation
solves multi-AP TDoA positioning via 2×2 NeumannSolver normal equations
(Cramer's rule fallback). O(1) in AP count. Tests: 2 added.
6. detection/breathing.rs — ruvector-temporal-tensor: CompressedBreathingBuffer
uses TemporalTensorCompressor with tiered quantization for 50-75%
CSI amplitude memory reduction (13.4→3.4-6.7 MB/zone). Tests: 2 added.
7. detection/heartbeat.rs — ruvector-temporal-tensor: CompressedHeartbeatSpectrogram
stores per-bin TemporalTensorCompressor for micro-Doppler spectrograms
with hot/warm/cold tiers. Tests: 1 added.
Cargo.toml: ruvector deps optional in MAT crate (feature = "ruvector"),
enabled by default. Prevents --no-default-features regressions.
Pre-existing MAT --no-default-features failures are unrelated (api/dto.rs
serde gating, pre-existed before this PR).
Test summary: 144 MAT lib tests + 91 signal tests = all passed.
cargo check wifi-densepose-mat (default features): 0 errors.
cargo check wifi-densepose-signal: 0 errors.
https://claude.ai/code/session_01BSBAQJ34SLkiJy4A8SoiL4
2026-02-28 16:22:39 +00:00
Claude
cca91bd875
feat(adr-017): Implement ruvector integrations in signal crate (partial)
...
Agents completed three of seven ADR-017 integration points:
1. subcarrier_selection.rs — ruvector-mincut: mincut_subcarrier_partition
partitions subcarriers into (sensitive, insensitive) groups using
DynamicMinCut. O(n^1.5 log n) amortized vs O(n log n) static sort.
Includes test: mincut_partition_separates_high_low.
2. spectrogram.rs — ruvector-attn-mincut: gate_spectrogram applies
self-attention (Q=K=V) over STFT time frames to suppress noise and
multipath interference frames. Configurable lambda gating strength.
Includes tests: preserves shape, finite values.
3. bvp.rs — ruvector-attention stub added (in progress by agent).
4. Cargo.toml — added ruvector-mincut, ruvector-attn-mincut,
ruvector-temporal-tensor, ruvector-solver, ruvector-attention
as workspace deps in wifi-densepose-signal crate.
Cargo.lock updated for new dependencies.
Remaining ADR-017 integrations (fresnel.rs, MAT crate) still in
progress via background agents.
https://claude.ai/code/session_01BSBAQJ34SLkiJy4A8SoiL4
2026-02-28 16:10:18 +00:00
Claude
81ad09d05b
feat(train): Add ruvector integration — ADR-016, deps, DynamicPersonMatcher
...
- docs/adr/ADR-016: Full ruvector integration ADR with verified API details
from source inspection (github.com/ruvnet/ruvector). Covers mincut,
attn-mincut, temporal-tensor, solver, and attention at v2.0.4.
- Cargo.toml: Add ruvector-mincut, ruvector-attn-mincut, ruvector-temporal-
tensor, ruvector-solver, ruvector-attention = "2.0.4" to workspace deps
and wifi-densepose-train crate deps.
- metrics.rs: Add DynamicPersonMatcher wrapping ruvector_mincut::DynamicMinCut
for subpolynomial O(n^1.5 log n) multi-frame person tracking; adds
assignment_mincut() public entry point.
- proof.rs, trainer.rs, model.rs, dataset.rs, subcarrier.rs: Agent
improvements to full implementations (loss decrease verification, SHA-256
hash, LCG shuffle, ResNet18 backbone, MmFiDataset, linear interp).
- tests: test_config, test_dataset, test_metrics, test_proof, training_bench
all added/updated. 100+ tests pass with no-default-features.
https://claude.ai/code/session_01BSBAQJ34SLkiJy4A8SoiL4
2026-02-28 15:42:10 +00:00
Claude
fce1271140
feat(rust): Complete training pipeline — losses, metrics, model, trainer, binaries
...
Losses (losses.rs — 1056 lines):
- WiFiDensePoseLoss with keypoint (visibility-masked MSE), DensePose
(cross-entropy + Smooth L1 UV masked to foreground), transfer (MSE)
- generate_gaussian_heatmaps: Tensor-native 2D Gaussian heatmap gen
- compute_losses: unified functional API
- 11 deterministic unit tests
Metrics (metrics.rs — 984 lines):
- PCK@0.2 / PCK@0.5 with torso-diameter normalisation
- OKS with COCO standard per-joint sigmas
- MetricsAccumulator for online streaming eval
- hungarian_assignment: O(n³) Kuhn-Munkres min-cut via DFS augmenting
paths for optimal multi-person keypoint assignment (ruvector min-cut)
- build_oks_cost_matrix: 1−OKS cost for bipartite matching
- 20 deterministic tests (perfect/wrong/invisible keypoints, 2×2/3×3/
rectangular/empty Hungarian cases)
Model (model.rs — 713 lines):
- WiFiDensePoseModel end-to-end with tch-rs
- ModalityTranslator: amp+phase FC encoders → spatial pseudo-image
- Backbone: lightweight ResNet-style [B,3,48,48]→[B,256,6,6]
- KeypointHead: [B,256,6,6]→[B,17,H,W] heatmaps
- DensePoseHead: [B,256,6,6]→[B,25,H,W] parts + [B,48,H,W] UV
Trainer (trainer.rs — 777 lines):
- Full training loop: Adam, LR milestones, gradient clipping
- Deterministic batch shuffle via LCG (seed XOR epoch)
- CSV logging, best-checkpoint saving, early stopping
- evaluate() with MetricsAccumulator and heatmap argmax decode
Binaries:
- src/bin/train.rs: production MM-Fi training CLI (clap)
- src/bin/verify_training.rs: trust kill switch (EXIT 0/1/2)
Benches:
- benches/training_bench.rs: criterion benchmarks for key ops
Tests:
- tests/test_dataset.rs (459 lines)
- tests/test_metrics.rs (449 lines)
- tests/test_subcarrier.rs (389 lines)
proof.rs still stub — trainer agent completing it.
https://claude.ai/code/session_01BSBAQJ34SLkiJy4A8SoiL4
2026-02-28 15:22:54 +00:00
Claude
6af0236fc7
feat: Complete ADR-001, ADR-009, ADR-012 implementations with zero mocks
...
ADR-001 (WiFi-Mat disaster response pipeline):
- Add EnsembleClassifier with weighted voting (breathing/heartbeat/movement)
- Wire EventStore into DisasterResponse with domain event emission
- Add scan control API endpoints (push CSI, scan control, pipeline status, domain events)
- Implement START triage protocol (Immediate/Delayed/Minor/Deceased/Unknown)
- Critical patterns (Agonal/Apnea) bypass confidence threshold for safety
- Add 6 deterministic integration tests with synthetic sinusoidal CSI data
ADR-009 (WASM signal pipeline):
- Add pushCsiData() with zero-crossing breathing rate extraction
- Add getPipelineConfig() for runtime configuration access
- Update TypeScript type definitions for new WASM exports
ADR-012 (ESP32 CSI sensor mesh):
- Implement CsiFrame, CsiMetadata, SubcarrierData types
- Implement Esp32CsiParser with binary frame parsing (magic/header/IQ pairs)
- Add parse_stream() with automatic resync on corruption
- Add ParseError enum with descriptive error variants
- 12 unit tests covering valid frames, corruption, multi-frame streams
All 275 workspace tests pass. No mocks, no stubs, no placeholders.
https://claude.ai/code/session_01Ki7pvEZtJDvqJkmyn6B714
2026-02-28 14:15:26 +00:00
Claude
6b20ff0c14
feat: Add wifi-Mat disaster detection enhancements
...
Implement 6 optional enhancements for the wifi-Mat module:
1. Hardware Integration (csi_receiver.rs + hardware_adapter.rs)
- ESP32 CSI support via serial/UDP
- Intel 5300 BFEE file parsing
- Atheros CSI Tool integration
- Live UDP packet streaming
- PCAP replay capability
2. CLI Commands (wifi-densepose-cli/src/mat.rs)
- `wifi-mat scan` - Run disaster detection scan
- `wifi-mat status` - Check event status
- `wifi-mat zones` - Manage scan zones
- `wifi-mat survivors` - List detected survivors
- `wifi-mat alerts` - View and acknowledge alerts
- `wifi-mat export` - Export data in various formats
3. REST API (wifi-densepose-mat/src/api/)
- Full CRUD for disaster events
- Zone management endpoints
- Survivor and alert queries
- WebSocket streaming for real-time updates
- Comprehensive DTOs and error handling
4. WASM Build (wifi-densepose-wasm/src/mat.rs)
- Browser-based disaster dashboard
- Real-time survivor tracking
- Zone visualization
- Alert management
- JavaScript API bindings
5. Detection Benchmarks (benches/detection_bench.rs)
- Single survivor detection
- Multi-survivor detection
- Full pipeline benchmarks
- Signal processing benchmarks
- Hardware adapter benchmarks
6. ML Models for Debris Penetration (ml/)
- DebrisModel for material analysis
- VitalSignsClassifier for triage
- FFT-based feature extraction
- Bandpass filtering
- Monte Carlo dropout for uncertainty
All 134 unit tests pass. Compilation verified for:
- wifi-densepose-mat
- wifi-densepose-cli
- wifi-densepose-wasm (with mat feature)
2026-01-13 18:23:03 +00:00
Claude
cd877f87c2
docs: Add comprehensive wifi-Mat user guide and fix compilation
...
- Add detailed wifi-Mat user guide covering:
- Installation and setup
- Detection capabilities (breathing, heartbeat, movement)
- Localization system (triangulation, depth estimation)
- START protocol triage classification
- Alert system with priority escalation
- Field deployment guide
- Hardware setup requirements
- API reference and troubleshooting
- Update main README.md with wifi-Mat section and links
- Fix compilation issues:
- Add missing deadline field in AlertPayload
- Fix type ambiguity in powi calls
- Resolve borrow checker issues in scan_cycle
- Export CsiDataBuffer from detection module
- Add missing imports in test modules
- All 83 tests now passing
2026-01-13 17:55:50 +00:00
Claude
6ed69a3d48
feat: Complete Rust port of WiFi-DensePose with modular crates
...
Major changes:
- Organized Python v1 implementation into v1/ subdirectory
- Created Rust workspace with 9 modular crates:
- wifi-densepose-core: Core types, traits, errors
- wifi-densepose-signal: CSI processing, phase sanitization, FFT
- wifi-densepose-nn: Neural network inference (ONNX/Candle/tch)
- wifi-densepose-api: Axum-based REST/WebSocket API
- wifi-densepose-db: SQLx database layer
- wifi-densepose-config: Configuration management
- wifi-densepose-hardware: Hardware abstraction
- wifi-densepose-wasm: WebAssembly bindings
- wifi-densepose-cli: Command-line interface
Documentation:
- ADR-001: Workspace structure
- ADR-002: Signal processing library selection
- ADR-003: Neural network inference strategy
- DDD domain model with bounded contexts
Testing:
- 69 tests passing across all crates
- Signal processing: 45 tests
- Neural networks: 21 tests
- Core: 3 doc tests
Performance targets:
- 10x faster CSI processing (~0.5ms vs ~5ms)
- 5x lower memory usage (~100MB vs ~500MB)
- WASM support for browser deployment
2026-01-13 03:11:16 +00:00