chore(repo): rename rust-port/wifi-densepose-rs → v2/ (flatten to one level) (#427)

The Rust port lived two directories deep (rust-port/wifi-densepose-rs/)
without any sibling under rust-port/ that warranted the extra level.
Move the whole workspace up to v2/ to match v1/ (Python) at the same
depth and shorten every cd / build command across the repo.

git mv preserves history for all tracked files. 60 files updated for
path references (CI workflows, ADRs, docs, scripts, READMEs, internal
.claude-flow state). Two manual fixes for relative-cd paths in
CLAUDE.md and ADR-043 that became wrong after the depth change
(cd ../.. → cd ..).

Validated:
- cargo check --workspace --no-default-features → clean (after target/
  nuke; the gitignored target/ was carried by the OS rename and had
  hard-coded old paths in build scripts)
- cargo test --workspace --no-default-features → 1,539 passed, 0 failed,
  8 ignored (same totals as pre-rename)
- ESP32-S3 on COM7 → still streaming live CSI (cb #40300, RSSI -64 dBm)

After-merge follow-up: contributors should `rm -rf v2/target` once and
let cargo regenerate from the new path.
This commit is contained in:
rUv 2026-04-25 21:28:13 -04:00 committed by GitHub
parent 2a58fe478b
commit f49c722764
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
626 changed files with 240 additions and 363 deletions

View file

@ -35,7 +35,7 @@ git checkout 96b01008
### Step 2: Rust Workspace — Full Test Suite
```bash
cd rust-port/wifi-densepose-rs
cd v2
cargo test --workspace --no-default-features
```
@ -89,7 +89,7 @@ ls firmware/esp32-csi-node/build/*.bin 2>/dev/null || echo "App binary in build/
### Step 6: Verify ADR-018 Binary Frame Parser
```bash
cd rust-port/wifi-densepose-rs
cd v2
cargo test -p wifi-densepose-hardware --no-default-features
```

View file

@ -216,4 +216,4 @@ full = ["mincut-matching", "attn-mincut", "temporal-compress", "solver-interpola
- [Elastic Weight Consolidation](https://arxiv.org/abs/1612.00796)
- [Raft Consensus](https://raft.github.io/raft.pdf)
- [ML-DSA (FIPS 204)](https://csrc.nist.gov/pubs/fips/204/final)
- [WiFi-DensePose Rust ADR-001: Workspace Structure](../rust-port/wifi-densepose-rs/docs/adr/ADR-001-workspace-structure.md)
- [WiFi-DensePose Rust ADR-001: Workspace Structure](../v2/docs/adr/ADR-001-workspace-structure.md)

View file

@ -510,7 +510,7 @@ impl CompressedHeartbeatSpectrogram {
## Dependency Changes Required
Add to `rust-port/wifi-densepose-rs/Cargo.toml` workspace (already present from ADR-016):
Add to `v2/Cargo.toml` workspace (already present from ADR-016):
```toml
ruvector-mincut = "2.0.4" # already present
ruvector-attn-mincut = "2.0.4" # already present

View file

@ -11,7 +11,7 @@
The WiFi-DensePose UI was originally built to require the full FastAPI DensePose backend (`localhost:8000`) for all functionality. This backend depends on heavy Python packages (PyTorch ~2GB, torchvision, OpenCV, SQLAlchemy, Redis) making it impractical for lightweight sensing-only deployments where the user simply wants to visualize live WiFi signal data from ESP32 CSI or Windows RSSI collectors.
A Rust port exists (`rust-port/wifi-densepose-rs`) using Axum with lighter runtime footprint (~10MB binary, ~5MB RAM), but it still requires libtorch C++ bindings and OpenBLAS for compilation—a non-trivial build.
A Rust port exists (`v2`) using Axum with lighter runtime footprint (~10MB binary, ~5MB RAM), but it still requires libtorch C++ bindings and OpenBLAS for compilation—a non-trivial build.
Users need a way to run the UI with **only the sensing pipeline** active, without installing the full DensePose backend stack.

View file

@ -22,7 +22,7 @@ The current Python DensePose backend requires ~2GB+ of dependencies:
This makes the DensePose backend impractical for edge deployments, CI pipelines, and developer laptops where users only need WiFi sensing + pose estimation.
Meanwhile, the Rust port at `rust-port/wifi-densepose-rs/` already has:
Meanwhile, the Rust port at `v2/` already has:
- **12 workspace crates** covering core, signal, nn, api, db, config, hardware, wasm, cli, mat, train
- **5 RuVector crates** (v2.0.4, published on crates.io) integrated into signal, mat, and train crates
@ -143,7 +143,7 @@ The `wifi-densepose-nn::onnx` module loads `.onnx` files directly.
```bash
# Build the Rust workspace (ONNX-only, no libtorch)
cd rust-port/wifi-densepose-rs
cd v2
cargo check --workspace 2>&1
# Build release binary

View file

@ -34,7 +34,7 @@ The `vendor/ruvector` codebase provides a rich set of signal processing primitiv
### Current Project State
The Rust port (`rust-port/wifi-densepose-rs/`) already contains:
The Rust port (`v2/`) already contains:
- **`wifi-densepose-signal`**: CSI processing, BVP extraction, phase sanitization, Hampel filter, spectrogram generation, Fresnel geometry, motion detection, subcarrier selection
- **`wifi-densepose-sensing-server`**: Axum server receiving ESP32 CSI frames (UDP 5005), WebSocket broadcasting sensing updates, signal field generation, with three data source modes:
@ -108,7 +108,7 @@ ESP32 CSI (UDP:5005) ──▶│ ┌──────────────
### Module Structure
```
rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/
v2/crates/wifi-densepose-vitals/
├── Cargo.toml
└── src/
├── lib.rs # Public API and re-exports

View file

@ -592,7 +592,7 @@ impl FrameBuilder {
### 3.3 Module Structure
```
rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/
v2/crates/wifi-densepose-wifiscan/
├── Cargo.toml
└── src/
├── lib.rs # Public API, re-exports

View file

@ -699,28 +699,28 @@ let dashboard = container.load_dashboard()?;
| File | Purpose |
|------|---------|
| `rust-port/.../wifi-densepose-train/src/dataset_mmfi.rs` | MM-Fi dataset loader with subcarrier resampling |
| `rust-port/.../wifi-densepose-train/src/dataset_wipose.rs` | Wi-Pose dataset loader |
| `rust-port/.../wifi-densepose-train/src/graph_transformer.rs` | Graph transformer integration |
| `rust-port/.../wifi-densepose-train/src/body_gnn.rs` | GNN body graph reasoning |
| `rust-port/.../wifi-densepose-train/src/adaptation.rs` | SONA LoRA + EWC++ adaptation |
| `rust-port/.../wifi-densepose-train/src/trainer.rs` | Training loop with multi-term loss |
| `v2/.../wifi-densepose-train/src/dataset_mmfi.rs` | MM-Fi dataset loader with subcarrier resampling |
| `v2/.../wifi-densepose-train/src/dataset_wipose.rs` | Wi-Pose dataset loader |
| `v2/.../wifi-densepose-train/src/graph_transformer.rs` | Graph transformer integration |
| `v2/.../wifi-densepose-train/src/body_gnn.rs` | GNN body graph reasoning |
| `v2/.../wifi-densepose-train/src/adaptation.rs` | SONA LoRA + EWC++ adaptation |
| `v2/.../wifi-densepose-train/src/trainer.rs` | Training loop with multi-term loss |
| `scripts/generate_densepose_labels.py` | Teacher-student UV label generation |
| `scripts/benchmark_inference.py` | Inference latency benchmarking |
| `rust-port/.../wifi-densepose-train/src/rvf_builder.rs` | RVF container build pipeline |
| `rust-port/.../wifi-densepose-train/src/bin/build_rvf.rs` | CLI binary for building `.rvf` containers |
| `rust-port/.../wifi-densepose-train/src/bin/verify_rvf.rs` | CLI binary for verifying `.rvf` containers |
| `v2/.../wifi-densepose-train/src/rvf_builder.rs` | RVF container build pipeline |
| `v2/.../wifi-densepose-train/src/bin/build_rvf.rs` | CLI binary for building `.rvf` containers |
| `v2/.../wifi-densepose-train/src/bin/verify_rvf.rs` | CLI binary for verifying `.rvf` containers |
### Modified Files
| File | Change |
|------|--------|
| `rust-port/.../wifi-densepose-train/Cargo.toml` | Add ruvector-gnn, graph-transformer, sona, sparse-inference, math, rvf-types, rvf-wire, rvf-manifest, rvf-index, rvf-quant, rvf-crypto, rvf-runtime deps |
| `rust-port/.../wifi-densepose-train/src/model.rs` | Integrate graph transformer + GNN layers |
| `rust-port/.../wifi-densepose-train/src/losses.rs` | Add optimal transport + GNN edge consistency loss terms |
| `rust-port/.../wifi-densepose-train/src/config.rs` | Add training hyperparameters for new components |
| `rust-port/.../sensing-server/Cargo.toml` | Add rvf-runtime, rvf-types, rvf-index, rvf-quant deps |
| `rust-port/.../sensing-server/src/main.rs` | Add `--model` flag, load `.rvf` container, progressive startup, serve embedded dashboard |
| `v2/.../wifi-densepose-train/Cargo.toml` | Add ruvector-gnn, graph-transformer, sona, sparse-inference, math, rvf-types, rvf-wire, rvf-manifest, rvf-index, rvf-quant, rvf-crypto, rvf-runtime deps |
| `v2/.../wifi-densepose-train/src/model.rs` | Integrate graph transformer + GNN layers |
| `v2/.../wifi-densepose-train/src/losses.rs` | Add optimal transport + GNN edge consistency loss terms |
| `v2/.../wifi-densepose-train/src/config.rs` | Add training hyperparameters for new components |
| `v2/.../sensing-server/Cargo.toml` | Add rvf-runtime, rvf-types, rvf-index, rvf-quant deps |
| `v2/.../sensing-server/src/main.rs` | Add `--model` flag, load `.rvf` container, progressive startup, serve embedded dashboard |
## Consequences

View file

@ -371,7 +371,7 @@ ESP32 SRAM budget: 520 KB. Model at INT8: 53-60 KB = 10-12% of SRAM. Ample margi
### 2.6 Concrete Module Additions
All new/modified files in `rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/`:
All new/modified files in `v2/crates/wifi-densepose-sensing-server/src/`:
#### 2.6.1 `embedding.rs` (NEW, ~450 lines)

View file

@ -107,7 +107,7 @@ Implement a **macOS CoreWLAN sensing adapter** as a Swift helper binary + Rust a
### 3.2 Swift Helper Binary
**File:** `rust-port/wifi-densepose-rs/tools/macos-wifi-scan/main.swift`
**File:** `v2/tools/macos-wifi-scan/main.swift`
```swift
// Modes:

View file

@ -198,16 +198,16 @@ When a `.rvf` model is loaded:
### New Files
- `ui/components/ModelPanel.js` — Model library, inspector, load/unload controls
- `ui/components/TrainingPanel.js` — Recording controls, training progress, metric charts
- `rust-port/.../sensing-server/src/recording.rs` — CSI recording API handlers
- `rust-port/.../sensing-server/src/training_api.rs` — Training API handlers + WS progress stream
- `rust-port/.../sensing-server/src/model_manager.rs` — Model loading, hot-swap, 32LoRA activation
- `v2/.../sensing-server/src/recording.rs` — CSI recording API handlers
- `v2/.../sensing-server/src/training_api.rs` — Training API handlers + WS progress stream
- `v2/.../sensing-server/src/model_manager.rs` — Model loading, hot-swap, 32LoRA activation
- `data/models/` — Default model storage directory
### Modified Files
- `rust-port/.../sensing-server/src/main.rs` — Wire recording, training, and model APIs
- `rust-port/.../train/src/trainer.rs` — Add WebSocket progress callback, LoRA training mode
- `rust-port/.../train/src/dataset.rs` — MM-Fi and Wi-Pose dataset loaders
- `rust-port/.../nn/src/onnx.rs` — LoRA weight injection, INT8 quantization support
- `v2/.../sensing-server/src/main.rs` — Wire recording, training, and model APIs
- `v2/.../train/src/trainer.rs` — Add WebSocket progress callback, LoRA training mode
- `v2/.../train/src/dataset.rs` — MM-Fi and Wi-Pose dataset loaders
- `v2/.../nn/src/onnx.rs` — LoRA weight injection, INT8 quantization support
- `ui/components/LiveDemoTab.js` — Model selector, LoRA dropdown, A/B spsplit view
- `ui/components/SettingsPanel.js` — Model and training configuration sections
- `ui/components/PoseDetectionCanvas.js` — Pose trail rendering, confidence heatmap overlay

View file

@ -128,7 +128,7 @@ All configurable via `provision.py --edge-tier 2 --pres-thresh 0.05 ...`
- `firmware/esp32-csi-node/main/edge_processing.h` — Types and API
- `firmware/esp32-csi-node/main/ota_update.c/h` — HTTP OTA endpoint
- `firmware/esp32-csi-node/main/power_mgmt.c/h` — Power management
- `rust-port/.../wifi-densepose-sensing-server/src/main.rs` — Vitals parser + REST endpoint
- `v2/.../wifi-densepose-sensing-server/src/main.rs` — Vitals parser + REST endpoint
- `scripts/provision.py` — Edge config CLI arguments
- `.github/workflows/firmware-ci.yml` — CI build + size gate (updated to 950 KB for Tier 3)

View file

@ -164,8 +164,8 @@ Core 1 (DSP Task)
- `firmware/esp32-csi-node/main/wasm_runtime.c/h` — Runtime host with 12 API bindings + manifest
- `firmware/esp32-csi-node/main/wasm_upload.c/h` — HTTP REST endpoints (RVF-aware)
- `firmware/esp32-csi-node/main/rvf_parser.c/h` — RVF container parser and verifier
- `rust-port/.../wifi-densepose-wasm-edge/` — Rust WASM crate (gesture, coherence, adversarial, rvf, occupancy, vital_trend, intrusion)
- `rust-port/.../wifi-densepose-sensing-server/src/main.rs` — `0xC5110004` parser
- `v2/.../wifi-densepose-wasm-edge/` — Rust WASM crate (gesture, coherence, adversarial, rvf, occupancy, vital_trend, intrusion)
- `v2/.../wifi-densepose-sensing-server/src/main.rs` — `0xC5110004` parser
- `docs/adr/ADR-039-esp32-edge-intelligence.md` — Updated with Tier 3 reference
---

View file

@ -289,7 +289,7 @@ Startup creates `data/models/` and `data/recordings/` directories and populates
```bash
# 1. Start sensing server with auto source (simulated fallback)
cd rust-port/wifi-densepose-rs
cd v2
cargo run -p wifi-densepose-sensing-server -- --http-port 3000 --source auto
# 2. Verify model endpoints return 200
@ -312,11 +312,11 @@ curl -s http://localhost:3000/api/v1/models/lora/profiles | jq '.'
# Navigate to http://localhost:3000/ui/
# 7. Run mobile tests
cd ../../ui/mobile
cd ../ui/mobile
npx jest --no-coverage
# 8. Run Rust workspace tests (must pass, 1031+ tests)
cd ../../rust-port/wifi-densepose-rs
cd ../../v2
cargo test --workspace --no-default-features
```

View file

@ -52,7 +52,7 @@ Build a Tauri v2 desktop application as a new crate in the Rust workspace. The f
Add a new crate to the workspace:
```
rust-port/wifi-densepose-rs/
v2/
Cargo.toml # Add "crates/wifi-densepose-desktop" to members
crates/
wifi-densepose-desktop/ # NEW — Tauri app crate
@ -621,11 +621,11 @@ chrono = { version = "0.4", features = ["serde"] }
```bash
# Prerequisites
cargo install tauri-cli@^2
cd rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/frontend
cd v2/crates/wifi-densepose-desktop/frontend
npm install
# Development (hot-reload frontend + Rust rebuild)
cd rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop
cd v2/crates/wifi-densepose-desktop
cargo tauri dev
# Production build
@ -805,6 +805,6 @@ Total estimated effort: ~11 weeks for a single developer.
- ADR-051: Sensing Server Decomposition
- `firmware/esp32-csi-node/` — ESP32 firmware source
- `firmware/esp32-csi-node/provision.py` — Current provisioning script
- `rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/` — Sensing server
- `rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/` — Hardware crate
- `v2/crates/wifi-densepose-sensing-server/` — Sensing server
- `v2/crates/wifi-densepose-hardware/` — Hardware crate
- `ui/` — Existing web UI

View file

@ -214,7 +214,7 @@ examples/wasm-browser-pose/
set -e
# Build wifi-densepose-wasm (CSI processing)
wasm-pack build ../../rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm \
wasm-pack build ../../v2/crates/wifi-densepose-wasm \
--target web --out-dir "$(pwd)/pkg/wifi_densepose_wasm" --no-typescript
# Build ruvector-cnn-wasm (CNN inference for both video and CSI)

View file

@ -191,5 +191,5 @@ Also does not give per-person subcarrier assignments.
- Stoer, M. & Wagner, F. (1997). "A Simple Min-Cut Algorithm." JACM 44(4).
- `vendor/ruvector/crates/ruvector-mincut/src/algorithm/mod.rs` — DynamicMinCut API
- `rust-port/.../sig_mincut_person_match.rs` — current (broken) WASM edge matcher
- `v2/.../sig_mincut_person_match.rs` — current (broken) WASM edge matcher
- `scripts/rf-scan.js` — CSI packet parsing and subcarrier classification

View file

@ -481,7 +481,7 @@ make check
# → test_rv_mesh: 27/27 pass, HEALTH roundtrip = 1.0 µs
# Rust-side radio_ops trait + mesh decoder tests
cd rust-port/wifi-densepose-rs
cd v2
cargo test -p wifi-densepose-hardware --no-default-features --lib radio_ops
# → 8 passed; verifies MockRadio, CRC32 parity with firmware vectors,
# HEALTH encode/decode roundtrip, bad-magic/short/CRC rejection,

View file

@ -191,7 +191,7 @@ A high-performance Rust port with ~810x speedup over the Python pipeline for the
### Build
```bash
cd rust-port/wifi-densepose-rs
cd v2
cargo build --release
```
@ -200,7 +200,7 @@ Release profile is configured with LTO, single codegen unit, and `-O3` for maxim
### Test
```bash
cd rust-port/wifi-densepose-rs
cd v2
cargo test --workspace
```
@ -209,7 +209,7 @@ Runs 107 tests across all workspace crates.
### Benchmark
```bash
cd rust-port/wifi-densepose-rs
cd v2
cargo bench --package wifi-densepose-signal
```
@ -468,7 +468,7 @@ The aggregator collects UDP streams from all ESP32 nodes, performs feature-level
docker compose -f docker-compose.esp32.yml up
# Or run the Rust aggregator directly
cd rust-port/wifi-densepose-rs
cd v2
cargo run --release --package wifi-densepose-hardware -- --mode esp32-aggregator --port 5000
```
@ -516,7 +516,7 @@ rustup target add wasm32-unknown-unknown
Build:
```bash
cd rust-port/wifi-densepose-rs
cd v2
# Build WASM package (outputs to pkg/)
wasm-pack build crates/wifi-densepose-wasm --target web --release
@ -601,7 +601,7 @@ uvicorn v1.src.api.main:app \
--workers 4
# Or run the Rust API server
cd rust-port/wifi-densepose-rs
cd v2
cargo run --release --package wifi-densepose-api
```
@ -631,7 +631,7 @@ pytest --cov=wifi_densepose --cov-report=html
Rust:
```bash
cd rust-port/wifi-densepose-rs
cd v2
# Build in debug mode (faster compilation)
cargo build
@ -674,7 +674,7 @@ python3 -m http.server 3000 --directory ui
| `v1/data/proof/expected_features.sha256` | Published expected hash |
| `v1/src/api/main.py` | FastAPI application entry point |
| `v1/src/sensing/` | Commodity WiFi sensing module (RSSI) |
| `rust-port/wifi-densepose-rs/Cargo.toml` | Rust workspace root |
| `v2/Cargo.toml` | Rust workspace root |
| `ui/viz.html` | Three.js 3D visualization |
| `Dockerfile` | Multi-stage Docker build (dev/prod/test/security) |
| `docker-compose.yml` | Development stack (Postgres, Redis, Prometheus, Grafana) |

View file

@ -14,7 +14,7 @@ This document defines the system using [Domain-Driven Design](https://martinfowl
| 4 | [Aggregation](#4-aggregation-context) | Server-side CSI frame reception, timestamp alignment, multi-node feature fusion | [ADR-012](../adr/ADR-012-esp32-csi-sensor-mesh.md) | `crates/wifi-densepose-hardware/src/esp32/` |
| 5 | [Provisioning](#5-provisioning-context) | NVS configuration, firmware lifecycle, fleet management, deployment presets | [ADR-044](../adr/ADR-044-provisioning-tool-enhancements.md) | `firmware/esp32-csi-node/provision.py` |
All firmware paths are relative to the repository root. Rust crate paths are relative to `rust-port/wifi-densepose-rs/`.
All firmware paths are relative to the repository root. Rust crate paths are relative to `v2/`.
---

View file

@ -16,7 +16,7 @@ This document defines the system using [Domain-Driven Design](https://martinfowl
| 6 | [Spatial Identity](#6-spatial-identity-context) | Cross-room tracking via environment fingerprints | [ADR-030](../adr/ADR-030-ruvsense-persistent-field-model.md) | `signal/src/ruvsense/cross_room.rs` |
| 7 | [Edge Intelligence](#7-edge-intelligence-context) | On-device sensing (no server needed) | [ADR-039](../adr/ADR-039-esp32-edge-intelligence.md), [ADR-040](../adr/ADR-040-wasm-programmable-sensing.md) | `firmware/esp32-csi-node/main/edge_processing.c` |
All code paths shown are relative to `rust-port/wifi-densepose-rs/crates/wifi-densepose-` unless otherwise noted.
All code paths shown are relative to `v2/crates/wifi-densepose-` unless otherwise noted.
---

View file

@ -14,7 +14,7 @@ This document defines the system using [Domain-Driven Design](https://martinfowl
| 4 | [Training Pipeline](#4-training-pipeline-context) | Background training runs, progress streaming, contrastive pretraining | [ADR-043](../adr/ADR-043-sensing-server-ui-api-completion.md) | `sensing-server/src/training_api.rs` |
| 5 | [Visualization](#5-visualization-context) | WebSocket streaming to web UI, Gaussian splat rendering, data transparency | [ADR-019](../adr/ADR-019-sensing-only-ui-mode.md), [ADR-035](../adr/ADR-035-live-sensing-ui-accuracy.md) | `ui/` |
All code paths shown are relative to `rust-port/wifi-densepose-rs/crates/wifi-densepose-` unless otherwise noted.
All code paths shown are relative to `v2/crates/wifi-densepose-` unless otherwise noted.
---

View file

@ -13,7 +13,7 @@ This document defines the system using [Domain-Driven Design](https://martinfowl
| 3 | [Training Orchestration](#3-training-orchestration-context) | Run the training loop, compute composite loss, checkpoint, and verify deterministic proofs | [ADR-015](../adr/ADR-015-public-dataset-training-strategy.md), [ADR-016](../adr/ADR-016-ruvector-integration.md) | `train/src/trainer.rs`, `train/src/losses.rs`, `train/src/metrics.rs`, `train/src/proof.rs` |
| 4 | [Embedding & Transfer](#4-embedding--transfer-context) | Produce AETHER contrastive embeddings, MERIDIAN domain-generalized features, and LoRA adapters | [ADR-024](../adr/ADR-024-contrastive-csi-embedding-model.md), [ADR-027](../adr/ADR-027-cross-environment-domain-generalization.md) | `train/src/embedding.rs`, `train/src/domain.rs`, `train/src/sona.rs` |
All code paths shown are relative to `rust-port/wifi-densepose-rs/crates/wifi-densepose-` unless otherwise noted.
All code paths shown are relative to `v2/crates/wifi-densepose-` unless otherwise noted.
---

View file

@ -6,7 +6,7 @@
```bash
# Build all modules for ESP32
cd rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge
cd v2/crates/wifi-densepose-wasm-edge
cargo build --target wasm32-unknown-unknown --release
# Run all 632 tests
@ -144,4 +144,4 @@ Every module talks to the ESP32 through 12 functions:
- [ADR-039](../adr/ADR-039-esp32-edge-intelligence.md) — Edge processing tiers
- [ADR-040](../adr/ADR-040-wasm-programmable-sensing.md) — WASM runtime design
- [ADR-041](../adr/ADR-041-wasm-module-collection.md) — Full module specification
- [Source code](../../rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/)
- [Source code](../../v2/crates/wifi-densepose-wasm-edge/src/)

View file

@ -481,7 +481,7 @@ std::fs::write("my-gesture-v2.rvf", &rvf_mut)?;
From the crate directory:
```bash
cd rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge
cd v2/crates/wifi-densepose-wasm-edge
cargo test --features std -- gesture coherence adversarial intrusion occupancy vital_trend rvf
```

View file

@ -618,7 +618,7 @@ for _ in 0..100 {
All medical modules include comprehensive unit tests covering initialization, normal operation, clinical scenario detection, edge cases, and cooldown behavior.
```bash
cd rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge
cd v2/crates/wifi-densepose-wasm-edge
cargo test --features std -- med_
```

View file

@ -556,7 +556,7 @@ for &(event_id, value) in events {
```bash
# Run all security module tests (requires std feature)
cd rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge
cd v2/crates/wifi-densepose-wasm-edge
cargo test --features std -- sec_ intrusion
```

View file

@ -413,9 +413,9 @@ The `create_user()` method accepts any password without minimum length, complexi
### INFORMATIONAL-001: Rust API, DB, and Config Crates Are Stubs
**Files:**
- `rust-port/wifi-densepose-rs/crates/wifi-densepose-api/src/lib.rs` -- `//! WiFi-DensePose REST API (stub)`
- `rust-port/wifi-densepose-rs/crates/wifi-densepose-db/src/lib.rs` -- `//! WiFi-DensePose database layer (stub)`
- `rust-port/wifi-densepose-rs/crates/wifi-densepose-config/src/lib.rs` -- `//! WiFi-DensePose configuration (stub)`
- `v2/crates/wifi-densepose-api/src/lib.rs` -- `//! WiFi-DensePose REST API (stub)`
- `v2/crates/wifi-densepose-db/src/lib.rs` -- `//! WiFi-DensePose database layer (stub)`
- `v2/crates/wifi-densepose-config/src/lib.rs` -- `//! WiFi-DensePose configuration (stub)`
**Description:**
The Rust API, database, and configuration crates contain only single-line stub comments. No security review of Rust API endpoints, database queries, or configuration handling was possible because no implementation exists. The `wifi-densepose-sensing-server` crate contains the actual Rust server implementation.
@ -426,7 +426,7 @@ The Rust API, database, and configuration crates contain only single-line stub c
### INFORMATIONAL-002: Rust `unsafe` Blocks in WASM Edge Crate
**Files:** `rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/*.rs` (multiple files)
**Files:** `v2/crates/wifi-densepose-wasm-edge/src/*.rs` (multiple files)
**Description:**
The `wifi-densepose-wasm-edge` crate contains approximately 40 `unsafe` blocks, primarily for:
@ -518,7 +518,7 @@ The following areas demonstrate security-conscious design:
- `v1/src/tasks/backup.py` (partial) -- Subprocess command construction
- `v1/test_auth_rate_limit.py` (partial) -- Test credentials review
### Rust (rust-port/wifi-densepose-rs/)
### Rust (v2/)
- `crates/wifi-densepose-api/src/lib.rs` (1 line -- stub)
- `crates/wifi-densepose-db/src/lib.rs` (1 line -- stub)
- `crates/wifi-densepose-config/src/lib.rs` (1 line -- stub)

View file

@ -40,7 +40,7 @@ The WiFi-DensePose codebase is a real-time sensing system targeting 20 Hz output
### FINDING PERF-R01: Tomography Weight Matrix -- O(L * nx * ny * nz) per Link [CRITICAL]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/tomography.rs`
**File**: `v2/crates/wifi-densepose-signal/src/ruvsense/tomography.rs`
**Lines**: 345-383 (`compute_link_weights`)
The `compute_link_weights` function iterates over every voxel in the grid for every link to compute Fresnel-zone intersection weights:
@ -76,7 +76,7 @@ for iz in 0..config.nz {
### FINDING PERF-R02: Multistatic Fusion -- sin()/cos() per Subcarrier per Node [HIGH]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/multistatic.rs`
**File**: `v2/crates/wifi-densepose-signal/src/ruvsense/multistatic.rs`
**Lines**: 287-298 (`attention_weighted_fusion`)
```rust
@ -105,7 +105,7 @@ for (n, (&amp, &ph)) in amplitudes.iter().zip(phases.iter()).enumerate() {
### FINDING PERF-R03: Pose Tracker find_track -- Linear Search [MEDIUM]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/pose_tracker.rs`
**File**: `v2/crates/wifi-densepose-signal/src/ruvsense/pose_tracker.rs`
**Lines**: 546-553
```rust
@ -124,7 +124,7 @@ pub fn find_track(&self, id: TrackId) -> Option<&PoseTrack> {
### FINDING PERF-R04: Multistatic FusedSensingFrame -- Deep Clone of node_frames [HIGH]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/multistatic.rs`
**File**: `v2/crates/wifi-densepose-signal/src/ruvsense/multistatic.rs`
**Line**: 222
```rust
@ -150,7 +150,7 @@ Ok(FusedSensingFrame {
### FINDING PERF-R05: Coherence Score -- Efficient but exp() in Hot Loop [LOW]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/coherence.rs`
**File**: `v2/crates/wifi-densepose-signal/src/ruvsense/coherence.rs`
**Lines**: 224-252 (`coherence_score`)
```rust
@ -174,7 +174,7 @@ for i in 0..n {
### FINDING PERF-R06: Gesture DTW -- O(N * M) per Template [MEDIUM]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/gesture.rs`
**File**: `v2/crates/wifi-densepose-signal/src/ruvsense/gesture.rs`
**Lines**: 288-328 (`dtw_distance`)
The DTW implementation uses the Sakoe-Chiba band constraint (good), but allocates two full Vec<f64> per call:
@ -199,7 +199,7 @@ With T templates and band_width=5, complexity is O(T * N * band_width * feature_
### FINDING PERF-R07: Field Model Covariance -- O(S^2) Memory [MEDIUM]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/field_model.rs`
**File**: `v2/crates/wifi-densepose-signal/src/ruvsense/field_model.rs`
**Line**: 330 (`covariance_sum: Option<Array2<f64>>`)
The full covariance matrix for SVD is S x S where S = number of subcarriers. With S=56, this is 56 * 56 * 8 = 25 KB -- reasonable. But the diagonal_fallback (lines 338-383) creates unnecessary intermediate allocations.
@ -212,7 +212,7 @@ The full covariance matrix for SVD is S x S where S = number of subcarriers. Wit
### FINDING PERF-R08: Multiband Duplicate Frequency Check -- O(N^2) [LOW]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/multiband.rs`
**File**: `v2/crates/wifi-densepose-signal/src/ruvsense/multiband.rs`
**Lines**: 126-135
```rust
@ -235,7 +235,7 @@ for i in 0..self.frequencies.len() {
### FINDING PERF-R09: Adversarial Detector -- Potential O(L^2) Consistency Check [MEDIUM]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/adversarial.rs`
**File**: `v2/crates/wifi-densepose-signal/src/ruvsense/adversarial.rs`
**Lines**: 147+
The multi-link consistency check compares energy ratios across all links. With L=12 links, the pairwise comparison (if implemented) would be O(L^2) = 144. Combined with the four independent checks (consistency, field model, temporal, energy), this runs on every frame.
@ -259,7 +259,7 @@ The multi-link consistency check compares energy ratios across all links. With L
### FINDING PERF-NN01: Serial Batch Inference [CRITICAL]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/inference.rs`
**File**: `v2/crates/wifi-densepose-nn/src/inference.rs`
**Lines**: 334-336
```rust
@ -283,7 +283,7 @@ pub fn infer_batch(&self, inputs: &[Tensor]) -> NnResult<Vec<Tensor>> {
### FINDING PERF-NN02: Async Stats Update Spawns Tokio Task per Inference [HIGH]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/inference.rs`
**File**: `v2/crates/wifi-densepose-nn/src/inference.rs`
**Lines**: 311-315
```rust
@ -307,7 +307,7 @@ tokio::spawn(async move {
### FINDING PERF-NN03: Tensor Clone in run_single [MEDIUM]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/inference.rs`
**File**: `v2/crates/wifi-densepose-nn/src/inference.rs`
**Lines**: 122
```rust
@ -326,7 +326,7 @@ fn run_single(&self, input: &Tensor) -> NnResult<Tensor> {
### FINDING PERF-NN04: WiFiDensePosePipeline -- Two Sequential Inferences [MEDIUM]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/inference.rs`
**File**: `v2/crates/wifi-densepose-nn/src/inference.rs`
**Lines**: 389-413
```rust
@ -634,7 +634,7 @@ uint32_t next = (s_ring.head + 1) & (EDGE_RING_SLOTS - 1);
### FINDING PERF-XC01: Missing Parallelism in Multistatic Pipeline [HIGH]
**File**: `rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/mod.rs`
**File**: `v2/crates/wifi-densepose-signal/src/ruvsense/mod.rs`
**Lines**: 183-232
The `RuvSensePipeline` orchestrator processes stages sequentially. The multiband fusion and phase alignment stages for each node are independent and could run in parallel using Rayon:
@ -756,26 +756,26 @@ The following patterns were checked and found to be well-implemented:
## Appendix A: File Paths Analyzed
### Rust Signal Processing
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/mod.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/tomography.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/multistatic.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/pose_tracker.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/field_model.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/gesture.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/coherence.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/coherence_gate.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/multiband.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/phase_align.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/adversarial.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/intention.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/longitudinal.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/cross_room.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/temporal_gesture.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/attractor_drift.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/mod.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/tomography.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/multistatic.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/pose_tracker.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/field_model.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/gesture.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/coherence.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/coherence_gate.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/multiband.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/phase_align.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/adversarial.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/intention.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/longitudinal.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/cross_room.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/temporal_gesture.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-signal/src/ruvsense/attractor_drift.rs`
### Rust Neural Network
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/inference.rs`
- `/workspaces/ruview/rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/tensor.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-nn/src/inference.rs`
- `/workspaces/ruview/v2/crates/wifi-densepose-nn/src/tensor.rs`
### Python Pipeline
- `/workspaces/ruview/v1/src/core/csi_processor.py`

View file

@ -3,7 +3,7 @@
**Project:** wifi-densepose (ruview)
**Date:** 2026-04-05
**Analyst:** QE Test Architect (V3)
**Scope:** All test suites across Python (v1), Rust (rust-port), and Mobile (ui/mobile)
**Scope:** All test suites across Python (v1), Rust (v2), and Mobile (ui/mobile)
---
@ -470,8 +470,8 @@ This is the best-tested service in the mobile suite.
|------|---------------|
| `v1/tests/unit/test_sensing.py` | 45 tests with mathematical rigor, known-signal validation, domain-specific edge cases, cross-receiver agreement, band isolation. No mocks for core logic. |
| `v1/tests/unit/test_esp32_binary_parser.py` | Real UDP socket testing, struct-level binary validation, ADR-018 compliance. Tests actual I/Q to amplitude/phase math. |
| `rust-port/.../tests/validation_test.rs` | Physics-based validation (Doppler, phase unwrapping, spectral analysis). Tests prove algorithm correctness, not just non-failure. |
| `rust-port/.../tests/test_losses.rs` | Deterministic data, feature-gated, tests mathematical properties (zero loss for identical inputs, non-zero for mismatched). |
| `v2/.../tests/validation_test.rs` | Physics-based validation (Doppler, phase unwrapping, spectral analysis). Tests prove algorithm correctness, not just non-failure. |
| `v2/.../tests/test_losses.rs` | Deterministic data, feature-gated, tests mathematical properties (zero loss for identical inputs, non-zero for mismatched). |
| `ui/mobile/.../utils/ringBuffer.test.ts` | Comprehensive boundary testing (NaN, Infinity, 0, negative, overflow). Tests copy semantics. |
### 5.2 Worst Test Files (Needs Improvement)

View file

@ -337,7 +337,7 @@ Usage in rf_topology:
### 3.1 Module Location
```
rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/
v2/crates/wifi-densepose-signal/src/ruvsense/
rf_topology.rs <-- New module (primary)
rf_topology/
graph.rs <-- RfGraph aggregate root
@ -351,7 +351,7 @@ rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/
Alternatively, rf_topology could be a standalone crate:
```
rust-port/wifi-densepose-rs/crates/wifi-densepose-topology/
v2/crates/wifi-densepose-topology/
src/
lib.rs
graph.rs

View file

@ -2,7 +2,7 @@
**Date**: 2026-03-03
**Auditor**: Security Auditor Agent (Claude Opus 4.6)
**Scope**: All 29 `.rs` files in `rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/`
**Scope**: All 29 `.rs` files in `v2/crates/wifi-densepose-wasm-edge/src/`
**Crate version**: 0.3.0
**Target**: `wasm32-unknown-unknown` (ESP32-S3 WASM3 interpreter)

View file

@ -909,7 +909,7 @@ For users with the Rust toolchain, the `wifi-densepose-train` crate
provides the full training pipeline with RuVector integration:
```bash
cd rust-port/wifi-densepose-rs
cd v2
cargo run -p wifi-densepose-train -- \
--data pretrain-vectors.rvf \
--epochs 50 \

View file

@ -119,7 +119,7 @@ This prepares the native GTK/WebKit dependencies used by the desktop/Tauri crate
```bash
git clone https://github.com/ruvnet/RuView.git
cd RuView/rust-port/wifi-densepose-rs
cd RuView/v2
# Build
cargo build --release
@ -558,7 +558,7 @@ RuView can generate real-time 3D point clouds by fusing camera depth estimation
```bash
# Build the pointcloud binary
cd rust-port/wifi-densepose-rs
cd v2
cargo build --release -p wifi-densepose-pointcloud
# Start the server (auto-detects camera + CSI). Loopback-only by default.

View file

@ -92,7 +92,7 @@ sudo apt-get install -y build-essential pkg-config libssl-dev
```bash
# Clone the repository
git clone https://github.com/ruvnet/wifi-densepose.git
cd wifi-densepose/rust-port/wifi-densepose-rs
cd wifi-densepose/v2
# Build the wifi-mat crate
cargo build --release --package wifi-densepose-mat