Commit Graph

8 Commits

Author SHA1 Message Date
ruv
0826438e0e feat: ADR-024 Phase 7 — MicroLoRA, EWC++, drift detection, hard-negative mining
Deep RuVector integration for the Contrastive CSI Embedding Model:

- MicroLoRA on ProjectionHead: rank-4 LoRA adapters (1,792 params/env,
  93% reduction vs full retraining) with merge/unmerge, freeze-base
  training, and per-environment LoRA weight serialization
- EWC++ consolidation in Trainer: compute Fisher information after
  pretraining, apply penalty during supervised fine-tuning to prevent
  catastrophic forgetting of contrastive structure
- EnvironmentDetector in EmbeddingExtractor: drift-aware embedding
  extraction with anomalous entry flagging in FingerprintIndex
- Hard-negative mining: HardNegativeMiner with configurable ratio and
  warmup, info_nce_loss_mined() for efficient contrastive training
- RVF SEG_LORA (0x0D): named LoRA profile storage/retrieval with
  add_lora_profile(), lora_profile(), lora_profiles() methods
- 12 new tests (272 total, 0 failures)

Closes Phase 7 of ADR-024. All 7 phases now complete.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-01 01:27:46 -05:00
ruv
5942d4dd5b feat: ADR-024 AETHER — Contrastive CSI Embedding Model
Implements Project AETHER (Ambient Electromagnetic Topology for
Hierarchical Embedding and Recognition): self-supervised contrastive
learning for WiFi CSI fingerprinting, similarity search, and anomaly
detection.

New files:
- docs/adr/ADR-024 — full architectural spec (1024 lines) with
  mathematical foundations, 6 implementation phases, 30 SOTA references
- embedding.rs — ProjectionHead, CsiAugmenter, InfoNCE loss,
  FingerprintIndex, PoseEncoder, EmbeddingExtractor (909 lines)

Modified:
- main.rs — CLI flags: --pretrain, --pretrain-epochs, --embed, --build-index
- trainer.rs — contrastive pretraining loop integration
- graph_transformer.rs — body_part_features exposure for embedding extraction
- rvf_container.rs — embedding segment type support
- lib.rs — embedding module export
- README.md — collapsible AETHER section with architecture, training modes,
  index types, and model size table

53K params total, fits in 55 KB on ESP32. No external ML dependencies.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-03-01 01:18:30 -05:00
ruv
45f0304d52 fix: Review fixes for end-to-end training pipeline
- Snapshot best-epoch weights during training and restore before
  checkpoint/RVF export (prevents exporting overfit final-epoch params)
- Add CsiToPoseTransformer::zeros() for fast zero-init when weights
  will be overwritten, avoiding wasteful Xavier init during gradient
  estimation (~2*param_count transformer constructions per batch)
- Deduplicate synthetic data generation in main.rs training mode

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-02-28 23:58:20 -05:00
ruv
3e06970428 feat: Training mode, ADR docs, vitals and wifiscan crates
- Add --train CLI flag with dataset loading, graph transformer training,
  cosine-scheduled SGD, PCK/OKS validation, and checkpoint saving
- Refactor main.rs to import training modules from lib.rs instead of
  duplicating mod declarations
- Add ADR-021 (vital sign detection), ADR-022 (Windows WiFi enhanced
  fidelity), ADR-023 (trained DensePose pipeline) documentation
- Add wifi-densepose-vitals crate: breathing, heartrate, anomaly
  detection, preprocessor, and temporal store
- Add wifi-densepose-wifiscan crate: 8-stage signal intelligence
  pipeline with netsh/wlanapi adapters, multi-BSSID registry,
  attention weighting, spatial correlation, and breathing extraction

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-02-28 23:50:20 -05:00
ruv
add9f192aa feat: Docker images, RVF export, and README update
- Add docker/ folder with Dockerfile.rust (132MB), Dockerfile.python (569MB),
  and docker-compose.yml
- Remove stale root-level Dockerfile and docker-compose files
- Implement --export-rvf CLI flag for standalone RVF package generation
- Generate wifi-densepose-v1.rvf (13KB) with model weights, vital config,
  SONA profile, and training provenance
- Update README with Docker pull/run commands and RVF export instructions
- Update test count to 542+ and fix Docker port mappings
- Reply to issues #43, #44, #45 with Docker/RVF availability

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-02-28 23:44:30 -05: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