From 0266b9ec2b251b1bf5abcb35c7a23b429ce0d6b8 Mon Sep 17 00:00:00 2001 From: ruv Date: Sat, 25 Apr 2026 21:01:08 -0400 Subject: [PATCH] =?UTF-8?q?chore(repo):=20rename=20rust-port/wifi-densepos?= =?UTF-8?q?e-rs=20=E2=86=92=20v2/=20(flatten=20to=20one=20level)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. Co-Authored-By: claude-flow --- .github/workflows/ci.yml | 6 +- .github/workflows/desktop-release.yml | 20 +-- CLAUDE.md | 16 +- README.md | 152 +++++++++--------- docker/Dockerfile.rust | 4 +- docs/WITNESS-LOG-028.md | 4 +- ...R-002-ruvector-rvf-integration-strategy.md | 2 +- ...ADR-017-ruvector-signal-mat-integration.md | 2 +- docs/adr/ADR-019-sensing-only-ui-mode.md | 2 +- ...DR-020-rust-ruvector-ai-model-migration.md | 4 +- ...021-vital-sign-detection-rvdna-pipeline.md | 4 +- ...windows-wifi-enhanced-fidelity-ruvector.md | 2 +- ...ained-densepose-model-ruvector-pipeline.md | 30 ++-- ...ADR-024-contrastive-csi-embedding-model.md | 2 +- .../ADR-025-macos-corewlan-wifi-sensing.md | 2 +- docs/adr/ADR-036-rvf-training-pipeline-ui.md | 14 +- docs/adr/ADR-039-esp32-edge-intelligence.md | 2 +- docs/adr/ADR-040-wasm-programmable-sensing.md | 4 +- ...DR-043-sensing-server-ui-api-completion.md | 6 +- docs/adr/ADR-052-tauri-desktop-frontend.md | 10 +- ...-058-ruvector-wasm-browser-pose-example.md | 2 +- docs/adr/ADR-075-mincut-person-separation.md | 2 +- ...R-081-adaptive-csi-mesh-firmware-kernel.md | 2 +- docs/build-guide.md | 16 +- docs/ddd/hardware-platform-domain-model.md | 2 +- docs/ddd/ruvsense-domain-model.md | 2 +- docs/ddd/sensing-server-domain-model.md | 2 +- docs/ddd/training-pipeline-domain-model.md | 2 +- docs/edge-modules/README.md | 4 +- docs/edge-modules/core.md | 2 +- docs/edge-modules/medical.md | 2 +- docs/edge-modules/security.md | 2 +- docs/qe-reports/02-security-review.md | 10 +- docs/qe-reports/03-performance-analysis.md | 64 ++++---- docs/qe-reports/04-test-analysis.md | 6 +- .../10-system-architecture-prototype.md | 4 +- docs/security-audit-wasm-edge-vendor.md | 2 +- docs/tutorials/cognitum-seed-pretraining.md | 2 +- docs/user-guide.md | 4 +- docs/wifi-mat-user-guide.md | 2 +- examples/happiness-vector/README.md | 4 +- install.sh | 14 +- .../wifi-densepose-rs/.claude-flow/daemon.pid | 1 - .../.claude-flow/data/pending-insights.jsonl | 42 ----- .../.claude-flow/sessions/current.json | 12 -- .../sessions/session-1773100562538.json | 14 -- .../sessions/session-1773101285009.json | 14 -- .../.claude-flow/data/pending-insights.jsonl | 28 ---- .../ui/.claude-flow/sessions/current.json | 12 -- .../trained-pretrain-20260302_173607.rvf | Bin 141184 -> 0 bytes .../trained-supervised-20260302_165735.rvf | Bin 12096 -> 0 bytes scripts/gcloud-train.sh | 6 +- scripts/generate-witness-bundle.sh | 4 +- scripts/qemu-mesh-test.sh | 2 +- scripts/qemu_swarm.py | 2 +- ui/README.md | 2 +- v1/README.md | 2 +- .../.claude-flow/.trend-cache.json | 0 .../.claude-flow/daemon-state.json | 4 +- .../.claude-flow/metrics/codebase-map.json | 2 +- .../.claude-flow/metrics/consolidation.json | 0 .../wifi-densepose-rs => v2}/Cargo.lock | 0 .../wifi-densepose-rs => v2}/Cargo.toml | 0 .../wifi-densepose-rs => v2}/crates/README.md | 2 +- .../crates/ruv-neural/.gitignore | 0 .../crates/ruv-neural/Cargo.toml | 0 .../crates/ruv-neural/README.md | 2 +- .../crates/ruv-neural/SECURITY_REVIEW.md | 0 .../ruv-neural/ruv-neural-cli/Cargo.toml | 0 .../ruv-neural/ruv-neural-cli/README.md | 0 .../ruv-neural-cli/src/commands/analyze.rs | 0 .../ruv-neural-cli/src/commands/export.rs | 0 .../ruv-neural-cli/src/commands/info.rs | 0 .../ruv-neural-cli/src/commands/mincut.rs | 0 .../ruv-neural-cli/src/commands/mod.rs | 0 .../ruv-neural-cli/src/commands/pipeline.rs | 0 .../ruv-neural-cli/src/commands/simulate.rs | 0 .../ruv-neural-cli/src/commands/witness.rs | 0 .../ruv-neural/ruv-neural-cli/src/main.rs | 0 .../ruv-neural/ruv-neural-core/Cargo.toml | 0 .../ruv-neural/ruv-neural-core/README.md | 0 .../ruv-neural/ruv-neural-core/src/brain.rs | 0 .../ruv-neural-core/src/embedding.rs | 0 .../ruv-neural/ruv-neural-core/src/error.rs | 0 .../ruv-neural/ruv-neural-core/src/graph.rs | 0 .../ruv-neural/ruv-neural-core/src/lib.rs | 0 .../ruv-neural/ruv-neural-core/src/rvf.rs | 0 .../ruv-neural/ruv-neural-core/src/sensor.rs | 0 .../ruv-neural/ruv-neural-core/src/signal.rs | 0 .../ruv-neural-core/src/topology.rs | 0 .../ruv-neural/ruv-neural-core/src/traits.rs | 0 .../ruv-neural/ruv-neural-core/src/witness.rs | 0 .../ruv-neural/ruv-neural-decoder/Cargo.toml | 0 .../ruv-neural/ruv-neural-decoder/README.md | 0 .../ruv-neural-decoder/src/clinical.rs | 0 .../ruv-neural-decoder/src/knn_decoder.rs | 0 .../ruv-neural/ruv-neural-decoder/src/lib.rs | 0 .../ruv-neural-decoder/src/pipeline.rs | 0 .../src/threshold_decoder.rs | 0 .../src/transition_decoder.rs | 0 .../ruv-neural/ruv-neural-embed/Cargo.toml | 0 .../ruv-neural/ruv-neural-embed/README.md | 0 .../ruv-neural-embed/src/combined.rs | 0 .../ruv-neural-embed/src/distance.rs | 0 .../ruv-neural/ruv-neural-embed/src/lib.rs | 0 .../ruv-neural-embed/src/node2vec.rs | 0 .../ruv-neural-embed/src/rvf_export.rs | 0 .../ruv-neural-embed/src/spectral_embed.rs | 0 .../ruv-neural-embed/src/temporal.rs | 0 .../ruv-neural-embed/src/topology_embed.rs | 0 .../ruv-neural/ruv-neural-esp32/Cargo.toml | 0 .../ruv-neural/ruv-neural-esp32/README.md | 0 .../ruv-neural/ruv-neural-esp32/src/adc.rs | 0 .../ruv-neural-esp32/src/aggregator.rs | 0 .../ruv-neural/ruv-neural-esp32/src/lib.rs | 0 .../ruv-neural/ruv-neural-esp32/src/power.rs | 0 .../ruv-neural-esp32/src/preprocessing.rs | 0 .../ruv-neural-esp32/src/protocol.rs | 0 .../ruv-neural/ruv-neural-esp32/src/tdm.rs | 0 .../ruv-neural/ruv-neural-graph/Cargo.toml | 0 .../ruv-neural/ruv-neural-graph/README.md | 0 .../ruv-neural/ruv-neural-graph/src/atlas.rs | 0 .../ruv-neural-graph/src/constructor.rs | 0 .../ruv-neural-graph/src/dynamics.rs | 0 .../ruv-neural/ruv-neural-graph/src/lib.rs | 0 .../ruv-neural-graph/src/metrics.rs | 0 .../ruv-neural-graph/src/petgraph_bridge.rs | 0 .../ruv-neural-graph/src/spectral.rs | 0 .../ruv-neural/ruv-neural-memory/Cargo.toml | 0 .../ruv-neural/ruv-neural-memory/README.md | 0 .../ruv-neural-memory/benches/benchmarks.rs | 0 .../ruv-neural/ruv-neural-memory/src/hnsw.rs | 0 .../ruv-neural/ruv-neural-memory/src/lib.rs | 0 .../ruv-neural-memory/src/longitudinal.rs | 0 .../ruv-neural-memory/src/persistence.rs | 0 .../ruv-neural-memory/src/session.rs | 0 .../ruv-neural/ruv-neural-memory/src/store.rs | 0 .../ruv-neural/ruv-neural-mincut/Cargo.toml | 0 .../ruv-neural/ruv-neural-mincut/README.md | 0 .../ruv-neural-mincut/benches/benchmarks.rs | 0 .../ruv-neural-mincut/src/benchmark.rs | 0 .../ruv-neural-mincut/src/coherence.rs | 0 .../ruv-neural-mincut/src/dynamic.rs | 0 .../ruv-neural/ruv-neural-mincut/src/lib.rs | 0 .../ruv-neural-mincut/src/multiway.rs | 0 .../ruv-neural-mincut/src/normalized.rs | 0 .../ruv-neural-mincut/src/spectral_cut.rs | 0 .../ruv-neural-mincut/src/stoer_wagner.rs | 0 .../ruv-neural/ruv-neural-sensor/Cargo.toml | 0 .../ruv-neural/ruv-neural-sensor/README.md | 0 .../ruv-neural-sensor/src/calibration.rs | 0 .../ruv-neural/ruv-neural-sensor/src/eeg.rs | 0 .../ruv-neural/ruv-neural-sensor/src/lib.rs | 0 .../ruv-neural-sensor/src/nv_diamond.rs | 0 .../ruv-neural/ruv-neural-sensor/src/opm.rs | 0 .../ruv-neural-sensor/src/quality.rs | 0 .../ruv-neural-sensor/src/simulator.rs | 0 .../ruv-neural/ruv-neural-signal/Cargo.toml | 0 .../ruv-neural/ruv-neural-signal/README.md | 0 .../ruv-neural-signal/benches/benchmarks.rs | 0 .../ruv-neural-signal/src/artifact.rs | 0 .../ruv-neural-signal/src/connectivity.rs | 0 .../ruv-neural-signal/src/filter.rs | 0 .../ruv-neural-signal/src/hilbert.rs | 0 .../ruv-neural/ruv-neural-signal/src/lib.rs | 0 .../ruv-neural-signal/src/preprocessing.rs | 0 .../ruv-neural-signal/src/spectral.rs | 0 .../ruv-neural/ruv-neural-viz/Cargo.toml | 0 .../ruv-neural/ruv-neural-viz/README.md | 0 .../ruv-neural-viz/src/animation.rs | 0 .../ruv-neural/ruv-neural-viz/src/ascii.rs | 0 .../ruv-neural/ruv-neural-viz/src/colormap.rs | 0 .../ruv-neural/ruv-neural-viz/src/export.rs | 0 .../ruv-neural/ruv-neural-viz/src/layout.rs | 0 .../ruv-neural/ruv-neural-viz/src/lib.rs | 0 .../ruv-neural/ruv-neural-wasm/Cargo.toml | 0 .../ruv-neural/ruv-neural-wasm/README.md | 0 .../ruv-neural-wasm/src/graph_wasm.rs | 0 .../ruv-neural/ruv-neural-wasm/src/lib.rs | 0 .../ruv-neural-wasm/src/streaming.rs | 0 .../ruv-neural-wasm/src/viz_data.rs | 0 .../crates/ruv-neural/tests/integration.rs | 0 .../crates/wifi-densepose-api/Cargo.toml | 0 .../crates/wifi-densepose-api/README.md | 0 .../crates/wifi-densepose-api/src/lib.rs | 0 .../crates/wifi-densepose-cli/Cargo.toml | 0 .../crates/wifi-densepose-cli/README.md | 0 .../crates/wifi-densepose-cli/src/lib.rs | 0 .../crates/wifi-densepose-cli/src/main.rs | 0 .../crates/wifi-densepose-cli/src/mat.rs | 0 .../crates/wifi-densepose-config/Cargo.toml | 0 .../crates/wifi-densepose-config/README.md | 0 .../crates/wifi-densepose-config/src/lib.rs | 0 .../crates/wifi-densepose-core/Cargo.toml | 0 .../crates/wifi-densepose-core/README.md | 0 .../crates/wifi-densepose-core/src/error.rs | 0 .../crates/wifi-densepose-core/src/lib.rs | 0 .../crates/wifi-densepose-core/src/traits.rs | 0 .../crates/wifi-densepose-core/src/types.rs | 0 .../crates/wifi-densepose-core/src/utils.rs | 0 .../crates/wifi-densepose-db/Cargo.toml | 0 .../crates/wifi-densepose-db/README.md | 0 .../crates/wifi-densepose-db/src/lib.rs | 0 .../.claude-flow/daemon-state.json | 4 +- .../crates/wifi-densepose-desktop/Cargo.toml | 0 .../crates/wifi-densepose-desktop/README.md | 2 +- .../crates/wifi-densepose-desktop/build.rs | 0 .../capabilities/default.json | 0 .../gen/schemas/acl-manifests.json | 0 .../gen/schemas/capabilities.json | 0 .../gen/schemas/desktop-schema.json | 0 .../gen/schemas/macOS-schema.json | 0 .../gen/schemas/windows-schema.json | 0 .../wifi-densepose-desktop/icons/128x128.png | Bin .../icons/128x128@2x.png | Bin .../wifi-densepose-desktop/icons/32x32.png | Bin .../wifi-densepose-desktop/icons/icon.icns | Bin .../wifi-densepose-desktop/icons/icon.ico | Bin .../src/commands/discovery.rs | 0 .../src/commands/flash.rs | 0 .../src/commands/mod.rs | 0 .../src/commands/ota.rs | 0 .../src/commands/provision.rs | 0 .../src/commands/server.rs | 0 .../src/commands/settings.rs | 0 .../src/commands/wasm.rs | 0 .../src/domain/config.rs | 0 .../src/domain/firmware.rs | 0 .../wifi-densepose-desktop/src/domain/mod.rs | 0 .../wifi-densepose-desktop/src/domain/node.rs | 0 .../crates/wifi-densepose-desktop/src/lib.rs | 0 .../crates/wifi-densepose-desktop/src/main.rs | 0 .../wifi-densepose-desktop/src/state.rs | 0 .../wifi-densepose-desktop/tauri.conf.json | 0 .../tests/api_integration.rs | 0 .../ui/.claude-flow/daemon-state.json | 4 +- .../ui/.vite/deps/@tauri-apps_api_core.js | 0 .../ui/.vite/deps/@tauri-apps_api_core.js.map | 0 .../ui/.vite/deps/@tauri-apps_api_event.js | 0 .../.vite/deps/@tauri-apps_api_event.js.map | 0 .../.vite/deps/@tauri-apps_plugin-dialog.js | 0 .../deps/@tauri-apps_plugin-dialog.js.map | 0 .../ui/.vite/deps/_metadata.json | 0 .../ui/.vite/deps/chunk-BUSYA2B4.js | 0 .../ui/.vite/deps/chunk-BUSYA2B4.js.map | 0 .../ui/.vite/deps/chunk-JCH2SJW3.js | 0 .../ui/.vite/deps/chunk-JCH2SJW3.js.map | 0 .../ui/.vite/deps/chunk-YQTFE5VL.js | 0 .../ui/.vite/deps/chunk-YQTFE5VL.js.map | 0 .../ui/.vite/deps/package.json | 0 .../ui/.vite/deps/react-dom_client.js | 0 .../ui/.vite/deps/react-dom_client.js.map | 0 .../ui/.vite/deps/react.js | 0 .../ui/.vite/deps/react.js.map | 0 .../ui/.vite/deps/react_jsx-dev-runtime.js | 0 .../.vite/deps/react_jsx-dev-runtime.js.map | 0 .../wifi-densepose-desktop/ui/index.html | 0 .../ui/package-lock.json | 0 .../wifi-densepose-desktop/ui/package.json | 0 .../wifi-densepose-desktop/ui/src/App.tsx | 0 .../ui/src/components/NodeCard.tsx | 0 .../ui/src/components/Sidebar.tsx | 0 .../ui/src/components/StatusBadge.tsx | 0 .../ui/src/design-system.css | 0 .../ui/src/hooks/useNodes.ts | 0 .../ui/src/hooks/useServer.ts | 0 .../wifi-densepose-desktop/ui/src/main.tsx | 0 .../ui/src/pages/Dashboard.tsx | 0 .../ui/src/pages/EdgeModules.tsx | 0 .../ui/src/pages/FlashFirmware.tsx | 0 .../ui/src/pages/MeshView.tsx | 0 .../ui/src/pages/NetworkDiscovery.tsx | 0 .../ui/src/pages/Nodes.tsx | 0 .../ui/src/pages/OtaUpdate.tsx | 0 .../ui/src/pages/Sensing.tsx | 0 .../ui/src/pages/Settings.tsx | 0 .../wifi-densepose-desktop/ui/src/types.ts | 0 .../wifi-densepose-desktop/ui/src/version.ts | 0 .../wifi-densepose-desktop/ui/tsconfig.json | 0 .../wifi-densepose-desktop/ui/vite.config.ts | 0 .../crates/wifi-densepose-geo/Cargo.toml | 0 .../crates/wifi-densepose-geo/README.md | 0 .../wifi-densepose-geo/examples/validate.rs | 0 .../crates/wifi-densepose-geo/src/brain.rs | 0 .../crates/wifi-densepose-geo/src/cache.rs | 0 .../crates/wifi-densepose-geo/src/coord.rs | 0 .../crates/wifi-densepose-geo/src/fuse.rs | 0 .../crates/wifi-densepose-geo/src/lib.rs | 0 .../crates/wifi-densepose-geo/src/locate.rs | 0 .../crates/wifi-densepose-geo/src/osm.rs | 0 .../crates/wifi-densepose-geo/src/register.rs | 0 .../crates/wifi-densepose-geo/src/temporal.rs | 0 .../crates/wifi-densepose-geo/src/terrain.rs | 0 .../crates/wifi-densepose-geo/src/tiles.rs | 0 .../crates/wifi-densepose-geo/src/types.rs | 0 .../wifi-densepose-geo/tests/geo_test.rs | 0 .../crates/wifi-densepose-hardware/Cargo.toml | 0 .../crates/wifi-densepose-hardware/README.md | 0 .../benches/transport_bench.rs | 0 .../src/aggregator/mod.rs | 0 .../src/bin/aggregator.rs | 0 .../wifi-densepose-hardware/src/bridge.rs | 0 .../wifi-densepose-hardware/src/csi_frame.rs | 0 .../wifi-densepose-hardware/src/error.rs | 0 .../wifi-densepose-hardware/src/esp32/mod.rs | 0 .../src/esp32/quic_transport.rs | 0 .../src/esp32/secure_tdm.rs | 0 .../wifi-densepose-hardware/src/esp32/tdm.rs | 0 .../src/esp32_parser.rs | 0 .../crates/wifi-densepose-hardware/src/lib.rs | 0 .../wifi-densepose-hardware/src/radio_ops.rs | 0 .../crates/wifi-densepose-mat/Cargo.toml | 0 .../crates/wifi-densepose-mat/README.md | 0 .../benches/detection_bench.rs | 0 .../src/alerting/dispatcher.rs | 0 .../src/alerting/generator.rs | 0 .../wifi-densepose-mat/src/alerting/mod.rs | 0 .../src/alerting/triage_service.rs | 0 .../crates/wifi-densepose-mat/src/api/dto.rs | 0 .../wifi-densepose-mat/src/api/error.rs | 0 .../wifi-densepose-mat/src/api/handlers.rs | 0 .../crates/wifi-densepose-mat/src/api/mod.rs | 0 .../wifi-densepose-mat/src/api/state.rs | 0 .../wifi-densepose-mat/src/api/websocket.rs | 0 .../src/detection/breathing.rs | 0 .../src/detection/ensemble.rs | 0 .../src/detection/heartbeat.rs | 0 .../wifi-densepose-mat/src/detection/mod.rs | 0 .../src/detection/movement.rs | 0 .../src/detection/pipeline.rs | 0 .../wifi-densepose-mat/src/domain/alert.rs | 0 .../src/domain/coordinates.rs | 0 .../src/domain/disaster_event.rs | 0 .../wifi-densepose-mat/src/domain/events.rs | 0 .../wifi-densepose-mat/src/domain/mod.rs | 0 .../src/domain/scan_zone.rs | 0 .../wifi-densepose-mat/src/domain/survivor.rs | 0 .../wifi-densepose-mat/src/domain/triage.rs | 0 .../src/domain/vital_signs.rs | 0 .../src/integration/csi_receiver.rs | 0 .../src/integration/hardware_adapter.rs | 0 .../wifi-densepose-mat/src/integration/mod.rs | 0 .../src/integration/neural_adapter.rs | 0 .../src/integration/signal_adapter.rs | 0 .../crates/wifi-densepose-mat/src/lib.rs | 0 .../src/localization/depth.rs | 0 .../src/localization/fusion.rs | 0 .../src/localization/mod.rs | 0 .../src/localization/triangulation.rs | 0 .../wifi-densepose-mat/src/ml/debris_model.rs | 0 .../crates/wifi-densepose-mat/src/ml/mod.rs | 0 .../src/ml/vital_signs_classifier.rs | 0 .../src/tracking/fingerprint.rs | 0 .../wifi-densepose-mat/src/tracking/kalman.rs | 0 .../src/tracking/lifecycle.rs | 0 .../wifi-densepose-mat/src/tracking/mod.rs | 0 .../src/tracking/tracker.rs | 0 .../tests/integration_adr001.rs | 0 .../crates/wifi-densepose-nn/Cargo.toml | 0 .../crates/wifi-densepose-nn/README.md | 0 .../benches/inference_bench.rs | 0 .../crates/wifi-densepose-nn/src/densepose.rs | 0 .../crates/wifi-densepose-nn/src/error.rs | 0 .../crates/wifi-densepose-nn/src/inference.rs | 0 .../crates/wifi-densepose-nn/src/lib.rs | 0 .../crates/wifi-densepose-nn/src/onnx.rs | 0 .../crates/wifi-densepose-nn/src/tensor.rs | 0 .../wifi-densepose-nn/src/translator.rs | 0 .../wifi-densepose-pointcloud/Cargo.toml | 0 .../src/brain_bridge.rs | 0 .../wifi-densepose-pointcloud/src/camera.rs | 0 .../src/csi_pipeline.rs | 0 .../wifi-densepose-pointcloud/src/depth.rs | 0 .../wifi-densepose-pointcloud/src/fusion.rs | 0 .../wifi-densepose-pointcloud/src/main.rs | 0 .../wifi-densepose-pointcloud/src/parser.rs | 0 .../src/pointcloud.rs | 0 .../wifi-densepose-pointcloud/src/stream.rs | 0 .../wifi-densepose-pointcloud/src/training.rs | 0 .../wifi-densepose-pointcloud/src/viewer.html | 0 .../crates/wifi-densepose-ruvector/Cargo.toml | 0 .../crates/wifi-densepose-ruvector/README.md | 0 .../benches/crv_bench.rs | 0 .../wifi-densepose-ruvector/src/crv/mod.rs | 0 .../crates/wifi-densepose-ruvector/src/lib.rs | 0 .../src/mat/breathing.rs | 0 .../src/mat/heartbeat.rs | 0 .../wifi-densepose-ruvector/src/mat/mod.rs | 0 .../src/mat/triangulation.rs | 0 .../wifi-densepose-ruvector/src/signal/bvp.rs | 0 .../src/signal/fresnel.rs | 0 .../wifi-densepose-ruvector/src/signal/mod.rs | 0 .../src/signal/spectrogram.rs | 0 .../src/signal/subcarrier.rs | 0 .../src/viewpoint/attention.rs | 0 .../src/viewpoint/coherence.rs | 0 .../src/viewpoint/fusion.rs | 0 .../src/viewpoint/geometry.rs | 0 .../src/viewpoint/mod.rs | 0 .../wifi-densepose-sensing-server/Cargo.toml | 0 .../wifi-densepose-sensing-server/README.md | 0 .../src/adaptive_classifier.rs | 0 .../wifi-densepose-sensing-server/src/cli.rs | 0 .../wifi-densepose-sensing-server/src/csi.rs | 0 .../src/dataset.rs | 0 .../src/embedding.rs | 0 .../src/field_bridge.rs | 0 .../src/graph_transformer.rs | 0 .../wifi-densepose-sensing-server/src/lib.rs | 0 .../wifi-densepose-sensing-server/src/main.rs | 0 .../src/model_manager.rs | 0 .../src/multistatic_bridge.rs | 0 .../wifi-densepose-sensing-server/src/pose.rs | 0 .../src/recording.rs | 0 .../src/rvf_container.rs | 0 .../src/rvf_pipeline.rs | 0 .../wifi-densepose-sensing-server/src/sona.rs | 0 .../src/sparse_inference.rs | 0 .../src/tracker_bridge.rs | 0 .../src/trainer.rs | 0 .../src/training_api.rs | 0 .../src/types.rs | 0 .../src/vital_signs.rs | 0 .../tests/multi_node_test.rs | 0 .../tests/rvf_container_test.rs | 0 .../tests/vital_signs_test.rs | 0 .../crates/wifi-densepose-signal/Cargo.toml | 0 .../crates/wifi-densepose-signal/README.md | 0 .../benches/signal_bench.rs | 0 .../crates/wifi-densepose-signal/src/bvp.rs | 0 .../src/csi_processor.rs | 0 .../wifi-densepose-signal/src/csi_ratio.rs | 0 .../wifi-densepose-signal/src/features.rs | 0 .../wifi-densepose-signal/src/fresnel.rs | 0 .../wifi-densepose-signal/src/hampel.rs | 0 .../src/hardware_norm.rs | 0 .../crates/wifi-densepose-signal/src/lib.rs | 0 .../wifi-densepose-signal/src/motion.rs | 0 .../src/phase_sanitizer.rs | 0 .../src/ruvsense/adversarial.rs | 0 .../src/ruvsense/attractor_drift.rs | 0 .../src/ruvsense/coherence.rs | 0 .../src/ruvsense/coherence_gate.rs | 0 .../src/ruvsense/cross_room.rs | 0 .../src/ruvsense/field_model.rs | 0 .../src/ruvsense/gesture.rs | 0 .../src/ruvsense/intention.rs | 0 .../src/ruvsense/longitudinal.rs | 0 .../wifi-densepose-signal/src/ruvsense/mod.rs | 0 .../src/ruvsense/multiband.rs | 0 .../src/ruvsense/multistatic.rs | 0 .../src/ruvsense/phase_align.rs | 0 .../src/ruvsense/pose_tracker.rs | 0 .../src/ruvsense/temporal_gesture.rs | 0 .../src/ruvsense/tomography.rs | 0 .../wifi-densepose-signal/src/spectrogram.rs | 0 .../src/subcarrier_selection.rs | 0 .../tests/validation_test.rs | 0 .../crates/wifi-densepose-train/Cargo.toml | 0 .../crates/wifi-densepose-train/README.md | 0 .../benches/training_bench.rs | 0 .../wifi-densepose-train/src/bin/train.rs | 0 .../src/bin/verify_training.rs | 0 .../crates/wifi-densepose-train/src/config.rs | 0 .../wifi-densepose-train/src/dataset.rs | 0 .../crates/wifi-densepose-train/src/domain.rs | 0 .../crates/wifi-densepose-train/src/error.rs | 0 .../crates/wifi-densepose-train/src/eval.rs | 0 .../wifi-densepose-train/src/geometry.rs | 0 .../crates/wifi-densepose-train/src/lib.rs | 0 .../crates/wifi-densepose-train/src/losses.rs | 0 .../wifi-densepose-train/src/metrics.rs | 0 .../crates/wifi-densepose-train/src/model.rs | 0 .../crates/wifi-densepose-train/src/proof.rs | 0 .../wifi-densepose-train/src/rapid_adapt.rs | 0 .../src/ruview_metrics.rs | 0 .../wifi-densepose-train/src/subcarrier.rs | 0 .../wifi-densepose-train/src/trainer.rs | 0 .../wifi-densepose-train/src/virtual_aug.rs | 0 .../wifi-densepose-train/tests/test_config.rs | 0 .../tests/test_dataset.rs | 0 .../wifi-densepose-train/tests/test_losses.rs | 0 .../tests/test_metrics.rs | 0 .../wifi-densepose-train/tests/test_proof.rs | 0 .../tests/test_subcarrier.rs | 0 .../crates/wifi-densepose-vitals/Cargo.toml | 0 .../crates/wifi-densepose-vitals/README.md | 0 .../wifi-densepose-vitals/src/anomaly.rs | 0 .../wifi-densepose-vitals/src/breathing.rs | 0 .../wifi-densepose-vitals/src/heartrate.rs | 0 .../crates/wifi-densepose-vitals/src/lib.rs | 0 .../wifi-densepose-vitals/src/preprocessor.rs | 0 .../crates/wifi-densepose-vitals/src/store.rs | 0 .../crates/wifi-densepose-vitals/src/types.rs | 0 .../.cargo/config.toml | 0 .../.claude-flow/.trend-cache.json | 0 .../wifi-densepose-wasm-edge/Cargo.lock | 0 .../wifi-densepose-wasm-edge/Cargo.toml | 0 .../src/adversarial.rs | 0 .../src/ais_behavioral_profiler.rs | 0 .../src/ais_prompt_shield.rs | 0 .../src/aut_psycho_symbolic.rs | 0 .../src/aut_self_healing_mesh.rs | 0 .../src/bin/ghost_hunter.rs | 0 .../src/bld_elevator_count.rs | 0 .../src/bld_energy_audit.rs | 0 .../src/bld_hvac_presence.rs | 0 .../src/bld_lighting_zones.rs | 0 .../src/bld_meeting_room.rs | 0 .../wifi-densepose-wasm-edge/src/coherence.rs | 0 .../src/exo_breathing_sync.rs | 0 .../src/exo_dream_stage.rs | 0 .../src/exo_emotion_detect.rs | 0 .../src/exo_gesture_language.rs | 0 .../src/exo_ghost_hunter.rs | 0 .../src/exo_happiness_score.rs | 0 .../src/exo_hyperbolic_space.rs | 0 .../src/exo_music_conductor.rs | 0 .../src/exo_plant_growth.rs | 0 .../src/exo_rain_detect.rs | 0 .../src/exo_time_crystal.rs | 0 .../wifi-densepose-wasm-edge/src/gesture.rs | 0 .../src/ind_clean_room.rs | 0 .../src/ind_confined_space.rs | 0 .../src/ind_forklift_proximity.rs | 0 .../src/ind_livestock_monitor.rs | 0 .../src/ind_structural_vibration.rs | 0 .../wifi-densepose-wasm-edge/src/intrusion.rs | 0 .../wifi-densepose-wasm-edge/src/lib.rs | 0 .../src/lrn_anomaly_attractor.rs | 0 .../src/lrn_dtw_gesture_learn.rs | 0 .../src/lrn_ewc_lifelong.rs | 0 .../src/lrn_meta_adapt.rs | 0 .../src/med_cardiac_arrhythmia.rs | 0 .../src/med_gait_analysis.rs | 0 .../src/med_respiratory_distress.rs | 0 .../src/med_seizure_detect.rs | 0 .../src/med_sleep_apnea.rs | 0 .../wifi-densepose-wasm-edge/src/occupancy.rs | 0 .../src/qnt_interference_search.rs | 0 .../src/qnt_quantum_coherence.rs | 0 .../src/ret_customer_flow.rs | 0 .../src/ret_dwell_heatmap.rs | 0 .../src/ret_queue_length.rs | 0 .../src/ret_shelf_engagement.rs | 0 .../src/ret_table_turnover.rs | 0 .../wifi-densepose-wasm-edge/src/rvf.rs | 0 .../src/sec_loitering.rs | 0 .../src/sec_panic_motion.rs | 0 .../src/sec_perimeter_breach.rs | 0 .../src/sec_tailgating.rs | 0 .../src/sec_weapon_detect.rs | 0 .../src/sig_coherence_gate.rs | 0 .../src/sig_flash_attention.rs | 0 .../src/sig_mincut_person_match.rs | 0 .../src/sig_optimal_transport.rs | 0 .../src/sig_sparse_recovery.rs | 0 .../src/sig_temporal_compress.rs | 0 .../src/spt_micro_hnsw.rs | 0 .../src/spt_pagerank_influence.rs | 0 .../src/spt_spiking_tracker.rs | 0 .../src/tmp_goap_autonomy.rs | 0 .../src/tmp_pattern_sequence.rs | 0 .../src/tmp_temporal_logic_guard.rs | 0 .../src/vendor_common.rs | 0 .../src/vital_trend.rs | 0 .../tests/budget_compliance.rs | 0 .../tests/vendor_modules_bench.rs | 0 .../tests/vendor_modules_test.rs | 2 +- .../crates/wifi-densepose-wasm/Cargo.toml | 0 .../crates/wifi-densepose-wasm/README.md | 0 .../crates/wifi-densepose-wasm/src/lib.rs | 0 .../crates/wifi-densepose-wasm/src/mat.rs | 0 .../crates/wifi-densepose-wifiscan/Cargo.toml | 0 .../crates/wifi-densepose-wifiscan/README.md | 0 .../src/adapter/linux_scanner.rs | 0 .../src/adapter/macos_scanner.rs | 0 .../src/adapter/mod.rs | 0 .../src/adapter/netsh_scanner.rs | 0 .../src/adapter/wlanapi_scanner.rs | 0 .../src/domain/bssid.rs | 0 .../src/domain/frame.rs | 0 .../wifi-densepose-wifiscan/src/domain/mod.rs | 0 .../src/domain/registry.rs | 0 .../src/domain/result.rs | 0 .../wifi-densepose-wifiscan/src/error.rs | 0 .../crates/wifi-densepose-wifiscan/src/lib.rs | 0 .../src/pipeline/attention_weighter.rs | 0 .../src/pipeline/breathing_extractor.rs | 0 .../src/pipeline/correlator.rs | 0 .../src/pipeline/fingerprint_matcher.rs | 0 .../src/pipeline/mod.rs | 0 .../src/pipeline/motion_estimator.rs | 0 .../src/pipeline/orchestrator.rs | 0 .../src/pipeline/predictive_gate.rs | 0 .../src/pipeline/quality_gate.rs | 0 .../wifi-densepose-wifiscan/src/port/mod.rs | 0 .../src/port/scan_port.rs | 0 .../data/adaptive_model.json | 0 ...ec_1772470567081-20260302_165607.csi.jsonl | 0 ...772470567081-20260302_165607.csi.meta.json | 0 ...ec_1772472968919-20260302_173608.csi.jsonl | 0 .../docs/adr/ADR-001-workspace-structure.md | 0 .../docs/adr/ADR-002-signal-processing.md | 0 .../adr/ADR-003-neural-network-inference.md | 0 .../docs/ddd/README.md | 0 .../docs/ddd/aggregates.md | 0 .../docs/ddd/bounded-contexts.md | 0 .../docs/ddd/domain-events.md | 0 .../docs/ddd/domain-model.md | 0 .../docs/ddd/ubiquitous-language.md | 0 .../examples/mat-dashboard.html | 0 .../patches/ruvector-crv/Cargo.lock | 0 .../patches/ruvector-crv/Cargo.toml | 0 .../patches/ruvector-crv/Cargo.toml.orig | 0 .../patches/ruvector-crv/README.md | 0 .../patches/ruvector-crv/src/error.rs | 0 .../patches/ruvector-crv/src/lib.rs | 0 .../patches/ruvector-crv/src/session.rs | 0 .../patches/ruvector-crv/src/stage_i.rs | 0 .../patches/ruvector-crv/src/stage_ii.rs | 0 .../patches/ruvector-crv/src/stage_iii.rs | 0 .../patches/ruvector-crv/src/stage_iv.rs | 0 .../patches/ruvector-crv/src/stage_v.rs | 0 .../patches/ruvector-crv/src/stage_vi.rs | 0 .../patches/ruvector-crv/src/types.rs | 0 626 files changed, 240 insertions(+), 363 deletions(-) delete mode 100644 rust-port/wifi-densepose-rs/.claude-flow/daemon.pid delete mode 100644 rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/data/pending-insights.jsonl delete mode 100644 rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/sessions/current.json delete mode 100644 rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/sessions/session-1773100562538.json delete mode 100644 rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/sessions/session-1773101285009.json delete mode 100644 rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/data/pending-insights.jsonl delete mode 100644 rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/sessions/current.json delete mode 100644 rust-port/wifi-densepose-rs/data/models/trained-pretrain-20260302_173607.rvf delete mode 100644 rust-port/wifi-densepose-rs/data/models/trained-supervised-20260302_165735.rvf rename {rust-port/wifi-densepose-rs => v2}/.claude-flow/.trend-cache.json (100%) rename {rust-port/wifi-densepose-rs => v2}/.claude-flow/daemon-state.json (94%) rename {rust-port/wifi-densepose-rs => v2}/.claude-flow/metrics/codebase-map.json (73%) rename {rust-port/wifi-densepose-rs => v2}/.claude-flow/metrics/consolidation.json (100%) rename {rust-port/wifi-densepose-rs => v2}/Cargo.lock (100%) rename {rust-port/wifi-densepose-rs => v2}/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/README.md (99%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/.gitignore (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/README.md (99%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/SECURITY_REVIEW.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-cli/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-cli/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-cli/src/commands/analyze.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-cli/src/commands/export.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-cli/src/commands/info.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-cli/src/commands/mincut.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-cli/src/commands/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-cli/src/commands/pipeline.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-cli/src/commands/simulate.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-cli/src/commands/witness.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-cli/src/main.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/src/brain.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/src/embedding.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/src/error.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/src/graph.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/src/rvf.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/src/sensor.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/src/signal.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/src/topology.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/src/traits.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-core/src/witness.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-decoder/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-decoder/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-decoder/src/clinical.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-decoder/src/knn_decoder.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-decoder/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-decoder/src/pipeline.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-decoder/src/threshold_decoder.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-decoder/src/transition_decoder.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-embed/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-embed/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-embed/src/combined.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-embed/src/distance.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-embed/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-embed/src/node2vec.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-embed/src/rvf_export.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-embed/src/spectral_embed.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-embed/src/temporal.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-embed/src/topology_embed.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-esp32/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-esp32/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-esp32/src/adc.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-esp32/src/aggregator.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-esp32/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-esp32/src/power.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-esp32/src/preprocessing.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-esp32/src/protocol.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-esp32/src/tdm.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-graph/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-graph/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-graph/src/atlas.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-graph/src/constructor.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-graph/src/dynamics.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-graph/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-graph/src/metrics.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-graph/src/petgraph_bridge.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-graph/src/spectral.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-memory/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-memory/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-memory/benches/benchmarks.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-memory/src/hnsw.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-memory/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-memory/src/longitudinal.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-memory/src/persistence.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-memory/src/session.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-memory/src/store.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-mincut/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-mincut/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-mincut/benches/benchmarks.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-mincut/src/benchmark.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-mincut/src/coherence.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-mincut/src/dynamic.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-mincut/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-mincut/src/multiway.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-mincut/src/normalized.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-mincut/src/spectral_cut.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-mincut/src/stoer_wagner.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-sensor/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-sensor/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-sensor/src/calibration.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-sensor/src/eeg.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-sensor/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-sensor/src/nv_diamond.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-sensor/src/opm.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-sensor/src/quality.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-sensor/src/simulator.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-signal/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-signal/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-signal/benches/benchmarks.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-signal/src/artifact.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-signal/src/connectivity.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-signal/src/filter.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-signal/src/hilbert.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-signal/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-signal/src/preprocessing.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-signal/src/spectral.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-viz/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-viz/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-viz/src/animation.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-viz/src/ascii.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-viz/src/colormap.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-viz/src/export.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-viz/src/layout.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-viz/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-wasm/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-wasm/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-wasm/src/graph_wasm.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-wasm/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-wasm/src/streaming.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/ruv-neural-wasm/src/viz_data.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/ruv-neural/tests/integration.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-api/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-api/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-api/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-cli/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-cli/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-cli/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-cli/src/main.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-cli/src/mat.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-config/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-config/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-config/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-core/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-core/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-core/src/error.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-core/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-core/src/traits.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-core/src/types.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-core/src/utils.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-db/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-db/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-db/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/.claude-flow/daemon-state.json (91%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/README.md (99%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/build.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/capabilities/default.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/gen/schemas/acl-manifests.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/gen/schemas/capabilities.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/gen/schemas/desktop-schema.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/gen/schemas/macOS-schema.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/gen/schemas/windows-schema.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/icons/128x128.png (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/icons/128x128@2x.png (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/icons/32x32.png (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/icons/icon.icns (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/icons/icon.ico (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/commands/discovery.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/commands/flash.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/commands/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/commands/ota.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/commands/provision.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/commands/server.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/commands/settings.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/commands/wasm.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/domain/config.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/domain/firmware.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/domain/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/domain/node.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/main.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/src/state.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/tauri.conf.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/tests/api_integration.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.claude-flow/daemon-state.json (91%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_core.js (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_core.js.map (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_event.js (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_event.js.map (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_plugin-dialog.js (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_plugin-dialog.js.map (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/_metadata.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-BUSYA2B4.js (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-BUSYA2B4.js.map (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-JCH2SJW3.js (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-JCH2SJW3.js.map (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-YQTFE5VL.js (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-YQTFE5VL.js.map (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/package.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/react-dom_client.js (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/react-dom_client.js.map (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/react.js (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/react.js.map (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/react_jsx-dev-runtime.js (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/.vite/deps/react_jsx-dev-runtime.js.map (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/index.html (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/package-lock.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/package.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/App.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/components/NodeCard.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/components/Sidebar.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/components/StatusBadge.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/design-system.css (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/hooks/useNodes.ts (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/hooks/useServer.ts (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/main.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/pages/Dashboard.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/pages/EdgeModules.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/pages/FlashFirmware.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/pages/MeshView.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/pages/NetworkDiscovery.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/pages/Nodes.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/pages/OtaUpdate.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/pages/Sensing.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/pages/Settings.tsx (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/types.ts (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/src/version.ts (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/tsconfig.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-desktop/ui/vite.config.ts (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/examples/validate.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/src/brain.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/src/cache.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/src/coord.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/src/fuse.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/src/locate.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/src/osm.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/src/register.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/src/temporal.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/src/terrain.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/src/tiles.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/src/types.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-geo/tests/geo_test.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/benches/transport_bench.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/src/aggregator/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/src/bin/aggregator.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/src/bridge.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/src/csi_frame.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/src/error.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/src/esp32/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/src/esp32/quic_transport.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/src/esp32/secure_tdm.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/src/esp32/tdm.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/src/esp32_parser.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-hardware/src/radio_ops.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/benches/detection_bench.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/alerting/dispatcher.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/alerting/generator.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/alerting/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/alerting/triage_service.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/api/dto.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/api/error.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/api/handlers.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/api/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/api/state.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/api/websocket.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/detection/breathing.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/detection/ensemble.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/detection/heartbeat.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/detection/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/detection/movement.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/detection/pipeline.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/domain/alert.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/domain/coordinates.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/domain/disaster_event.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/domain/events.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/domain/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/domain/scan_zone.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/domain/survivor.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/domain/triage.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/domain/vital_signs.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/integration/csi_receiver.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/integration/hardware_adapter.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/integration/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/integration/neural_adapter.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/integration/signal_adapter.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/localization/depth.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/localization/fusion.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/localization/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/localization/triangulation.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/ml/debris_model.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/ml/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/ml/vital_signs_classifier.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/tracking/fingerprint.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/tracking/kalman.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/tracking/lifecycle.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/tracking/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/src/tracking/tracker.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-mat/tests/integration_adr001.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-nn/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-nn/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-nn/benches/inference_bench.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-nn/src/densepose.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-nn/src/error.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-nn/src/inference.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-nn/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-nn/src/onnx.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-nn/src/tensor.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-nn/src/translator.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-pointcloud/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-pointcloud/src/brain_bridge.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-pointcloud/src/camera.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-pointcloud/src/csi_pipeline.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-pointcloud/src/depth.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-pointcloud/src/fusion.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-pointcloud/src/main.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-pointcloud/src/parser.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-pointcloud/src/pointcloud.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-pointcloud/src/stream.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-pointcloud/src/training.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-pointcloud/src/viewer.html (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/benches/crv_bench.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/crv/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/mat/breathing.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/mat/heartbeat.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/mat/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/mat/triangulation.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/signal/bvp.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/signal/fresnel.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/signal/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/signal/spectrogram.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/signal/subcarrier.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/viewpoint/attention.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/viewpoint/coherence.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/viewpoint/fusion.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/viewpoint/geometry.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-ruvector/src/viewpoint/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/adaptive_classifier.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/cli.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/csi.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/dataset.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/embedding.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/field_bridge.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/graph_transformer.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/main.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/model_manager.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/multistatic_bridge.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/pose.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/recording.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/rvf_container.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/rvf_pipeline.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/sona.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/sparse_inference.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/tracker_bridge.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/trainer.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/training_api.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/types.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/src/vital_signs.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/tests/multi_node_test.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/tests/rvf_container_test.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-sensing-server/tests/vital_signs_test.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/benches/signal_bench.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/bvp.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/csi_processor.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/csi_ratio.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/features.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/fresnel.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/hampel.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/hardware_norm.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/motion.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/phase_sanitizer.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/adversarial.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/attractor_drift.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/coherence.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/coherence_gate.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/cross_room.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/field_model.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/gesture.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/intention.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/longitudinal.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/multiband.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/multistatic.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/phase_align.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/pose_tracker.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/temporal_gesture.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/ruvsense/tomography.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/spectrogram.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/src/subcarrier_selection.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-signal/tests/validation_test.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/benches/training_bench.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/bin/train.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/bin/verify_training.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/config.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/dataset.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/domain.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/error.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/eval.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/geometry.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/losses.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/metrics.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/model.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/proof.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/rapid_adapt.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/ruview_metrics.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/subcarrier.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/trainer.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/src/virtual_aug.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/tests/test_config.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/tests/test_dataset.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/tests/test_losses.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/tests/test_metrics.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/tests/test_proof.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-train/tests/test_subcarrier.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-vitals/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-vitals/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-vitals/src/anomaly.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-vitals/src/breathing.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-vitals/src/heartrate.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-vitals/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-vitals/src/preprocessor.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-vitals/src/store.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-vitals/src/types.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/.cargo/config.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/.claude-flow/.trend-cache.json (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/Cargo.lock (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/adversarial.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/ais_behavioral_profiler.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/ais_prompt_shield.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/aut_psycho_symbolic.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/aut_self_healing_mesh.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/bin/ghost_hunter.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/bld_elevator_count.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/bld_energy_audit.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/bld_hvac_presence.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/bld_lighting_zones.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/bld_meeting_room.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/coherence.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/exo_breathing_sync.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/exo_dream_stage.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/exo_emotion_detect.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/exo_gesture_language.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/exo_ghost_hunter.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/exo_happiness_score.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/exo_hyperbolic_space.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/exo_music_conductor.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/exo_plant_growth.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/exo_rain_detect.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/exo_time_crystal.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/gesture.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/ind_clean_room.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/ind_confined_space.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/ind_forklift_proximity.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/ind_livestock_monitor.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/ind_structural_vibration.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/intrusion.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/lrn_anomaly_attractor.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/lrn_dtw_gesture_learn.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/lrn_ewc_lifelong.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/lrn_meta_adapt.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/med_cardiac_arrhythmia.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/med_gait_analysis.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/med_respiratory_distress.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/med_seizure_detect.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/med_sleep_apnea.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/occupancy.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/qnt_interference_search.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/qnt_quantum_coherence.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/ret_customer_flow.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/ret_dwell_heatmap.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/ret_queue_length.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/ret_shelf_engagement.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/ret_table_turnover.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/rvf.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/sec_loitering.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/sec_panic_motion.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/sec_perimeter_breach.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/sec_tailgating.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/sec_weapon_detect.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/sig_coherence_gate.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/sig_flash_attention.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/sig_mincut_person_match.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/sig_optimal_transport.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/sig_sparse_recovery.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/sig_temporal_compress.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/spt_micro_hnsw.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/spt_pagerank_influence.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/spt_spiking_tracker.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/tmp_goap_autonomy.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/tmp_pattern_sequence.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/tmp_temporal_logic_guard.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/vendor_common.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/src/vital_trend.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/tests/budget_compliance.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/tests/vendor_modules_bench.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm-edge/tests/vendor_modules_test.rs (99%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wasm/src/mat.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/adapter/linux_scanner.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/adapter/macos_scanner.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/adapter/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/adapter/netsh_scanner.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/adapter/wlanapi_scanner.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/domain/bssid.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/domain/frame.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/domain/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/domain/registry.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/domain/result.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/error.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/pipeline/attention_weighter.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/pipeline/breathing_extractor.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/pipeline/correlator.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/pipeline/fingerprint_matcher.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/pipeline/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/pipeline/motion_estimator.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/pipeline/orchestrator.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/pipeline/predictive_gate.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/pipeline/quality_gate.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/port/mod.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/crates/wifi-densepose-wifiscan/src/port/scan_port.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/data/adaptive_model.json (100%) rename {rust-port/wifi-densepose-rs => v2}/data/recordings/rec_1772470567081-20260302_165607.csi.jsonl (100%) rename {rust-port/wifi-densepose-rs => v2}/data/recordings/rec_1772470567081-20260302_165607.csi.meta.json (100%) rename {rust-port/wifi-densepose-rs => v2}/data/recordings/rec_1772472968919-20260302_173608.csi.jsonl (100%) rename {rust-port/wifi-densepose-rs => v2}/docs/adr/ADR-001-workspace-structure.md (100%) rename {rust-port/wifi-densepose-rs => v2}/docs/adr/ADR-002-signal-processing.md (100%) rename {rust-port/wifi-densepose-rs => v2}/docs/adr/ADR-003-neural-network-inference.md (100%) rename {rust-port/wifi-densepose-rs => v2}/docs/ddd/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/docs/ddd/aggregates.md (100%) rename {rust-port/wifi-densepose-rs => v2}/docs/ddd/bounded-contexts.md (100%) rename {rust-port/wifi-densepose-rs => v2}/docs/ddd/domain-events.md (100%) rename {rust-port/wifi-densepose-rs => v2}/docs/ddd/domain-model.md (100%) rename {rust-port/wifi-densepose-rs => v2}/docs/ddd/ubiquitous-language.md (100%) rename {rust-port/wifi-densepose-rs => v2}/examples/mat-dashboard.html (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/Cargo.lock (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/Cargo.toml (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/Cargo.toml.orig (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/README.md (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/src/error.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/src/lib.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/src/session.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/src/stage_i.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/src/stage_ii.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/src/stage_iii.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/src/stage_iv.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/src/stage_v.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/src/stage_vi.rs (100%) rename {rust-port/wifi-densepose-rs => v2}/patches/ruvector-crv/src/types.rs (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cb26d87f5..7a9daaaf8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -79,13 +79,13 @@ jobs: path: | ~/.cargo/registry ~/.cargo/git - rust-port/wifi-densepose-rs/target - key: ${{ runner.os }}-cargo-${{ hashFiles('rust-port/wifi-densepose-rs/Cargo.lock') }} + v2/target + key: ${{ runner.os }}-cargo-${{ hashFiles('v2/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo- - name: Run Rust tests - working-directory: rust-port/wifi-densepose-rs + working-directory: v2 run: cargo test --workspace --no-default-features # Unit and Integration Tests diff --git a/.github/workflows/desktop-release.yml b/.github/workflows/desktop-release.yml index 36555d80b..9e6ab592c 100644 --- a/.github/workflows/desktop-release.yml +++ b/.github/workflows/desktop-release.yml @@ -40,18 +40,18 @@ jobs: targets: ${{ matrix.target }} - name: Install frontend dependencies - working-directory: rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui + working-directory: v2/crates/wifi-densepose-desktop/ui run: npm ci - name: Build frontend - working-directory: rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui + working-directory: v2/crates/wifi-densepose-desktop/ui run: npm run build - name: Install Tauri CLI run: cargo install tauri-cli --version "^2.0.0" - name: Build Tauri app - working-directory: rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop + working-directory: v2/crates/wifi-densepose-desktop run: cargo tauri build --target ${{ matrix.target }} env: TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} @@ -68,14 +68,14 @@ jobs: - name: Package macOS app run: | - cd rust-port/wifi-densepose-rs/target/${{ matrix.target }}/release/bundle/macos + cd v2/target/${{ matrix.target }}/release/bundle/macos zip -r "RuView-Desktop-${{ github.event.inputs.version || '0.4.0' }}-macos-${{ steps.arch.outputs.arch }}.zip" "RuView Desktop.app" - name: Upload macOS artifact uses: actions/upload-artifact@v4 with: name: ruview-macos-${{ steps.arch.outputs.arch }} - path: rust-port/wifi-densepose-rs/target/${{ matrix.target }}/release/bundle/macos/*.zip + path: v2/target/${{ matrix.target }}/release/bundle/macos/*.zip build-windows: name: Build Windows @@ -93,18 +93,18 @@ jobs: uses: dtolnay/rust-toolchain@stable - name: Install frontend dependencies - working-directory: rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui + working-directory: v2/crates/wifi-densepose-desktop/ui run: npm ci - name: Build frontend - working-directory: rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui + working-directory: v2/crates/wifi-densepose-desktop/ui run: npm run build - name: Install Tauri CLI run: cargo install tauri-cli --version "^2.0.0" - name: Build Tauri app - working-directory: rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop + working-directory: v2/crates/wifi-densepose-desktop run: cargo tauri build env: TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} @@ -114,13 +114,13 @@ jobs: uses: actions/upload-artifact@v4 with: name: ruview-windows-msi - path: rust-port/wifi-densepose-rs/target/release/bundle/msi/*.msi + path: v2/target/release/bundle/msi/*.msi - name: Upload Windows NSIS artifact uses: actions/upload-artifact@v4 with: name: ruview-windows-nsis - path: rust-port/wifi-densepose-rs/target/release/bundle/nsis/*.exe + path: v2/target/release/bundle/nsis/*.exe create-release: name: Create Release diff --git a/CLAUDE.md b/CLAUDE.md index 4c11fd733..c0b225b7d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -3,7 +3,7 @@ ## Project: wifi-densepose WiFi-based human pose estimation using Channel State Information (CSI). -Dual codebase: Python v1 (`v1/`) and Rust port (`rust-port/wifi-densepose-rs/`). +Dual codebase: Python v1 (`v1/`) and Rust port (`v2/`). ### Key Rust Crates | Crate | Description | |-------|-------------| @@ -84,7 +84,7 @@ All 5 ruvector crates integrated in workspace: ### Build & Test Commands (this repo) ```bash # Rust — full workspace tests (1,031+ tests, ~2 min) -cd rust-port/wifi-densepose-rs +cd v2 cargo test --workspace --no-default-features # Rust — single crate check (no GPU needed) @@ -151,11 +151,11 @@ Crates must be published in dependency order: ```bash # 1. Rust tests — must be 1,031+ passed, 0 failed -cd rust-port/wifi-densepose-rs +cd v2 cargo test --workspace --no-default-features # 2. Python proof — must print VERDICT: PASS -cd ../.. +cd .. python v1/data/proof/verify.py # 3. Generate witness bundle (includes both above + firmware hashes) @@ -211,10 +211,10 @@ Active feature branch: `ruvsense-full-implementation` (PR #77) - NEVER save to root folder — use the directories below - `docs/adr/` — Architecture Decision Records (43 ADRs) - `docs/ddd/` — Domain-Driven Design models -- `rust-port/wifi-densepose-rs/crates/` — Rust workspace crates (15 crates) -- `rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/` — RuvSense multistatic modules (14 files) -- `rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/viewpoint/` — Cross-viewpoint fusion (5 files) -- `rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/esp32/` — ESP32 TDM protocol +- `v2/crates/` — Rust workspace crates (15 crates) +- `v2/crates/wifi-densepose-signal/src/ruvsense/` — RuvSense multistatic modules (14 files) +- `v2/crates/wifi-densepose-ruvector/src/viewpoint/` — Cross-viewpoint fusion (5 files) +- `v2/crates/wifi-densepose-hardware/src/esp32/` — ESP32 TDM protocol - `firmware/esp32-csi-node/main/` — ESP32 C firmware (channel hopping, NVS config, TDM) - `v1/src/` — Python source (core, hardware, services, api) - `v1/data/proof/` — Deterministic CSI proof bundles diff --git a/README.md b/README.md index 884da1588..bc76a86ff 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ RuView now generates **real-time 3D point clouds** by fusing camera depth + WiFi **Quick start:** ```bash -cd rust-port/wifi-densepose-rs +cd v2 cargo build --release -p wifi-densepose-pointcloud ./target/release/ruview-pointcloud serve --bind 127.0.0.1:9880 # Open http://localhost:9880 for live 3D viewer @@ -381,7 +381,7 @@ See [ADR-069](docs/adr/ADR-069-cognitum-seed-csi-pipeline.md), [ADR-071](docs/ad | [Build Guide](docs/build-guide.md) | Building from source (Rust and Python) | | [Architecture Decisions](docs/adr/README.md) | 79 ADRs — why each technical choice was made, organized by domain (hardware, signal processing, ML, platform, infrastructure) | | [Domain Models](docs/ddd/README.md) | 7 DDD models (RuvSense, Signal Processing, Training Pipeline, Hardware Platform, Sensing Server, WiFi-Mat, CHCI) — bounded contexts, aggregates, domain events, and ubiquitous language | -| [Desktop App](rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/README.md) | **WIP** — Tauri v2 desktop app for node management, OTA updates, WASM deployment, and mesh visualization | +| [Desktop App](v2/crates/wifi-densepose-desktop/README.md) | **WIP** — Tauri v2 desktop app for node management, OTA updates, WASM deployment, and mesh visualization | | [Medical Examples](examples/medical/README.md) | Contactless blood pressure, heart rate, breathing rate via 60 GHz mmWave radar — $15 hardware, no wearable | --- @@ -581,24 +581,24 @@ Small programs that run directly on the ESP32 sensor — no internet needed, no | ⚛️ | [**Quantum-Inspired**](docs/edge-modules/autonomous.md) | Uses quantum-inspired math to map room-wide signal coherence and search for optimal sensor configurations | | 🤖 | [**Autonomous & Exotic**](docs/edge-modules/autonomous.md) | Self-managing sensor mesh — auto-heals dropped nodes, plans its own actions, and explores experimental signal representations | -All implemented modules are `no_std` Rust, share a [common utility library](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/vendor_common.rs), and talk to the host through a 12-function API. Full documentation: [**Edge Modules Guide**](docs/edge-modules/README.md). See the [complete implemented module list](#edge-module-list) below. +All implemented modules are `no_std` Rust, share a [common utility library](v2/crates/wifi-densepose-wasm-edge/src/vendor_common.rs), and talk to the host through a 12-function API. Full documentation: [**Edge Modules Guide**](docs/edge-modules/README.md). See the [complete implemented module list](#edge-module-list) below.
🧩 Edge Intelligence — All 65 Modules Implemented (ADR-041 complete) -All 60 modules are implemented, tested (609 tests passing), and ready to deploy. They compile to `wasm32-unknown-unknown`, run on ESP32-S3 via WASM3, and share a [common utility library](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/vendor_common.rs). Source: [`crates/wifi-densepose-wasm-edge/src/`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/) +All 60 modules are implemented, tested (609 tests passing), and ready to deploy. They compile to `wasm32-unknown-unknown`, run on ESP32-S3 via WASM3, and share a [common utility library](v2/crates/wifi-densepose-wasm-edge/src/vendor_common.rs). Source: [`crates/wifi-densepose-wasm-edge/src/`](v2/crates/wifi-densepose-wasm-edge/src/) **Core modules** (ADR-040 flagship + early implementations): | Module | File | What It Does | |--------|------|-------------| -| Gesture Classifier | [`gesture.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/gesture.rs) | DTW template matching for hand gestures | -| Coherence Filter | [`coherence.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/coherence.rs) | Phase coherence gating for signal quality | -| Adversarial Detector | [`adversarial.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/adversarial.rs) | Detects physically impossible signal patterns | -| Intrusion Detector | [`intrusion.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/intrusion.rs) | Human vs non-human motion classification | -| Occupancy Counter | [`occupancy.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/occupancy.rs) | Zone-level person counting | -| Vital Trend | [`vital_trend.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/vital_trend.rs) | Long-term breathing and heart rate trending | -| RVF Parser | [`rvf.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/rvf.rs) | RVF container format parsing | +| Gesture Classifier | [`gesture.rs`](v2/crates/wifi-densepose-wasm-edge/src/gesture.rs) | DTW template matching for hand gestures | +| Coherence Filter | [`coherence.rs`](v2/crates/wifi-densepose-wasm-edge/src/coherence.rs) | Phase coherence gating for signal quality | +| Adversarial Detector | [`adversarial.rs`](v2/crates/wifi-densepose-wasm-edge/src/adversarial.rs) | Detects physically impossible signal patterns | +| Intrusion Detector | [`intrusion.rs`](v2/crates/wifi-densepose-wasm-edge/src/intrusion.rs) | Human vs non-human motion classification | +| Occupancy Counter | [`occupancy.rs`](v2/crates/wifi-densepose-wasm-edge/src/occupancy.rs) | Zone-level person counting | +| Vital Trend | [`vital_trend.rs`](v2/crates/wifi-densepose-wasm-edge/src/vital_trend.rs) | Long-term breathing and heart rate trending | +| RVF Parser | [`rvf.rs`](v2/crates/wifi-densepose-wasm-edge/src/rvf.rs) | RVF container format parsing | **Vendor-integrated modules** (24 modules, ADR-041 Category 7): @@ -606,128 +606,128 @@ All 60 modules are implemented, tested (609 tests passing), and ready to deploy. | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| Flash Attention | [`sig_flash_attention.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_flash_attention.rs) | Tiled attention over 8 subcarrier groups — finds spatial focus regions and entropy | S (<5ms) | -| Coherence Gate | [`sig_coherence_gate.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_coherence_gate.rs) | Z-score phasor gating with hysteresis: Accept / PredictOnly / Reject / Recalibrate | L (<2ms) | -| Temporal Compress | [`sig_temporal_compress.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_temporal_compress.rs) | 3-tier adaptive quantization (8-bit hot / 5-bit warm / 3-bit cold) | L (<2ms) | -| Sparse Recovery | [`sig_sparse_recovery.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_sparse_recovery.rs) | ISTA L1 reconstruction for dropped subcarriers | H (<10ms) | -| Person Match | [`sig_mincut_person_match.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_mincut_person_match.rs) | Hungarian-lite bipartite assignment for multi-person tracking | S (<5ms) | -| Optimal Transport | [`sig_optimal_transport.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_optimal_transport.rs) | Sliced Wasserstein-1 distance with 4 projections | L (<2ms) | +| Flash Attention | [`sig_flash_attention.rs`](v2/crates/wifi-densepose-wasm-edge/src/sig_flash_attention.rs) | Tiled attention over 8 subcarrier groups — finds spatial focus regions and entropy | S (<5ms) | +| Coherence Gate | [`sig_coherence_gate.rs`](v2/crates/wifi-densepose-wasm-edge/src/sig_coherence_gate.rs) | Z-score phasor gating with hysteresis: Accept / PredictOnly / Reject / Recalibrate | L (<2ms) | +| Temporal Compress | [`sig_temporal_compress.rs`](v2/crates/wifi-densepose-wasm-edge/src/sig_temporal_compress.rs) | 3-tier adaptive quantization (8-bit hot / 5-bit warm / 3-bit cold) | L (<2ms) | +| Sparse Recovery | [`sig_sparse_recovery.rs`](v2/crates/wifi-densepose-wasm-edge/src/sig_sparse_recovery.rs) | ISTA L1 reconstruction for dropped subcarriers | H (<10ms) | +| Person Match | [`sig_mincut_person_match.rs`](v2/crates/wifi-densepose-wasm-edge/src/sig_mincut_person_match.rs) | Hungarian-lite bipartite assignment for multi-person tracking | S (<5ms) | +| Optimal Transport | [`sig_optimal_transport.rs`](v2/crates/wifi-densepose-wasm-edge/src/sig_optimal_transport.rs) | Sliced Wasserstein-1 distance with 4 projections | L (<2ms) | **🧠 Adaptive Learning** — On-device learning without cloud connectivity | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| DTW Gesture Learn | [`lrn_dtw_gesture_learn.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_dtw_gesture_learn.rs) | User-teachable gesture recognition — 3-rehearsal protocol, 16 templates | S (<5ms) | -| Anomaly Attractor | [`lrn_anomaly_attractor.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_anomaly_attractor.rs) | 4D dynamical system attractor classification with Lyapunov exponents | H (<10ms) | -| Meta Adapt | [`lrn_meta_adapt.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_meta_adapt.rs) | Hill-climbing self-optimization with safety rollback | L (<2ms) | -| EWC Lifelong | [`lrn_ewc_lifelong.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_ewc_lifelong.rs) | Elastic Weight Consolidation — remembers past tasks while learning new ones | S (<5ms) | +| DTW Gesture Learn | [`lrn_dtw_gesture_learn.rs`](v2/crates/wifi-densepose-wasm-edge/src/lrn_dtw_gesture_learn.rs) | User-teachable gesture recognition — 3-rehearsal protocol, 16 templates | S (<5ms) | +| Anomaly Attractor | [`lrn_anomaly_attractor.rs`](v2/crates/wifi-densepose-wasm-edge/src/lrn_anomaly_attractor.rs) | 4D dynamical system attractor classification with Lyapunov exponents | H (<10ms) | +| Meta Adapt | [`lrn_meta_adapt.rs`](v2/crates/wifi-densepose-wasm-edge/src/lrn_meta_adapt.rs) | Hill-climbing self-optimization with safety rollback | L (<2ms) | +| EWC Lifelong | [`lrn_ewc_lifelong.rs`](v2/crates/wifi-densepose-wasm-edge/src/lrn_ewc_lifelong.rs) | Elastic Weight Consolidation — remembers past tasks while learning new ones | S (<5ms) | **🗺️ Spatial Reasoning** — Location, proximity, and influence mapping | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| PageRank Influence | [`spt_pagerank_influence.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/spt_pagerank_influence.rs) | 4x4 cross-correlation graph with power iteration PageRank | L (<2ms) | -| Micro HNSW | [`spt_micro_hnsw.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/spt_micro_hnsw.rs) | 64-vector navigable small-world graph for nearest-neighbor search | S (<5ms) | -| Spiking Tracker | [`spt_spiking_tracker.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/spt_spiking_tracker.rs) | 32 LIF neurons + 4 output zone neurons with STDP learning | S (<5ms) | +| PageRank Influence | [`spt_pagerank_influence.rs`](v2/crates/wifi-densepose-wasm-edge/src/spt_pagerank_influence.rs) | 4x4 cross-correlation graph with power iteration PageRank | L (<2ms) | +| Micro HNSW | [`spt_micro_hnsw.rs`](v2/crates/wifi-densepose-wasm-edge/src/spt_micro_hnsw.rs) | 64-vector navigable small-world graph for nearest-neighbor search | S (<5ms) | +| Spiking Tracker | [`spt_spiking_tracker.rs`](v2/crates/wifi-densepose-wasm-edge/src/spt_spiking_tracker.rs) | 32 LIF neurons + 4 output zone neurons with STDP learning | S (<5ms) | **⏱️ Temporal Analysis** — Activity patterns, logic verification, autonomous planning | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| Pattern Sequence | [`tmp_pattern_sequence.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/tmp_pattern_sequence.rs) | Activity routine detection and deviation alerts | S (<5ms) | -| Temporal Logic Guard | [`tmp_temporal_logic_guard.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/tmp_temporal_logic_guard.rs) | LTL formula verification on CSI event streams | S (<5ms) | -| GOAP Autonomy | [`tmp_goap_autonomy.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/tmp_goap_autonomy.rs) | Goal-Oriented Action Planning for autonomous module management | S (<5ms) | +| Pattern Sequence | [`tmp_pattern_sequence.rs`](v2/crates/wifi-densepose-wasm-edge/src/tmp_pattern_sequence.rs) | Activity routine detection and deviation alerts | S (<5ms) | +| Temporal Logic Guard | [`tmp_temporal_logic_guard.rs`](v2/crates/wifi-densepose-wasm-edge/src/tmp_temporal_logic_guard.rs) | LTL formula verification on CSI event streams | S (<5ms) | +| GOAP Autonomy | [`tmp_goap_autonomy.rs`](v2/crates/wifi-densepose-wasm-edge/src/tmp_goap_autonomy.rs) | Goal-Oriented Action Planning for autonomous module management | S (<5ms) | **🛡️ AI Security** — Tamper detection and behavioral anomaly profiling | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| Prompt Shield | [`ais_prompt_shield.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ais_prompt_shield.rs) | FNV-1a replay detection, injection detection (10x amplitude), jamming (SNR) | L (<2ms) | -| Behavioral Profiler | [`ais_behavioral_profiler.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ais_behavioral_profiler.rs) | 6D behavioral profile with Mahalanobis anomaly scoring | S (<5ms) | +| Prompt Shield | [`ais_prompt_shield.rs`](v2/crates/wifi-densepose-wasm-edge/src/ais_prompt_shield.rs) | FNV-1a replay detection, injection detection (10x amplitude), jamming (SNR) | L (<2ms) | +| Behavioral Profiler | [`ais_behavioral_profiler.rs`](v2/crates/wifi-densepose-wasm-edge/src/ais_behavioral_profiler.rs) | 6D behavioral profile with Mahalanobis anomaly scoring | S (<5ms) | **⚛️ Quantum-Inspired** — Quantum computing metaphors applied to CSI analysis | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| Quantum Coherence | [`qnt_quantum_coherence.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/qnt_quantum_coherence.rs) | Bloch sphere mapping, Von Neumann entropy, decoherence detection | S (<5ms) | -| Interference Search | [`qnt_interference_search.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/qnt_interference_search.rs) | 16 room-state hypotheses with Grover-inspired oracle + diffusion | S (<5ms) | +| Quantum Coherence | [`qnt_quantum_coherence.rs`](v2/crates/wifi-densepose-wasm-edge/src/qnt_quantum_coherence.rs) | Bloch sphere mapping, Von Neumann entropy, decoherence detection | S (<5ms) | +| Interference Search | [`qnt_interference_search.rs`](v2/crates/wifi-densepose-wasm-edge/src/qnt_interference_search.rs) | 16 room-state hypotheses with Grover-inspired oracle + diffusion | S (<5ms) | **🤖 Autonomous Systems** — Self-governing and self-healing behaviors | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| Psycho-Symbolic | [`aut_psycho_symbolic.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/aut_psycho_symbolic.rs) | 16-rule forward-chaining knowledge base with contradiction detection | S (<5ms) | -| Self-Healing Mesh | [`aut_self_healing_mesh.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/aut_self_healing_mesh.rs) | 8-node mesh with health tracking, degradation/recovery, coverage healing | S (<5ms) | +| Psycho-Symbolic | [`aut_psycho_symbolic.rs`](v2/crates/wifi-densepose-wasm-edge/src/aut_psycho_symbolic.rs) | 16-rule forward-chaining knowledge base with contradiction detection | S (<5ms) | +| Self-Healing Mesh | [`aut_self_healing_mesh.rs`](v2/crates/wifi-densepose-wasm-edge/src/aut_self_healing_mesh.rs) | 8-node mesh with health tracking, degradation/recovery, coverage healing | S (<5ms) | **🔮 Exotic (Vendor)** — Novel mathematical models for CSI interpretation | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| Time Crystal | [`exo_time_crystal.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_time_crystal.rs) | Autocorrelation subharmonic detection in 256-frame history | S (<5ms) | -| Hyperbolic Space | [`exo_hyperbolic_space.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_hyperbolic_space.rs) | Poincare ball embedding with 32 reference locations, hyperbolic distance | S (<5ms) | +| Time Crystal | [`exo_time_crystal.rs`](v2/crates/wifi-densepose-wasm-edge/src/exo_time_crystal.rs) | Autocorrelation subharmonic detection in 256-frame history | S (<5ms) | +| Hyperbolic Space | [`exo_hyperbolic_space.rs`](v2/crates/wifi-densepose-wasm-edge/src/exo_hyperbolic_space.rs) | Poincare ball embedding with 32 reference locations, hyperbolic distance | S (<5ms) | **🏥 Medical & Health** (Category 1) — Contactless health monitoring | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| Sleep Apnea | [`med_sleep_apnea.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_sleep_apnea.rs) | Detects breathing pauses during sleep | S (<5ms) | -| Cardiac Arrhythmia | [`med_cardiac_arrhythmia.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_cardiac_arrhythmia.rs) | Monitors heart rate for irregular rhythms | S (<5ms) | -| Respiratory Distress | [`med_respiratory_distress.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_respiratory_distress.rs) | Alerts on abnormal breathing patterns | S (<5ms) | -| Gait Analysis | [`med_gait_analysis.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_gait_analysis.rs) | Tracks walking patterns and detects changes | S (<5ms) | -| Seizure Detection | [`med_seizure_detect.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_seizure_detect.rs) | 6-state machine for tonic-clonic seizure recognition | S (<5ms) | +| Sleep Apnea | [`med_sleep_apnea.rs`](v2/crates/wifi-densepose-wasm-edge/src/med_sleep_apnea.rs) | Detects breathing pauses during sleep | S (<5ms) | +| Cardiac Arrhythmia | [`med_cardiac_arrhythmia.rs`](v2/crates/wifi-densepose-wasm-edge/src/med_cardiac_arrhythmia.rs) | Monitors heart rate for irregular rhythms | S (<5ms) | +| Respiratory Distress | [`med_respiratory_distress.rs`](v2/crates/wifi-densepose-wasm-edge/src/med_respiratory_distress.rs) | Alerts on abnormal breathing patterns | S (<5ms) | +| Gait Analysis | [`med_gait_analysis.rs`](v2/crates/wifi-densepose-wasm-edge/src/med_gait_analysis.rs) | Tracks walking patterns and detects changes | S (<5ms) | +| Seizure Detection | [`med_seizure_detect.rs`](v2/crates/wifi-densepose-wasm-edge/src/med_seizure_detect.rs) | 6-state machine for tonic-clonic seizure recognition | S (<5ms) | **🔐 Security & Safety** (Category 2) — Perimeter and threat detection | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| Perimeter Breach | [`sec_perimeter_breach.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_perimeter_breach.rs) | Detects boundary crossings with approach/departure | S (<5ms) | -| Weapon Detection | [`sec_weapon_detect.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_weapon_detect.rs) | Metal anomaly detection via CSI amplitude shifts | S (<5ms) | -| Tailgating | [`sec_tailgating.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_tailgating.rs) | Detects unauthorized follow-through at access points | S (<5ms) | -| Loitering | [`sec_loitering.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_loitering.rs) | Alerts when someone lingers too long in a zone | S (<5ms) | -| Panic Motion | [`sec_panic_motion.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_panic_motion.rs) | Detects fleeing, struggling, or panic movement | S (<5ms) | +| Perimeter Breach | [`sec_perimeter_breach.rs`](v2/crates/wifi-densepose-wasm-edge/src/sec_perimeter_breach.rs) | Detects boundary crossings with approach/departure | S (<5ms) | +| Weapon Detection | [`sec_weapon_detect.rs`](v2/crates/wifi-densepose-wasm-edge/src/sec_weapon_detect.rs) | Metal anomaly detection via CSI amplitude shifts | S (<5ms) | +| Tailgating | [`sec_tailgating.rs`](v2/crates/wifi-densepose-wasm-edge/src/sec_tailgating.rs) | Detects unauthorized follow-through at access points | S (<5ms) | +| Loitering | [`sec_loitering.rs`](v2/crates/wifi-densepose-wasm-edge/src/sec_loitering.rs) | Alerts when someone lingers too long in a zone | S (<5ms) | +| Panic Motion | [`sec_panic_motion.rs`](v2/crates/wifi-densepose-wasm-edge/src/sec_panic_motion.rs) | Detects fleeing, struggling, or panic movement | S (<5ms) | **🏢 Smart Building** (Category 3) — Automation and energy efficiency | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| HVAC Presence | [`bld_hvac_presence.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_hvac_presence.rs) | Occupancy-driven HVAC control with departure countdown | S (<5ms) | -| Lighting Zones | [`bld_lighting_zones.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_lighting_zones.rs) | Auto-dim/off lighting based on zone activity | S (<5ms) | -| Elevator Count | [`bld_elevator_count.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_elevator_count.rs) | Counts people entering/leaving with overload warning | S (<5ms) | -| Meeting Room | [`bld_meeting_room.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_meeting_room.rs) | Tracks meeting lifecycle: start, headcount, end, availability | S (<5ms) | -| Energy Audit | [`bld_energy_audit.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_energy_audit.rs) | Tracks after-hours usage and room utilization rates | S (<5ms) | +| HVAC Presence | [`bld_hvac_presence.rs`](v2/crates/wifi-densepose-wasm-edge/src/bld_hvac_presence.rs) | Occupancy-driven HVAC control with departure countdown | S (<5ms) | +| Lighting Zones | [`bld_lighting_zones.rs`](v2/crates/wifi-densepose-wasm-edge/src/bld_lighting_zones.rs) | Auto-dim/off lighting based on zone activity | S (<5ms) | +| Elevator Count | [`bld_elevator_count.rs`](v2/crates/wifi-densepose-wasm-edge/src/bld_elevator_count.rs) | Counts people entering/leaving with overload warning | S (<5ms) | +| Meeting Room | [`bld_meeting_room.rs`](v2/crates/wifi-densepose-wasm-edge/src/bld_meeting_room.rs) | Tracks meeting lifecycle: start, headcount, end, availability | S (<5ms) | +| Energy Audit | [`bld_energy_audit.rs`](v2/crates/wifi-densepose-wasm-edge/src/bld_energy_audit.rs) | Tracks after-hours usage and room utilization rates | S (<5ms) | **🛒 Retail & Hospitality** (Category 4) — Customer insights without cameras | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| Queue Length | [`ret_queue_length.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_queue_length.rs) | Estimates queue size and wait times | S (<5ms) | -| Dwell Heatmap | [`ret_dwell_heatmap.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_dwell_heatmap.rs) | Shows where people spend time (hot/cold zones) | S (<5ms) | -| Customer Flow | [`ret_customer_flow.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_customer_flow.rs) | Counts ins/outs and tracks net occupancy | S (<5ms) | -| Table Turnover | [`ret_table_turnover.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_table_turnover.rs) | Restaurant table lifecycle: seated, dining, vacated | S (<5ms) | -| Shelf Engagement | [`ret_shelf_engagement.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_shelf_engagement.rs) | Detects browsing, considering, and reaching for products | S (<5ms) | +| Queue Length | [`ret_queue_length.rs`](v2/crates/wifi-densepose-wasm-edge/src/ret_queue_length.rs) | Estimates queue size and wait times | S (<5ms) | +| Dwell Heatmap | [`ret_dwell_heatmap.rs`](v2/crates/wifi-densepose-wasm-edge/src/ret_dwell_heatmap.rs) | Shows where people spend time (hot/cold zones) | S (<5ms) | +| Customer Flow | [`ret_customer_flow.rs`](v2/crates/wifi-densepose-wasm-edge/src/ret_customer_flow.rs) | Counts ins/outs and tracks net occupancy | S (<5ms) | +| Table Turnover | [`ret_table_turnover.rs`](v2/crates/wifi-densepose-wasm-edge/src/ret_table_turnover.rs) | Restaurant table lifecycle: seated, dining, vacated | S (<5ms) | +| Shelf Engagement | [`ret_shelf_engagement.rs`](v2/crates/wifi-densepose-wasm-edge/src/ret_shelf_engagement.rs) | Detects browsing, considering, and reaching for products | S (<5ms) | **🏭 Industrial & Specialized** (Category 5) — Safety and compliance | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| Forklift Proximity | [`ind_forklift_proximity.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_forklift_proximity.rs) | Warns when people get too close to vehicles | S (<5ms) | -| Confined Space | [`ind_confined_space.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_confined_space.rs) | OSHA-compliant worker monitoring with extraction alerts | S (<5ms) | -| Clean Room | [`ind_clean_room.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_clean_room.rs) | Occupancy limits and turbulent motion detection | S (<5ms) | -| Livestock Monitor | [`ind_livestock_monitor.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_livestock_monitor.rs) | Animal presence, stillness, and escape alerts | S (<5ms) | -| Structural Vibration | [`ind_structural_vibration.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_structural_vibration.rs) | Seismic events, mechanical resonance, structural drift | S (<5ms) | +| Forklift Proximity | [`ind_forklift_proximity.rs`](v2/crates/wifi-densepose-wasm-edge/src/ind_forklift_proximity.rs) | Warns when people get too close to vehicles | S (<5ms) | +| Confined Space | [`ind_confined_space.rs`](v2/crates/wifi-densepose-wasm-edge/src/ind_confined_space.rs) | OSHA-compliant worker monitoring with extraction alerts | S (<5ms) | +| Clean Room | [`ind_clean_room.rs`](v2/crates/wifi-densepose-wasm-edge/src/ind_clean_room.rs) | Occupancy limits and turbulent motion detection | S (<5ms) | +| Livestock Monitor | [`ind_livestock_monitor.rs`](v2/crates/wifi-densepose-wasm-edge/src/ind_livestock_monitor.rs) | Animal presence, stillness, and escape alerts | S (<5ms) | +| Structural Vibration | [`ind_structural_vibration.rs`](v2/crates/wifi-densepose-wasm-edge/src/ind_structural_vibration.rs) | Seismic events, mechanical resonance, structural drift | S (<5ms) | **🔮 Exotic & Research** (Category 6) — Experimental sensing applications | Module | File | What It Does | Budget | |--------|------|-------------|--------| -| Dream Stage | [`exo_dream_stage.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_dream_stage.rs) | Contactless sleep stage classification (wake/light/deep/REM) | S (<5ms) | -| Emotion Detection | [`exo_emotion_detect.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_emotion_detect.rs) | Arousal, stress, and calm detection from micro-movements | S (<5ms) | -| Gesture Language | [`exo_gesture_language.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_gesture_language.rs) | Sign language letter recognition via WiFi | S (<5ms) | -| Music Conductor | [`exo_music_conductor.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_music_conductor.rs) | Tempo and dynamic tracking from conducting gestures | S (<5ms) | -| Plant Growth | [`exo_plant_growth.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_plant_growth.rs) | Monitors plant growth, circadian rhythms, wilt detection | S (<5ms) | -| Ghost Hunter | [`exo_ghost_hunter.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_ghost_hunter.rs) | Environmental anomaly classification (draft/insect/wind/unknown) | S (<5ms) | -| Rain Detection | [`exo_rain_detect.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_rain_detect.rs) | Detects rain onset, intensity, and cessation via signal scatter | S (<5ms) | -| Breathing Sync | [`exo_breathing_sync.rs`](rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_breathing_sync.rs) | Detects synchronized breathing between multiple people | S (<5ms) | +| Dream Stage | [`exo_dream_stage.rs`](v2/crates/wifi-densepose-wasm-edge/src/exo_dream_stage.rs) | Contactless sleep stage classification (wake/light/deep/REM) | S (<5ms) | +| Emotion Detection | [`exo_emotion_detect.rs`](v2/crates/wifi-densepose-wasm-edge/src/exo_emotion_detect.rs) | Arousal, stress, and calm detection from micro-movements | S (<5ms) | +| Gesture Language | [`exo_gesture_language.rs`](v2/crates/wifi-densepose-wasm-edge/src/exo_gesture_language.rs) | Sign language letter recognition via WiFi | S (<5ms) | +| Music Conductor | [`exo_music_conductor.rs`](v2/crates/wifi-densepose-wasm-edge/src/exo_music_conductor.rs) | Tempo and dynamic tracking from conducting gestures | S (<5ms) | +| Plant Growth | [`exo_plant_growth.rs`](v2/crates/wifi-densepose-wasm-edge/src/exo_plant_growth.rs) | Monitors plant growth, circadian rhythms, wilt detection | S (<5ms) | +| Ghost Hunter | [`exo_ghost_hunter.rs`](v2/crates/wifi-densepose-wasm-edge/src/exo_ghost_hunter.rs) | Environmental anomaly classification (draft/insect/wind/unknown) | S (<5ms) | +| Rain Detection | [`exo_rain_detect.rs`](v2/crates/wifi-densepose-wasm-edge/src/exo_rain_detect.rs) | Detects rain onset, intensity, and cessation via signal scatter | S (<5ms) | +| Breathing Sync | [`exo_breathing_sync.rs`](v2/crates/wifi-densepose-wasm-edge/src/exo_breathing_sync.rs) | Detects synchronized breathing between multiple people | S (<5ms) |
@@ -855,7 +855,7 @@ git clone https://github.com/ruvnet/RuView.git cd RuView # Rust (primary — 810x faster) -cd rust-port/wifi-densepose-rs +cd v2 cargo build --release cargo test --workspace @@ -950,7 +950,7 @@ cargo add wifi-densepose-ruvector # RuVector v2.0.4 integration layer (ADR-017 All crates integrate with [RuVector v2.0.4](https://github.com/ruvnet/ruvector) — see [AI Backbone](#ai-backbone-ruvector) below. -**[rUv Neural](rust-port/wifi-densepose-rs/crates/ruv-neural/)** — A separate 12-crate workspace for brain network topology analysis, neural decoding, and medical sensing. See [rUv Neural](#ruv-neural) in Models & Training. +**[rUv Neural](v2/crates/ruv-neural/)** — A separate 12-crate workspace for brain network topology analysis, neural decoding, and medical sensing. See [rUv Neural](#ruv-neural) in Models & Training. @@ -1050,7 +1050,7 @@ The neural pipeline uses a graph transformer with cross-attention to map CSI fea | [RVF Model Container](#rvf-model-container) | Binary packaging with Ed25519 signing, progressive 3-layer loading, SIMD quantization | [ADR-023](docs/adr/ADR-023-trained-densepose-model-ruvector-pipeline.md) | | [Training & Fine-Tuning](#training--fine-tuning) | 8-phase pure Rust pipeline (7,832 lines), MM-Fi/Wi-Pose pre-training, 6-term composite loss, SONA LoRA | [ADR-023](docs/adr/ADR-023-trained-densepose-model-ruvector-pipeline.md) | | [RuVector Crates](#ruvector-crates) | 11 vendored Rust crates from [ruvector](https://github.com/ruvnet/ruvector): attention, min-cut, solver, GNN, HNSW, temporal compression, sparse inference | [GitHub](https://github.com/ruvnet/ruvector) · [Source](vendor/ruvector/) | -| [rUv Neural](#ruv-neural) | 12-crate brain topology analysis ecosystem: neural decoding, quantum sensor integration, cognitive state classification, BCI output | [README](rust-port/wifi-densepose-rs/crates/ruv-neural/README.md) | +| [rUv Neural](#ruv-neural) | 12-crate brain topology analysis ecosystem: neural decoding, quantum sensor integration, cognitive state classification, BCI output | [README](v2/crates/ruv-neural/README.md) | | [AI Backbone (RuVector)](#ai-backbone-ruvector) | 5 AI capabilities replacing hand-tuned thresholds: attention, graph min-cut, sparse solvers, tiered compression | [crates.io](https://crates.io/crates/wifi-densepose-ruvector) | | [Self-Learning WiFi AI (ADR-024)](#self-learning-wifi-ai-adr-024) | Contrastive self-supervised learning, room fingerprinting, anomaly detection, 55 KB model | [ADR-024](docs/adr/ADR-024-contrastive-csi-embedding-model.md) | | [Cross-Environment Generalization (ADR-027)](docs/adr/ADR-027-cross-environment-domain-generalization.md) | Domain-adversarial training, geometry-conditioned inference, hardware normalization, zero-shot deployment | [ADR-027](docs/adr/ADR-027-cross-environment-domain-generalization.md) | @@ -1168,7 +1168,7 @@ Bundle verify: 7/7 checks PASS **Verify it yourself** (no hardware needed): ```bash # Run all tests -cd rust-port/wifi-densepose-rs && cargo test --workspace --no-default-features +cd v2 && cargo test --workspace --no-default-features # Run the deterministic proof python v1/data/proof/verify.py @@ -1484,7 +1484,7 @@ See [firmware/esp32-csi-node/README.md](firmware/esp32-csi-node/README.md), [ADR | WASM Support | No | Yes | ```bash -cd rust-port/wifi-densepose-rs +cd v2 cargo build --release cargo test --workspace cargo bench --package wifi-densepose-signal @@ -1781,7 +1781,7 @@ The full RuVector ecosystem includes 90+ crates. See [github.com/ruvnet/ruvector
🧠 rUv Neural — Brain topology analysis ecosystem for neural decoding and medical sensing -[**rUv Neural**](rust-port/wifi-densepose-rs/crates/ruv-neural/README.md) is a 12-crate Rust ecosystem that extends RuView's signal processing into brain network topology analysis. It transforms neural magnetic field measurements from quantum sensors (NV diamond magnetometers, optically pumped magnetometers) into dynamic connectivity graphs, using minimum cut algorithms to detect cognitive state transitions in real time. The ecosystem includes crates for signal processing (`ruv-neural-signal`), graph construction (`ruv-neural-graph`), HNSW-indexed pattern memory (`ruv-neural-memory`), graph embeddings (`ruv-neural-embed`), cognitive state decoding (`ruv-neural-decoder`), and ESP32/WASM edge targets. Medical and research applications include early neurological disease detection via topology signatures, brain-computer interfaces, clinical neurofeedback, and non-invasive biomedical sensing -- bridging RuView's RF sensing architecture with the emerging field of quantum biomedical diagnostics. +[**rUv Neural**](v2/crates/ruv-neural/README.md) is a 12-crate Rust ecosystem that extends RuView's signal processing into brain network topology analysis. It transforms neural magnetic field measurements from quantum sensors (NV diamond magnetometers, optically pumped magnetometers) into dynamic connectivity graphs, using minimum cut algorithms to detect cognitive state transitions in real time. The ecosystem includes crates for signal processing (`ruv-neural-signal`), graph construction (`ruv-neural-graph`), HNSW-indexed pattern memory (`ruv-neural-memory`), graph embeddings (`ruv-neural-embed`), cognitive state decoding (`ruv-neural-decoder`), and ESP32/WASM edge targets. Medical and research applications include early neurological disease detection via topology signatures, brain-computer interfaces, clinical neurofeedback, and non-invasive biomedical sensing -- bridging RuView's RF sensing architecture with the emerging field of quantum biomedical diagnostics.
@@ -2154,7 +2154,7 @@ wifi-densepose tasks list # List background tasks ```bash # Rust tests (primary — 542+ tests) -cd rust-port/wifi-densepose-rs +cd v2 cargo test --workspace # Sensing server tests (229 tests) @@ -2258,7 +2258,7 @@ git clone https://github.com/ruvnet/RuView.git cd RuView # Rust development -cd rust-port/wifi-densepose-rs +cd v2 cargo build --release cargo test --workspace diff --git a/docker/Dockerfile.rust b/docker/Dockerfile.rust index 76f7afd96..60fab8f28 100644 --- a/docker/Dockerfile.rust +++ b/docker/Dockerfile.rust @@ -8,8 +8,8 @@ FROM rust:1.85-bookworm AS builder WORKDIR /build # Copy workspace files -COPY rust-port/wifi-densepose-rs/Cargo.toml rust-port/wifi-densepose-rs/Cargo.lock ./ -COPY rust-port/wifi-densepose-rs/crates/ ./crates/ +COPY v2/Cargo.toml v2/Cargo.lock ./ +COPY v2/crates/ ./crates/ # Copy vendored RuVector crates COPY vendor/ruvector/ /build/vendor/ruvector/ diff --git a/docs/WITNESS-LOG-028.md b/docs/WITNESS-LOG-028.md index 78ea16f13..64528fb9b 100644 --- a/docs/WITNESS-LOG-028.md +++ b/docs/WITNESS-LOG-028.md @@ -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 ``` diff --git a/docs/adr/ADR-002-ruvector-rvf-integration-strategy.md b/docs/adr/ADR-002-ruvector-rvf-integration-strategy.md index 7b07fd7b6..5b8f46cd3 100644 --- a/docs/adr/ADR-002-ruvector-rvf-integration-strategy.md +++ b/docs/adr/ADR-002-ruvector-rvf-integration-strategy.md @@ -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) diff --git a/docs/adr/ADR-017-ruvector-signal-mat-integration.md b/docs/adr/ADR-017-ruvector-signal-mat-integration.md index 810c02f88..e4f6ff7e4 100644 --- a/docs/adr/ADR-017-ruvector-signal-mat-integration.md +++ b/docs/adr/ADR-017-ruvector-signal-mat-integration.md @@ -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 diff --git a/docs/adr/ADR-019-sensing-only-ui-mode.md b/docs/adr/ADR-019-sensing-only-ui-mode.md index 3a102ab02..df782846a 100644 --- a/docs/adr/ADR-019-sensing-only-ui-mode.md +++ b/docs/adr/ADR-019-sensing-only-ui-mode.md @@ -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. diff --git a/docs/adr/ADR-020-rust-ruvector-ai-model-migration.md b/docs/adr/ADR-020-rust-ruvector-ai-model-migration.md index e954b1839..6485b45a4 100644 --- a/docs/adr/ADR-020-rust-ruvector-ai-model-migration.md +++ b/docs/adr/ADR-020-rust-ruvector-ai-model-migration.md @@ -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 diff --git a/docs/adr/ADR-021-vital-sign-detection-rvdna-pipeline.md b/docs/adr/ADR-021-vital-sign-detection-rvdna-pipeline.md index 378479580..c93e9ac93 100644 --- a/docs/adr/ADR-021-vital-sign-detection-rvdna-pipeline.md +++ b/docs/adr/ADR-021-vital-sign-detection-rvdna-pipeline.md @@ -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 diff --git a/docs/adr/ADR-022-windows-wifi-enhanced-fidelity-ruvector.md b/docs/adr/ADR-022-windows-wifi-enhanced-fidelity-ruvector.md index 3196db96a..22e47b50e 100644 --- a/docs/adr/ADR-022-windows-wifi-enhanced-fidelity-ruvector.md +++ b/docs/adr/ADR-022-windows-wifi-enhanced-fidelity-ruvector.md @@ -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 diff --git a/docs/adr/ADR-023-trained-densepose-model-ruvector-pipeline.md b/docs/adr/ADR-023-trained-densepose-model-ruvector-pipeline.md index b648df1e4..cbe90cd92 100644 --- a/docs/adr/ADR-023-trained-densepose-model-ruvector-pipeline.md +++ b/docs/adr/ADR-023-trained-densepose-model-ruvector-pipeline.md @@ -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 diff --git a/docs/adr/ADR-024-contrastive-csi-embedding-model.md b/docs/adr/ADR-024-contrastive-csi-embedding-model.md index a7c9b4712..5babe28f3 100644 --- a/docs/adr/ADR-024-contrastive-csi-embedding-model.md +++ b/docs/adr/ADR-024-contrastive-csi-embedding-model.md @@ -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) diff --git a/docs/adr/ADR-025-macos-corewlan-wifi-sensing.md b/docs/adr/ADR-025-macos-corewlan-wifi-sensing.md index 491ecea68..ba0c885a3 100644 --- a/docs/adr/ADR-025-macos-corewlan-wifi-sensing.md +++ b/docs/adr/ADR-025-macos-corewlan-wifi-sensing.md @@ -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: diff --git a/docs/adr/ADR-036-rvf-training-pipeline-ui.md b/docs/adr/ADR-036-rvf-training-pipeline-ui.md index 467c64968..774d56eee 100644 --- a/docs/adr/ADR-036-rvf-training-pipeline-ui.md +++ b/docs/adr/ADR-036-rvf-training-pipeline-ui.md @@ -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 diff --git a/docs/adr/ADR-039-esp32-edge-intelligence.md b/docs/adr/ADR-039-esp32-edge-intelligence.md index f1862ad8a..f1250bd56 100644 --- a/docs/adr/ADR-039-esp32-edge-intelligence.md +++ b/docs/adr/ADR-039-esp32-edge-intelligence.md @@ -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) diff --git a/docs/adr/ADR-040-wasm-programmable-sensing.md b/docs/adr/ADR-040-wasm-programmable-sensing.md index 351cb36f0..6309cc54e 100644 --- a/docs/adr/ADR-040-wasm-programmable-sensing.md +++ b/docs/adr/ADR-040-wasm-programmable-sensing.md @@ -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 --- diff --git a/docs/adr/ADR-043-sensing-server-ui-api-completion.md b/docs/adr/ADR-043-sensing-server-ui-api-completion.md index 7bb93d251..9d25c8b55 100644 --- a/docs/adr/ADR-043-sensing-server-ui-api-completion.md +++ b/docs/adr/ADR-043-sensing-server-ui-api-completion.md @@ -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 ``` diff --git a/docs/adr/ADR-052-tauri-desktop-frontend.md b/docs/adr/ADR-052-tauri-desktop-frontend.md index d8ee87279..085bae630 100644 --- a/docs/adr/ADR-052-tauri-desktop-frontend.md +++ b/docs/adr/ADR-052-tauri-desktop-frontend.md @@ -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 diff --git a/docs/adr/ADR-058-ruvector-wasm-browser-pose-example.md b/docs/adr/ADR-058-ruvector-wasm-browser-pose-example.md index 1e25c81da..a3be40d72 100644 --- a/docs/adr/ADR-058-ruvector-wasm-browser-pose-example.md +++ b/docs/adr/ADR-058-ruvector-wasm-browser-pose-example.md @@ -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) diff --git a/docs/adr/ADR-075-mincut-person-separation.md b/docs/adr/ADR-075-mincut-person-separation.md index 2166d16d8..098dfaced 100644 --- a/docs/adr/ADR-075-mincut-person-separation.md +++ b/docs/adr/ADR-075-mincut-person-separation.md @@ -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 diff --git a/docs/adr/ADR-081-adaptive-csi-mesh-firmware-kernel.md b/docs/adr/ADR-081-adaptive-csi-mesh-firmware-kernel.md index 3b3afda10..f079a6159 100644 --- a/docs/adr/ADR-081-adaptive-csi-mesh-firmware-kernel.md +++ b/docs/adr/ADR-081-adaptive-csi-mesh-firmware-kernel.md @@ -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, diff --git a/docs/build-guide.md b/docs/build-guide.md index 679c958ec..023d636ac 100644 --- a/docs/build-guide.md +++ b/docs/build-guide.md @@ -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) | diff --git a/docs/ddd/hardware-platform-domain-model.md b/docs/ddd/hardware-platform-domain-model.md index def793a91..732e0ac43 100644 --- a/docs/ddd/hardware-platform-domain-model.md +++ b/docs/ddd/hardware-platform-domain-model.md @@ -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/`. --- diff --git a/docs/ddd/ruvsense-domain-model.md b/docs/ddd/ruvsense-domain-model.md index e56710e5f..ab9bd0c36 100644 --- a/docs/ddd/ruvsense-domain-model.md +++ b/docs/ddd/ruvsense-domain-model.md @@ -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. --- diff --git a/docs/ddd/sensing-server-domain-model.md b/docs/ddd/sensing-server-domain-model.md index 18d026900..9b52a4082 100644 --- a/docs/ddd/sensing-server-domain-model.md +++ b/docs/ddd/sensing-server-domain-model.md @@ -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. --- diff --git a/docs/ddd/training-pipeline-domain-model.md b/docs/ddd/training-pipeline-domain-model.md index 57a4aef47..91294dbd3 100644 --- a/docs/ddd/training-pipeline-domain-model.md +++ b/docs/ddd/training-pipeline-domain-model.md @@ -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. --- diff --git a/docs/edge-modules/README.md b/docs/edge-modules/README.md index 834d42e86..1a6a6e1d5 100644 --- a/docs/edge-modules/README.md +++ b/docs/edge-modules/README.md @@ -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/) diff --git a/docs/edge-modules/core.md b/docs/edge-modules/core.md index 313746890..bcaaabae9 100644 --- a/docs/edge-modules/core.md +++ b/docs/edge-modules/core.md @@ -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 ``` diff --git a/docs/edge-modules/medical.md b/docs/edge-modules/medical.md index f88ae686d..efc6460c8 100644 --- a/docs/edge-modules/medical.md +++ b/docs/edge-modules/medical.md @@ -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_ ``` diff --git a/docs/edge-modules/security.md b/docs/edge-modules/security.md index 2201b64c1..78b118a7f 100644 --- a/docs/edge-modules/security.md +++ b/docs/edge-modules/security.md @@ -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 ``` diff --git a/docs/qe-reports/02-security-review.md b/docs/qe-reports/02-security-review.md index dc30348f4..ff2b7819c 100644 --- a/docs/qe-reports/02-security-review.md +++ b/docs/qe-reports/02-security-review.md @@ -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) diff --git a/docs/qe-reports/03-performance-analysis.md b/docs/qe-reports/03-performance-analysis.md index 31a86e201..9f326c50f 100644 --- a/docs/qe-reports/03-performance-analysis.md +++ b/docs/qe-reports/03-performance-analysis.md @@ -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, (&, &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 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>`) 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> { ### 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 { ### 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` diff --git a/docs/qe-reports/04-test-analysis.md b/docs/qe-reports/04-test-analysis.md index a931152eb..a0448d965 100644 --- a/docs/qe-reports/04-test-analysis.md +++ b/docs/qe-reports/04-test-analysis.md @@ -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) diff --git a/docs/research/rf-topological-sensing/10-system-architecture-prototype.md b/docs/research/rf-topological-sensing/10-system-architecture-prototype.md index 02196f56c..256b166b4 100644 --- a/docs/research/rf-topological-sensing/10-system-architecture-prototype.md +++ b/docs/research/rf-topological-sensing/10-system-architecture-prototype.md @@ -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 diff --git a/docs/security-audit-wasm-edge-vendor.md b/docs/security-audit-wasm-edge-vendor.md index cf9bcac1a..477adffad 100644 --- a/docs/security-audit-wasm-edge-vendor.md +++ b/docs/security-audit-wasm-edge-vendor.md @@ -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) diff --git a/docs/tutorials/cognitum-seed-pretraining.md b/docs/tutorials/cognitum-seed-pretraining.md index cc905d9ec..3d61fc955 100644 --- a/docs/tutorials/cognitum-seed-pretraining.md +++ b/docs/tutorials/cognitum-seed-pretraining.md @@ -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 \ diff --git a/docs/user-guide.md b/docs/user-guide.md index c5bf2a55c..cb19427c9 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -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. diff --git a/docs/wifi-mat-user-guide.md b/docs/wifi-mat-user-guide.md index 22fdb711d..0196c5af5 100644 --- a/docs/wifi-mat-user-guide.md +++ b/docs/wifi-mat-user-guide.md @@ -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 diff --git a/examples/happiness-vector/README.md b/examples/happiness-vector/README.md index 61a20bf5a..9b51117c2 100644 --- a/examples/happiness-vector/README.md +++ b/examples/happiness-vector/README.md @@ -159,7 +159,7 @@ The happiness scoring algorithm also exists as a WASM module for on-device execu ```bash # Build the happiness scorer WASM -cd rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge +cd v2/crates/wifi-densepose-wasm-edge cargo build --bin ghost_hunter --target wasm32-unknown-unknown --release --no-default-features # Output: target/wasm32-unknown-unknown/release/ghost_hunter.wasm (5.7 KB) @@ -201,6 +201,6 @@ This system is designed to be privacy-preserving by construction: - [ADR-065](../../docs/adr/ADR-065-happiness-scoring-seed-bridge.md) — Happiness scoring pipeline architecture - [ADR-066](../../docs/adr/ADR-066-esp32-swarm-seed-coordinator.md) — ESP32 swarm with Seed coordinator -- [exo_happiness_score.rs](../../rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_happiness_score.rs) — WASM edge module (Rust) +- [exo_happiness_score.rs](../../v2/crates/wifi-densepose-wasm-edge/src/exo_happiness_score.rs) — WASM edge module (Rust) - [swarm_bridge.c](../../firmware/esp32-csi-node/main/swarm_bridge.c) — ESP32 firmware swarm bridge - [ruview_live.py](../ruview_live.py) — RuView Live dashboard with `--mode happiness` diff --git a/install.sh b/install.sh index ee2a84d79..86abeb49a 100755 --- a/install.sh +++ b/install.sh @@ -25,7 +25,7 @@ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -RUST_DIR="${SCRIPT_DIR}/rust-port/wifi-densepose-rs" +RUST_DIR="${SCRIPT_DIR}/v2" # ─── Colors ─────────────────────────────────────────────────────────── if [ -t 1 ]; then @@ -955,7 +955,7 @@ post_install() { ;; rust) echo " # Run benchmarks:" - echo " cd rust-port/wifi-densepose-rs" + echo " cd v2" echo " cargo bench --package wifi-densepose-signal" echo "" echo " # Start Rust API server:" @@ -963,7 +963,7 @@ post_install() { ;; browser) echo " # WASM package is at:" - echo " # rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm/pkg/" + echo " # v2/crates/wifi-densepose-wasm/pkg/" echo "" echo " # Open the 3D visualization:" echo " python3 -m http.server 3000 --directory ui" @@ -999,17 +999,17 @@ post_install() { echo " # WiFi-Mat disaster response module built." echo "" echo " # Run WiFi-Mat tests:" - echo " cd rust-port/wifi-densepose-rs" + echo " cd v2" echo " cargo test --package wifi-densepose-mat" echo "" echo " # Field deployment WASM package at:" - echo " # rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm/pkg/" + echo " # v2/crates/wifi-densepose-wasm/pkg/" ;; full) echo " # Verification: ./verify" echo " # Python API: uvicorn v1.src.api.main:app --host 0.0.0.0 --port 8000" - echo " # Rust API: cd rust-port/wifi-densepose-rs && cargo run --release --package wifi-densepose-api" - echo " # Benchmarks: cd rust-port/wifi-densepose-rs && cargo bench" + echo " # Rust API: cd v2 && cargo run --release --package wifi-densepose-api" + echo " # Benchmarks: cd v2 && cargo bench" echo " # Visualization: python3 -m http.server 3000 --directory ui" echo " # Docker: docker compose up" ;; diff --git a/rust-port/wifi-densepose-rs/.claude-flow/daemon.pid b/rust-port/wifi-densepose-rs/.claude-flow/daemon.pid deleted file mode 100644 index 011bae983..000000000 --- a/rust-port/wifi-densepose-rs/.claude-flow/daemon.pid +++ /dev/null @@ -1 +0,0 @@ -26601 \ No newline at end of file diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/data/pending-insights.jsonl b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/data/pending-insights.jsonl deleted file mode 100644 index 9303ab12d..000000000 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/data/pending-insights.jsonl +++ /dev/null @@ -1,42 +0,0 @@ -{"type":"edit","file":"unknown","timestamp":1773100520674,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100630628,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100635269,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100648222,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100660593,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100670480,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100765961,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100793408,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100801110,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100806887,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100820942,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100857691,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100894224,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773100911798,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773101430507,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773101470221,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773101478246,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773103575668,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773103693989,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773115108388,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773115362485,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773115372676,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773115388605,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773115394377,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773115415015,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773115600459,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773146102258,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773146113449,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773146119695,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773146128174,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773146133721,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773146150082,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773146337071,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773150581963,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773150596765,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773152997925,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773153073387,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773153109436,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773153121443,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773153290476,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773153290781,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773153291056,"sessionId":null} diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/sessions/current.json b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/sessions/current.json deleted file mode 100644 index ffc31e74b..000000000 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/sessions/current.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "id": "session-1773150558480", - "startedAt": "2026-03-10T13:49:18.480Z", - "cwd": "/Users/cohen/GitHub/ruvnet/RuView/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop", - "context": {}, - "metrics": { - "edits": 9, - "commands": 0, - "tasks": 0, - "errors": 0 - } -} \ No newline at end of file diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/sessions/session-1773100562538.json b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/sessions/session-1773100562538.json deleted file mode 100644 index 4f7e48925..000000000 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/sessions/session-1773100562538.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "id": "session-1773100562538", - "startedAt": "2026-03-09T23:56:02.538Z", - "cwd": "/Users/cohen/GitHub/ruvnet/RuView/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop", - "context": {}, - "metrics": { - "edits": 13, - "commands": 0, - "tasks": 0, - "errors": 0 - }, - "endedAt": "2026-03-10T00:07:15.557Z", - "duration": 673020 -} \ No newline at end of file diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/sessions/session-1773101285009.json b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/sessions/session-1773101285009.json deleted file mode 100644 index 91340013c..000000000 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/sessions/session-1773101285009.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "id": "session-1773101285009", - "startedAt": "2026-03-10T00:08:05.009Z", - "cwd": "/Users/cohen/GitHub/ruvnet/RuView/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop", - "context": {}, - "metrics": { - "edits": 19, - "commands": 0, - "tasks": 0, - "errors": 0 - }, - "endedAt": "2026-03-10T13:48:30.150Z", - "duration": 49225141 -} \ No newline at end of file diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/data/pending-insights.jsonl b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/data/pending-insights.jsonl deleted file mode 100644 index 78d638297..000000000 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/data/pending-insights.jsonl +++ /dev/null @@ -1,28 +0,0 @@ -{"type":"edit","file":"unknown","timestamp":1772835768740,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1772835786050,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1772835802335,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1772835865846,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1772835875824,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1772835892636,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1772835909237,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1772835921184,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1772835930809,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1772835942468,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1772835952451,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773070971487,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773070977376,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773101503481,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773107530083,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773107530201,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773107530319,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773114830434,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773114834713,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773114838852,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773150617007,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773150621430,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773150628006,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773150640909,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773150672276,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773150677219,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773150683839,"sessionId":null} -{"type":"edit","file":"unknown","timestamp":1773150688912,"sessionId":null} diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/sessions/current.json b/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/sessions/current.json deleted file mode 100644 index 62c0b109a..000000000 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/sessions/current.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "id": "session-1773103750755", - "startedAt": "2026-03-10T00:49:10.755Z", - "cwd": "/Users/cohen/GitHub/ruvnet/RuView/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui", - "context": {}, - "metrics": { - "edits": 14, - "commands": 0, - "tasks": 0, - "errors": 0 - } -} \ No newline at end of file diff --git a/rust-port/wifi-densepose-rs/data/models/trained-pretrain-20260302_173607.rvf b/rust-port/wifi-densepose-rs/data/models/trained-pretrain-20260302_173607.rvf deleted file mode 100644 index 09fbbfd42ea4d74c098cd2b74c5030f46c4bcef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141184 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

?jo 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

)42*iF18H|fP<7P?iXB|xucZkDxSPPRd0&WL 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

tv6;q9EAtx~(le2sHi}~dCoMo?wYT&}q761W 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


av9#FkKmk>f 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�=ML%VS!#LQz}6@Uy%U$Nc#)O91~L8 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
EPunLXiK>r5l^hLW)1kPiO0jq_r0Ih>T} zQ|#Pi4nHq==&#X!HsJCKJ80qB&5M`RCvGKQK*sqcc+HVzaLTYB zsQ)^O=h$dM+c}v`74#s-UzCC~Cu*?$Z5rOz&EoHG(IhHH^<-icz<-k{!-y&!t<3N^~wj_9&G@3y&I`Bt+68?ZeIsqsq?tr%M)gK zHt?%*l}TaO1h}G84{HoABL4EbLAYiozBXtIbIj{+{F-J#{1TsnkHS4zfeUI?anS|Z zy%NN7&NTR>tBr|XJBQ>Ao&gua7#z5pg6|YU`6vErk#whTV5l|#*IxH08$`1}i)kyC z-){x;>lX0t&g3-L<_;jYCKa=5{NUP4#z14MIB61}3jgeR%CsDxLyFtZ0?&(e_;)je z-56mFv*3+G-b{O`Bl&siCXm^B5>FPH3sVjb z^1rH2A!l`D;HJw{ao8_E5}%$8@(w-1jmg%~fLFm=@W6;n8t(zKwr#}z!liK6WLxk= zM3iijQiJy_OPGo2E+kpu3P_47$6~Us@Z^gDNY0h%Qk1qP| zq*QQ~Gl2ME*Y>e(r$_MP)=p#Q*!fWB>j9(#O5CLHW4q z|4eag>ccDlv;9BM65PgSomI=%CB{W1>F_q|L@rNS7q&cMO;oH7&(hZ9|Be%);&pfy zW)|Fdby)QBh;_+{%ei;kIyn62g>{J$ajSKB4i^6zq(rRL;aPE;>*7{%Q$?&w(BbJ= zSy_xihh}cW|_{aj>_t-TJ@wjEzX*&RZubHp0r5JIeoh Y*xOp!{J)`9bVRg;gN4r4|MM~Y7lqia$p8QV diff --git a/rust-port/wifi-densepose-rs/data/models/trained-supervised-20260302_165735.rvf b/rust-port/wifi-densepose-rs/data/models/trained-supervised-20260302_165735.rvf deleted file mode 100644 index 922fbdc0f5a568ca26a78e7aacf391b3faa48eb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12096 zcmb7q1yEL9_b(W0k? z-t&In`+fhpcjnIAduG<`wPWSpXYaMwInn-cQIdlt{`*|}2V1X}KWE#p@5A_(yZ(v zee=rv;_9NmWms^uIi(fF{}RQ|&&jvW`kSnbBeSmH<#4_KqDafn;@DPIr017pXIcLb zKkL7>vvshwPqTA&a&d6t#`Cf(D*vs8t&M|?t)b{Yw*9}B(SQ3-T0%ndAA;HclvY0f zyZ>lOQ^^0x(~)Zs{9Dibl3YVKfni2=WmOtyPiCH>o1LxIzw4!im4t4U%Pjo6*TL4=&eql5VYGvz<7iuZTW2f7fAQf+|7P@G7aF=%Ra9qN z8CKPnWphsYALkf~{=aSi+n#^f&lx}9ALG_o{TrFwQt-d6pC4Km9{n@qzlHukSc%Fc zw|td>?u%CVx+kbia__v;q&HZfJOLtY3fgbKvsvZemKH2e={>w<^ThgLrj*=5k_d*!c4b4 z&P;P_W$JuSG2_D8n9&LCj8w)s=1k!QhF^V&(PpnO&C{HRUC5PT&G^1}g z-TtFS>H{?>LQ0dwvRbrGL7R>#>d<8sUAjJe1YOe5qhs3ow0?vEu?B_|X>3I5X2x{G z!h|MSnUcjQGitLlrx-^Iy5~HSqDNcONp~wUB5M+O+R!=gQ6%eUOB7&7c|rCxHN=6I zg*sAWxDzdpbf)RiE>sxnN?!4!Ng>gVE+n~=AlZWqQW-ju#*w9i&SrR$dzKfi%l4+< zIX)Da=Sws4{peVMKRquDp#Gvjk}U}$nbKhDEe)a0vN5#3Je1gqFmkU9r+1YRG^;9- zMpQ@9y6R}s;>FNpUMxN4#gR2Xo{IPh)W}byR(=xQ=8vTZ{A9YxPoWlmD%JDTD3d>q z4EX7Eg_l7kyiEF2okbI>v*}w^4kc9O()P+c`dpDuW)%e#R$fTiWkpn6T1?p`B@|X% zN@hi6^r@hnHs@DRR9+>$ v7>}u-D#IXV@PZSbAUPL9a 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 B{p&1 | tail -5 @@ -325,7 +325,7 @@ set -euo pipefail source \$HOME/.cargo/env export LIBTORCH=\$(python3 -c \"import torch; print(torch.__path__[0] + '/lib')\") export LD_LIBRARY_PATH=\"\${LIBTORCH}:\${LD_LIBRARY_PATH:-}\" -cd ~/wifi-densepose/rust-port/wifi-densepose-rs +cd ~/wifi-densepose/v2 # Set auto-shutdown timer (safety net) sudo shutdown -P +$((MAX_HOURS * 60)) & @@ -408,7 +408,7 @@ mkdir -p "$LOCAL_RESULTS" # Package results on the VM gcloud compute ssh "$INSTANCE_NAME" --zone="$ZONE" --command=" -cd ~/wifi-densepose/rust-port/wifi-densepose-rs +cd ~/wifi-densepose/v2 tar czf ~/training-artifacts.tar.gz \ checkpoints/ \ logs/ \ diff --git a/scripts/generate-witness-bundle.sh b/scripts/generate-witness-bundle.sh index 915fd5bfc..97a9e55f8 100644 --- a/scripts/generate-witness-bundle.sh +++ b/scripts/generate-witness-bundle.sh @@ -60,7 +60,7 @@ with open('$BUNDLE_DIR/proof/reference_signal_metadata.json', 'w') as f: # --------------------------------------------------------------- echo "[3/7] Running Rust test suite..." mkdir -p "$BUNDLE_DIR/test-results" -cd "$REPO_ROOT/rust-port/wifi-densepose-rs" +cd "$REPO_ROOT/v2" cargo test --workspace --no-default-features 2>&1 | tee "$BUNDLE_DIR/test-results/rust-workspace-tests.log" | tail -5 # Extract summary grep "^test result" "$BUNDLE_DIR/test-results/rust-workspace-tests.log" | \ @@ -98,7 +98,7 @@ fi # --------------------------------------------------------------- echo "[6/7] Generating crate manifest..." mkdir -p "$BUNDLE_DIR/crate-manifest" -for crate_dir in "$REPO_ROOT/rust-port/wifi-densepose-rs/crates/"*/; do +for crate_dir in "$REPO_ROOT/v2/crates/"*/; do crate_name="$(basename "$crate_dir")" if [ -f "$crate_dir/Cargo.toml" ]; then version=$(grep '^version' "$crate_dir/Cargo.toml" | head -1 | sed 's/.*"\(.*\)".*/\1/') diff --git a/scripts/qemu-mesh-test.sh b/scripts/qemu-mesh-test.sh index 7dc25fc75..ff5285c80 100644 --- a/scripts/qemu-mesh-test.sh +++ b/scripts/qemu-mesh-test.sh @@ -82,7 +82,7 @@ PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" FIRMWARE_DIR="$PROJECT_ROOT/firmware/esp32-csi-node" BUILD_DIR="$FIRMWARE_DIR/build" -RUST_DIR="$PROJECT_ROOT/rust-port/wifi-densepose-rs" +RUST_DIR="$PROJECT_ROOT/v2" PROVISION_SCRIPT="$FIRMWARE_DIR/provision.py" VALIDATE_SCRIPT="$SCRIPT_DIR/validate_mesh_test.py" diff --git a/scripts/qemu_swarm.py b/scripts/qemu_swarm.py index 3b1b0f0ac..e5cf97c6c 100644 --- a/scripts/qemu_swarm.py +++ b/scripts/qemu_swarm.py @@ -46,7 +46,7 @@ SCRIPT_DIR = Path(__file__).resolve().parent PROJECT_ROOT = SCRIPT_DIR.parent FIRMWARE_DIR = PROJECT_ROOT / "firmware" / "esp32-csi-node" -RUST_DIR = PROJECT_ROOT / "rust-port" / "wifi-densepose-rs" +RUST_DIR = PROJECT_ROOT / "v2" / "wifi-densepose-rs" PROVISION_SCRIPT = FIRMWARE_DIR / "provision.py" PRESETS_DIR = SCRIPT_DIR / "swarm_presets" diff --git a/ui/README.md b/ui/README.md index e337ad5a0..75fcd803a 100644 --- a/ui/README.md +++ b/ui/README.md @@ -125,7 +125,7 @@ Open http://localhost:3000/ui/index.html ### With local Rust binary ```bash -cd rust-port/wifi-densepose-rs +cd v2 cargo build -p wifi-densepose-sensing-server --no-default-features # Run with simulated data diff --git a/v1/README.md b/v1/README.md index 659b61e08..15e7f6856 100644 --- a/v1/README.md +++ b/v1/README.md @@ -51,4 +51,4 @@ pytest tests/ ## Note -This is the legacy Python implementation. For the new Rust implementation with improved performance, see `/rust-port/wifi-densepose-rs/`. +This is the legacy Python implementation. For the new Rust implementation with improved performance, see `/v2/`. diff --git a/rust-port/wifi-densepose-rs/.claude-flow/.trend-cache.json b/v2/.claude-flow/.trend-cache.json similarity index 100% rename from rust-port/wifi-densepose-rs/.claude-flow/.trend-cache.json rename to v2/.claude-flow/.trend-cache.json diff --git a/rust-port/wifi-densepose-rs/.claude-flow/daemon-state.json b/v2/.claude-flow/daemon-state.json similarity index 94% rename from rust-port/wifi-densepose-rs/.claude-flow/daemon-state.json rename to v2/.claude-flow/daemon-state.json index 97603ae59..23412a9f3 100644 --- a/rust-port/wifi-densepose-rs/.claude-flow/daemon-state.json +++ b/v2/.claude-flow/daemon-state.json @@ -64,8 +64,8 @@ }, "config": { "autoStart": false, - "logDir": "/home/user/wifi-densepose/rust-port/wifi-densepose-rs/.claude-flow/logs", - "stateFile": "/home/user/wifi-densepose/rust-port/wifi-densepose-rs/.claude-flow/daemon-state.json", + "logDir": "/home/user/wifi-densepose/v2/.claude-flow/logs", + "stateFile": "/home/user/wifi-densepose/v2/.claude-flow/daemon-state.json", "maxConcurrent": 2, "workerTimeoutMs": 300000, "resourceThresholds": { diff --git a/rust-port/wifi-densepose-rs/.claude-flow/metrics/codebase-map.json b/v2/.claude-flow/metrics/codebase-map.json similarity index 73% rename from rust-port/wifi-densepose-rs/.claude-flow/metrics/codebase-map.json rename to v2/.claude-flow/metrics/codebase-map.json index 38a97f71d..98a224ec5 100644 --- a/rust-port/wifi-densepose-rs/.claude-flow/metrics/codebase-map.json +++ b/v2/.claude-flow/metrics/codebase-map.json @@ -1,6 +1,6 @@ { "timestamp": "2026-02-28T14:40:51.151Z", - "projectRoot": "/home/user/wifi-densepose/rust-port/wifi-densepose-rs", + "projectRoot": "/home/user/wifi-densepose/v2", "structure": { "hasPackageJson": false, "hasTsConfig": false, diff --git a/rust-port/wifi-densepose-rs/.claude-flow/metrics/consolidation.json b/v2/.claude-flow/metrics/consolidation.json similarity index 100% rename from rust-port/wifi-densepose-rs/.claude-flow/metrics/consolidation.json rename to v2/.claude-flow/metrics/consolidation.json diff --git a/rust-port/wifi-densepose-rs/Cargo.lock b/v2/Cargo.lock similarity index 100% rename from rust-port/wifi-densepose-rs/Cargo.lock rename to v2/Cargo.lock diff --git a/rust-port/wifi-densepose-rs/Cargo.toml b/v2/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/Cargo.toml rename to v2/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/README.md b/v2/crates/README.md similarity index 99% rename from rust-port/wifi-densepose-rs/crates/README.md rename to v2/crates/README.md index 0bc3fa028..6c87997ee 100644 --- a/rust-port/wifi-densepose-rs/crates/README.md +++ b/v2/crates/README.md @@ -213,7 +213,7 @@ cargo run -p wifi-densepose-train --features tch-backend --bin verify-training ```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 # Check workspace (no GPU dependencies) cargo check --workspace --no-default-features diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/.gitignore b/v2/crates/ruv-neural/.gitignore similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/.gitignore rename to v2/crates/ruv-neural/.gitignore diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/Cargo.toml b/v2/crates/ruv-neural/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/Cargo.toml rename to v2/crates/ruv-neural/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/README.md b/v2/crates/ruv-neural/README.md similarity index 99% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/README.md rename to v2/crates/ruv-neural/README.md index fadff7426..09c1c9284 100644 --- a/rust-port/wifi-densepose-rs/crates/ruv-neural/README.md +++ b/v2/crates/ruv-neural/README.md @@ -214,7 +214,7 @@ All crates are published on [crates.io](https://crates.io/search?q=ruv-neural): ### Build ```bash -cd rust-port/wifi-densepose-rs/crates/ruv-neural +cd v2/crates/ruv-neural cargo build --workspace cargo test --workspace ``` diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/SECURITY_REVIEW.md b/v2/crates/ruv-neural/SECURITY_REVIEW.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/SECURITY_REVIEW.md rename to v2/crates/ruv-neural/SECURITY_REVIEW.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/Cargo.toml b/v2/crates/ruv-neural/ruv-neural-cli/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/Cargo.toml rename to v2/crates/ruv-neural/ruv-neural-cli/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/README.md b/v2/crates/ruv-neural/ruv-neural-cli/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/README.md rename to v2/crates/ruv-neural/ruv-neural-cli/README.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/analyze.rs b/v2/crates/ruv-neural/ruv-neural-cli/src/commands/analyze.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/analyze.rs rename to v2/crates/ruv-neural/ruv-neural-cli/src/commands/analyze.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/export.rs b/v2/crates/ruv-neural/ruv-neural-cli/src/commands/export.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/export.rs rename to v2/crates/ruv-neural/ruv-neural-cli/src/commands/export.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/info.rs b/v2/crates/ruv-neural/ruv-neural-cli/src/commands/info.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/info.rs rename to v2/crates/ruv-neural/ruv-neural-cli/src/commands/info.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/mincut.rs b/v2/crates/ruv-neural/ruv-neural-cli/src/commands/mincut.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/mincut.rs rename to v2/crates/ruv-neural/ruv-neural-cli/src/commands/mincut.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/mod.rs b/v2/crates/ruv-neural/ruv-neural-cli/src/commands/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/mod.rs rename to v2/crates/ruv-neural/ruv-neural-cli/src/commands/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/pipeline.rs b/v2/crates/ruv-neural/ruv-neural-cli/src/commands/pipeline.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/pipeline.rs rename to v2/crates/ruv-neural/ruv-neural-cli/src/commands/pipeline.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/simulate.rs b/v2/crates/ruv-neural/ruv-neural-cli/src/commands/simulate.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/simulate.rs rename to v2/crates/ruv-neural/ruv-neural-cli/src/commands/simulate.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/witness.rs b/v2/crates/ruv-neural/ruv-neural-cli/src/commands/witness.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/commands/witness.rs rename to v2/crates/ruv-neural/ruv-neural-cli/src/commands/witness.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/main.rs b/v2/crates/ruv-neural/ruv-neural-cli/src/main.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-cli/src/main.rs rename to v2/crates/ruv-neural/ruv-neural-cli/src/main.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/Cargo.toml b/v2/crates/ruv-neural/ruv-neural-core/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/Cargo.toml rename to v2/crates/ruv-neural/ruv-neural-core/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/README.md b/v2/crates/ruv-neural/ruv-neural-core/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/README.md rename to v2/crates/ruv-neural/ruv-neural-core/README.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/brain.rs b/v2/crates/ruv-neural/ruv-neural-core/src/brain.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/brain.rs rename to v2/crates/ruv-neural/ruv-neural-core/src/brain.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/embedding.rs b/v2/crates/ruv-neural/ruv-neural-core/src/embedding.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/embedding.rs rename to v2/crates/ruv-neural/ruv-neural-core/src/embedding.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/error.rs b/v2/crates/ruv-neural/ruv-neural-core/src/error.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/error.rs rename to v2/crates/ruv-neural/ruv-neural-core/src/error.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/graph.rs b/v2/crates/ruv-neural/ruv-neural-core/src/graph.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/graph.rs rename to v2/crates/ruv-neural/ruv-neural-core/src/graph.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/lib.rs b/v2/crates/ruv-neural/ruv-neural-core/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/lib.rs rename to v2/crates/ruv-neural/ruv-neural-core/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/rvf.rs b/v2/crates/ruv-neural/ruv-neural-core/src/rvf.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/rvf.rs rename to v2/crates/ruv-neural/ruv-neural-core/src/rvf.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/sensor.rs b/v2/crates/ruv-neural/ruv-neural-core/src/sensor.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/sensor.rs rename to v2/crates/ruv-neural/ruv-neural-core/src/sensor.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/signal.rs b/v2/crates/ruv-neural/ruv-neural-core/src/signal.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/signal.rs rename to v2/crates/ruv-neural/ruv-neural-core/src/signal.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/topology.rs b/v2/crates/ruv-neural/ruv-neural-core/src/topology.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/topology.rs rename to v2/crates/ruv-neural/ruv-neural-core/src/topology.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/traits.rs b/v2/crates/ruv-neural/ruv-neural-core/src/traits.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/traits.rs rename to v2/crates/ruv-neural/ruv-neural-core/src/traits.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/witness.rs b/v2/crates/ruv-neural/ruv-neural-core/src/witness.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-core/src/witness.rs rename to v2/crates/ruv-neural/ruv-neural-core/src/witness.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/Cargo.toml b/v2/crates/ruv-neural/ruv-neural-decoder/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/Cargo.toml rename to v2/crates/ruv-neural/ruv-neural-decoder/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/README.md b/v2/crates/ruv-neural/ruv-neural-decoder/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/README.md rename to v2/crates/ruv-neural/ruv-neural-decoder/README.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/src/clinical.rs b/v2/crates/ruv-neural/ruv-neural-decoder/src/clinical.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/src/clinical.rs rename to v2/crates/ruv-neural/ruv-neural-decoder/src/clinical.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/src/knn_decoder.rs b/v2/crates/ruv-neural/ruv-neural-decoder/src/knn_decoder.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/src/knn_decoder.rs rename to v2/crates/ruv-neural/ruv-neural-decoder/src/knn_decoder.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/src/lib.rs b/v2/crates/ruv-neural/ruv-neural-decoder/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/src/lib.rs rename to v2/crates/ruv-neural/ruv-neural-decoder/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/src/pipeline.rs b/v2/crates/ruv-neural/ruv-neural-decoder/src/pipeline.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/src/pipeline.rs rename to v2/crates/ruv-neural/ruv-neural-decoder/src/pipeline.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/src/threshold_decoder.rs b/v2/crates/ruv-neural/ruv-neural-decoder/src/threshold_decoder.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/src/threshold_decoder.rs rename to v2/crates/ruv-neural/ruv-neural-decoder/src/threshold_decoder.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/src/transition_decoder.rs b/v2/crates/ruv-neural/ruv-neural-decoder/src/transition_decoder.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-decoder/src/transition_decoder.rs rename to v2/crates/ruv-neural/ruv-neural-decoder/src/transition_decoder.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/Cargo.toml b/v2/crates/ruv-neural/ruv-neural-embed/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/Cargo.toml rename to v2/crates/ruv-neural/ruv-neural-embed/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/README.md b/v2/crates/ruv-neural/ruv-neural-embed/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/README.md rename to v2/crates/ruv-neural/ruv-neural-embed/README.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/combined.rs b/v2/crates/ruv-neural/ruv-neural-embed/src/combined.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/combined.rs rename to v2/crates/ruv-neural/ruv-neural-embed/src/combined.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/distance.rs b/v2/crates/ruv-neural/ruv-neural-embed/src/distance.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/distance.rs rename to v2/crates/ruv-neural/ruv-neural-embed/src/distance.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/lib.rs b/v2/crates/ruv-neural/ruv-neural-embed/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/lib.rs rename to v2/crates/ruv-neural/ruv-neural-embed/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/node2vec.rs b/v2/crates/ruv-neural/ruv-neural-embed/src/node2vec.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/node2vec.rs rename to v2/crates/ruv-neural/ruv-neural-embed/src/node2vec.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/rvf_export.rs b/v2/crates/ruv-neural/ruv-neural-embed/src/rvf_export.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/rvf_export.rs rename to v2/crates/ruv-neural/ruv-neural-embed/src/rvf_export.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/spectral_embed.rs b/v2/crates/ruv-neural/ruv-neural-embed/src/spectral_embed.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/spectral_embed.rs rename to v2/crates/ruv-neural/ruv-neural-embed/src/spectral_embed.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/temporal.rs b/v2/crates/ruv-neural/ruv-neural-embed/src/temporal.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/temporal.rs rename to v2/crates/ruv-neural/ruv-neural-embed/src/temporal.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/topology_embed.rs b/v2/crates/ruv-neural/ruv-neural-embed/src/topology_embed.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-embed/src/topology_embed.rs rename to v2/crates/ruv-neural/ruv-neural-embed/src/topology_embed.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/Cargo.toml b/v2/crates/ruv-neural/ruv-neural-esp32/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/Cargo.toml rename to v2/crates/ruv-neural/ruv-neural-esp32/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/README.md b/v2/crates/ruv-neural/ruv-neural-esp32/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/README.md rename to v2/crates/ruv-neural/ruv-neural-esp32/README.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/adc.rs b/v2/crates/ruv-neural/ruv-neural-esp32/src/adc.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/adc.rs rename to v2/crates/ruv-neural/ruv-neural-esp32/src/adc.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/aggregator.rs b/v2/crates/ruv-neural/ruv-neural-esp32/src/aggregator.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/aggregator.rs rename to v2/crates/ruv-neural/ruv-neural-esp32/src/aggregator.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/lib.rs b/v2/crates/ruv-neural/ruv-neural-esp32/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/lib.rs rename to v2/crates/ruv-neural/ruv-neural-esp32/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/power.rs b/v2/crates/ruv-neural/ruv-neural-esp32/src/power.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/power.rs rename to v2/crates/ruv-neural/ruv-neural-esp32/src/power.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/preprocessing.rs b/v2/crates/ruv-neural/ruv-neural-esp32/src/preprocessing.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/preprocessing.rs rename to v2/crates/ruv-neural/ruv-neural-esp32/src/preprocessing.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/protocol.rs b/v2/crates/ruv-neural/ruv-neural-esp32/src/protocol.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/protocol.rs rename to v2/crates/ruv-neural/ruv-neural-esp32/src/protocol.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/tdm.rs b/v2/crates/ruv-neural/ruv-neural-esp32/src/tdm.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-esp32/src/tdm.rs rename to v2/crates/ruv-neural/ruv-neural-esp32/src/tdm.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/Cargo.toml b/v2/crates/ruv-neural/ruv-neural-graph/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/Cargo.toml rename to v2/crates/ruv-neural/ruv-neural-graph/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/README.md b/v2/crates/ruv-neural/ruv-neural-graph/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/README.md rename to v2/crates/ruv-neural/ruv-neural-graph/README.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/atlas.rs b/v2/crates/ruv-neural/ruv-neural-graph/src/atlas.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/atlas.rs rename to v2/crates/ruv-neural/ruv-neural-graph/src/atlas.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/constructor.rs b/v2/crates/ruv-neural/ruv-neural-graph/src/constructor.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/constructor.rs rename to v2/crates/ruv-neural/ruv-neural-graph/src/constructor.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/dynamics.rs b/v2/crates/ruv-neural/ruv-neural-graph/src/dynamics.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/dynamics.rs rename to v2/crates/ruv-neural/ruv-neural-graph/src/dynamics.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/lib.rs b/v2/crates/ruv-neural/ruv-neural-graph/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/lib.rs rename to v2/crates/ruv-neural/ruv-neural-graph/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/metrics.rs b/v2/crates/ruv-neural/ruv-neural-graph/src/metrics.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/metrics.rs rename to v2/crates/ruv-neural/ruv-neural-graph/src/metrics.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/petgraph_bridge.rs b/v2/crates/ruv-neural/ruv-neural-graph/src/petgraph_bridge.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/petgraph_bridge.rs rename to v2/crates/ruv-neural/ruv-neural-graph/src/petgraph_bridge.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/spectral.rs b/v2/crates/ruv-neural/ruv-neural-graph/src/spectral.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-graph/src/spectral.rs rename to v2/crates/ruv-neural/ruv-neural-graph/src/spectral.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/Cargo.toml b/v2/crates/ruv-neural/ruv-neural-memory/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/Cargo.toml rename to v2/crates/ruv-neural/ruv-neural-memory/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/README.md b/v2/crates/ruv-neural/ruv-neural-memory/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/README.md rename to v2/crates/ruv-neural/ruv-neural-memory/README.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/benches/benchmarks.rs b/v2/crates/ruv-neural/ruv-neural-memory/benches/benchmarks.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/benches/benchmarks.rs rename to v2/crates/ruv-neural/ruv-neural-memory/benches/benchmarks.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/src/hnsw.rs b/v2/crates/ruv-neural/ruv-neural-memory/src/hnsw.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/src/hnsw.rs rename to v2/crates/ruv-neural/ruv-neural-memory/src/hnsw.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/src/lib.rs b/v2/crates/ruv-neural/ruv-neural-memory/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/src/lib.rs rename to v2/crates/ruv-neural/ruv-neural-memory/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/src/longitudinal.rs b/v2/crates/ruv-neural/ruv-neural-memory/src/longitudinal.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/src/longitudinal.rs rename to v2/crates/ruv-neural/ruv-neural-memory/src/longitudinal.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/src/persistence.rs b/v2/crates/ruv-neural/ruv-neural-memory/src/persistence.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/src/persistence.rs rename to v2/crates/ruv-neural/ruv-neural-memory/src/persistence.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/src/session.rs b/v2/crates/ruv-neural/ruv-neural-memory/src/session.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/src/session.rs rename to v2/crates/ruv-neural/ruv-neural-memory/src/session.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/src/store.rs b/v2/crates/ruv-neural/ruv-neural-memory/src/store.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-memory/src/store.rs rename to v2/crates/ruv-neural/ruv-neural-memory/src/store.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/Cargo.toml b/v2/crates/ruv-neural/ruv-neural-mincut/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/Cargo.toml rename to v2/crates/ruv-neural/ruv-neural-mincut/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/README.md b/v2/crates/ruv-neural/ruv-neural-mincut/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/README.md rename to v2/crates/ruv-neural/ruv-neural-mincut/README.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/benches/benchmarks.rs b/v2/crates/ruv-neural/ruv-neural-mincut/benches/benchmarks.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/benches/benchmarks.rs rename to v2/crates/ruv-neural/ruv-neural-mincut/benches/benchmarks.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/benchmark.rs b/v2/crates/ruv-neural/ruv-neural-mincut/src/benchmark.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/benchmark.rs rename to v2/crates/ruv-neural/ruv-neural-mincut/src/benchmark.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/coherence.rs b/v2/crates/ruv-neural/ruv-neural-mincut/src/coherence.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/coherence.rs rename to v2/crates/ruv-neural/ruv-neural-mincut/src/coherence.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/dynamic.rs b/v2/crates/ruv-neural/ruv-neural-mincut/src/dynamic.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/dynamic.rs rename to v2/crates/ruv-neural/ruv-neural-mincut/src/dynamic.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/lib.rs b/v2/crates/ruv-neural/ruv-neural-mincut/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/lib.rs rename to v2/crates/ruv-neural/ruv-neural-mincut/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/multiway.rs b/v2/crates/ruv-neural/ruv-neural-mincut/src/multiway.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/multiway.rs rename to v2/crates/ruv-neural/ruv-neural-mincut/src/multiway.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/normalized.rs b/v2/crates/ruv-neural/ruv-neural-mincut/src/normalized.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/normalized.rs rename to v2/crates/ruv-neural/ruv-neural-mincut/src/normalized.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/spectral_cut.rs b/v2/crates/ruv-neural/ruv-neural-mincut/src/spectral_cut.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/spectral_cut.rs rename to v2/crates/ruv-neural/ruv-neural-mincut/src/spectral_cut.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/stoer_wagner.rs b/v2/crates/ruv-neural/ruv-neural-mincut/src/stoer_wagner.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-mincut/src/stoer_wagner.rs rename to v2/crates/ruv-neural/ruv-neural-mincut/src/stoer_wagner.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/Cargo.toml b/v2/crates/ruv-neural/ruv-neural-sensor/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/Cargo.toml rename to v2/crates/ruv-neural/ruv-neural-sensor/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/README.md b/v2/crates/ruv-neural/ruv-neural-sensor/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/README.md rename to v2/crates/ruv-neural/ruv-neural-sensor/README.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/calibration.rs b/v2/crates/ruv-neural/ruv-neural-sensor/src/calibration.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/calibration.rs rename to v2/crates/ruv-neural/ruv-neural-sensor/src/calibration.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/eeg.rs b/v2/crates/ruv-neural/ruv-neural-sensor/src/eeg.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/eeg.rs rename to v2/crates/ruv-neural/ruv-neural-sensor/src/eeg.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/lib.rs b/v2/crates/ruv-neural/ruv-neural-sensor/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/lib.rs rename to v2/crates/ruv-neural/ruv-neural-sensor/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/nv_diamond.rs b/v2/crates/ruv-neural/ruv-neural-sensor/src/nv_diamond.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/nv_diamond.rs rename to v2/crates/ruv-neural/ruv-neural-sensor/src/nv_diamond.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/opm.rs b/v2/crates/ruv-neural/ruv-neural-sensor/src/opm.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/opm.rs rename to v2/crates/ruv-neural/ruv-neural-sensor/src/opm.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/quality.rs b/v2/crates/ruv-neural/ruv-neural-sensor/src/quality.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/quality.rs rename to v2/crates/ruv-neural/ruv-neural-sensor/src/quality.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/simulator.rs b/v2/crates/ruv-neural/ruv-neural-sensor/src/simulator.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-sensor/src/simulator.rs rename to v2/crates/ruv-neural/ruv-neural-sensor/src/simulator.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/Cargo.toml b/v2/crates/ruv-neural/ruv-neural-signal/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/Cargo.toml rename to v2/crates/ruv-neural/ruv-neural-signal/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/README.md b/v2/crates/ruv-neural/ruv-neural-signal/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/README.md rename to v2/crates/ruv-neural/ruv-neural-signal/README.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/benches/benchmarks.rs b/v2/crates/ruv-neural/ruv-neural-signal/benches/benchmarks.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/benches/benchmarks.rs rename to v2/crates/ruv-neural/ruv-neural-signal/benches/benchmarks.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/artifact.rs b/v2/crates/ruv-neural/ruv-neural-signal/src/artifact.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/artifact.rs rename to v2/crates/ruv-neural/ruv-neural-signal/src/artifact.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/connectivity.rs b/v2/crates/ruv-neural/ruv-neural-signal/src/connectivity.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/connectivity.rs rename to v2/crates/ruv-neural/ruv-neural-signal/src/connectivity.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/filter.rs b/v2/crates/ruv-neural/ruv-neural-signal/src/filter.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/filter.rs rename to v2/crates/ruv-neural/ruv-neural-signal/src/filter.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/hilbert.rs b/v2/crates/ruv-neural/ruv-neural-signal/src/hilbert.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/hilbert.rs rename to v2/crates/ruv-neural/ruv-neural-signal/src/hilbert.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/lib.rs b/v2/crates/ruv-neural/ruv-neural-signal/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/lib.rs rename to v2/crates/ruv-neural/ruv-neural-signal/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/preprocessing.rs b/v2/crates/ruv-neural/ruv-neural-signal/src/preprocessing.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/preprocessing.rs rename to v2/crates/ruv-neural/ruv-neural-signal/src/preprocessing.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/spectral.rs b/v2/crates/ruv-neural/ruv-neural-signal/src/spectral.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-signal/src/spectral.rs rename to v2/crates/ruv-neural/ruv-neural-signal/src/spectral.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/Cargo.toml b/v2/crates/ruv-neural/ruv-neural-viz/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/Cargo.toml rename to v2/crates/ruv-neural/ruv-neural-viz/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/README.md b/v2/crates/ruv-neural/ruv-neural-viz/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/README.md rename to v2/crates/ruv-neural/ruv-neural-viz/README.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/src/animation.rs b/v2/crates/ruv-neural/ruv-neural-viz/src/animation.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/src/animation.rs rename to v2/crates/ruv-neural/ruv-neural-viz/src/animation.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/src/ascii.rs b/v2/crates/ruv-neural/ruv-neural-viz/src/ascii.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/src/ascii.rs rename to v2/crates/ruv-neural/ruv-neural-viz/src/ascii.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/src/colormap.rs b/v2/crates/ruv-neural/ruv-neural-viz/src/colormap.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/src/colormap.rs rename to v2/crates/ruv-neural/ruv-neural-viz/src/colormap.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/src/export.rs b/v2/crates/ruv-neural/ruv-neural-viz/src/export.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/src/export.rs rename to v2/crates/ruv-neural/ruv-neural-viz/src/export.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/src/layout.rs b/v2/crates/ruv-neural/ruv-neural-viz/src/layout.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/src/layout.rs rename to v2/crates/ruv-neural/ruv-neural-viz/src/layout.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/src/lib.rs b/v2/crates/ruv-neural/ruv-neural-viz/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-viz/src/lib.rs rename to v2/crates/ruv-neural/ruv-neural-viz/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-wasm/Cargo.toml b/v2/crates/ruv-neural/ruv-neural-wasm/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-wasm/Cargo.toml rename to v2/crates/ruv-neural/ruv-neural-wasm/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-wasm/README.md b/v2/crates/ruv-neural/ruv-neural-wasm/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-wasm/README.md rename to v2/crates/ruv-neural/ruv-neural-wasm/README.md diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-wasm/src/graph_wasm.rs b/v2/crates/ruv-neural/ruv-neural-wasm/src/graph_wasm.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-wasm/src/graph_wasm.rs rename to v2/crates/ruv-neural/ruv-neural-wasm/src/graph_wasm.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-wasm/src/lib.rs b/v2/crates/ruv-neural/ruv-neural-wasm/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-wasm/src/lib.rs rename to v2/crates/ruv-neural/ruv-neural-wasm/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-wasm/src/streaming.rs b/v2/crates/ruv-neural/ruv-neural-wasm/src/streaming.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-wasm/src/streaming.rs rename to v2/crates/ruv-neural/ruv-neural-wasm/src/streaming.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-wasm/src/viz_data.rs b/v2/crates/ruv-neural/ruv-neural-wasm/src/viz_data.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/ruv-neural-wasm/src/viz_data.rs rename to v2/crates/ruv-neural/ruv-neural-wasm/src/viz_data.rs diff --git a/rust-port/wifi-densepose-rs/crates/ruv-neural/tests/integration.rs b/v2/crates/ruv-neural/tests/integration.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/ruv-neural/tests/integration.rs rename to v2/crates/ruv-neural/tests/integration.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-api/Cargo.toml b/v2/crates/wifi-densepose-api/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-api/Cargo.toml rename to v2/crates/wifi-densepose-api/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-api/README.md b/v2/crates/wifi-densepose-api/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-api/README.md rename to v2/crates/wifi-densepose-api/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-api/src/lib.rs b/v2/crates/wifi-densepose-api/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-api/src/lib.rs rename to v2/crates/wifi-densepose-api/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-cli/Cargo.toml b/v2/crates/wifi-densepose-cli/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-cli/Cargo.toml rename to v2/crates/wifi-densepose-cli/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-cli/README.md b/v2/crates/wifi-densepose-cli/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-cli/README.md rename to v2/crates/wifi-densepose-cli/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-cli/src/lib.rs b/v2/crates/wifi-densepose-cli/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-cli/src/lib.rs rename to v2/crates/wifi-densepose-cli/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-cli/src/main.rs b/v2/crates/wifi-densepose-cli/src/main.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-cli/src/main.rs rename to v2/crates/wifi-densepose-cli/src/main.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-cli/src/mat.rs b/v2/crates/wifi-densepose-cli/src/mat.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-cli/src/mat.rs rename to v2/crates/wifi-densepose-cli/src/mat.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-config/Cargo.toml b/v2/crates/wifi-densepose-config/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-config/Cargo.toml rename to v2/crates/wifi-densepose-config/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-config/README.md b/v2/crates/wifi-densepose-config/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-config/README.md rename to v2/crates/wifi-densepose-config/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-config/src/lib.rs b/v2/crates/wifi-densepose-config/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-config/src/lib.rs rename to v2/crates/wifi-densepose-config/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-core/Cargo.toml b/v2/crates/wifi-densepose-core/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-core/Cargo.toml rename to v2/crates/wifi-densepose-core/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-core/README.md b/v2/crates/wifi-densepose-core/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-core/README.md rename to v2/crates/wifi-densepose-core/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-core/src/error.rs b/v2/crates/wifi-densepose-core/src/error.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-core/src/error.rs rename to v2/crates/wifi-densepose-core/src/error.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-core/src/lib.rs b/v2/crates/wifi-densepose-core/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-core/src/lib.rs rename to v2/crates/wifi-densepose-core/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-core/src/traits.rs b/v2/crates/wifi-densepose-core/src/traits.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-core/src/traits.rs rename to v2/crates/wifi-densepose-core/src/traits.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-core/src/types.rs b/v2/crates/wifi-densepose-core/src/types.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-core/src/types.rs rename to v2/crates/wifi-densepose-core/src/types.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-core/src/utils.rs b/v2/crates/wifi-densepose-core/src/utils.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-core/src/utils.rs rename to v2/crates/wifi-densepose-core/src/utils.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-db/Cargo.toml b/v2/crates/wifi-densepose-db/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-db/Cargo.toml rename to v2/crates/wifi-densepose-db/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-db/README.md b/v2/crates/wifi-densepose-db/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-db/README.md rename to v2/crates/wifi-densepose-db/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-db/src/lib.rs b/v2/crates/wifi-densepose-db/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-db/src/lib.rs rename to v2/crates/wifi-densepose-db/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/daemon-state.json b/v2/crates/wifi-densepose-desktop/.claude-flow/daemon-state.json similarity index 91% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/daemon-state.json rename to v2/crates/wifi-densepose-desktop/.claude-flow/daemon-state.json index 71fb348b3..9a3d6bf23 100644 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/daemon-state.json +++ b/v2/crates/wifi-densepose-desktop/.claude-flow/daemon-state.json @@ -59,8 +59,8 @@ }, "config": { "autoStart": false, - "logDir": "/Users/cohen/GitHub/ruvnet/RuView/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/logs", - "stateFile": "/Users/cohen/GitHub/ruvnet/RuView/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/.claude-flow/daemon-state.json", + "logDir": "/Users/cohen/GitHub/ruvnet/RuView/v2/crates/wifi-densepose-desktop/.claude-flow/logs", + "stateFile": "/Users/cohen/GitHub/ruvnet/RuView/v2/crates/wifi-densepose-desktop/.claude-flow/daemon-state.json", "maxConcurrent": 2, "workerTimeoutMs": 300000, "resourceThresholds": { diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/Cargo.toml b/v2/crates/wifi-densepose-desktop/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/Cargo.toml rename to v2/crates/wifi-densepose-desktop/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/README.md b/v2/crates/wifi-densepose-desktop/README.md similarity index 99% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/README.md rename to v2/crates/wifi-densepose-desktop/README.md index 16e064001..06a68f8e0 100644 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/README.md +++ b/v2/crates/wifi-densepose-desktop/README.md @@ -110,7 +110,7 @@ The current release is a **debug build** that loads the frontend from a local Vi ```bash # 1. Clone the repo (or download just the ui/ folder) git clone https://github.com/ruvnet/RuView.git -cd RuView/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui +cd RuView/v2/crates/wifi-densepose-desktop/ui # 2. Install frontend dependencies npm install diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/build.rs b/v2/crates/wifi-densepose-desktop/build.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/build.rs rename to v2/crates/wifi-densepose-desktop/build.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/capabilities/default.json b/v2/crates/wifi-densepose-desktop/capabilities/default.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/capabilities/default.json rename to v2/crates/wifi-densepose-desktop/capabilities/default.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/gen/schemas/acl-manifests.json b/v2/crates/wifi-densepose-desktop/gen/schemas/acl-manifests.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/gen/schemas/acl-manifests.json rename to v2/crates/wifi-densepose-desktop/gen/schemas/acl-manifests.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/gen/schemas/capabilities.json b/v2/crates/wifi-densepose-desktop/gen/schemas/capabilities.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/gen/schemas/capabilities.json rename to v2/crates/wifi-densepose-desktop/gen/schemas/capabilities.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/gen/schemas/desktop-schema.json b/v2/crates/wifi-densepose-desktop/gen/schemas/desktop-schema.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/gen/schemas/desktop-schema.json rename to v2/crates/wifi-densepose-desktop/gen/schemas/desktop-schema.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/gen/schemas/macOS-schema.json b/v2/crates/wifi-densepose-desktop/gen/schemas/macOS-schema.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/gen/schemas/macOS-schema.json rename to v2/crates/wifi-densepose-desktop/gen/schemas/macOS-schema.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/gen/schemas/windows-schema.json b/v2/crates/wifi-densepose-desktop/gen/schemas/windows-schema.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/gen/schemas/windows-schema.json rename to v2/crates/wifi-densepose-desktop/gen/schemas/windows-schema.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/icons/128x128.png b/v2/crates/wifi-densepose-desktop/icons/128x128.png similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/icons/128x128.png rename to v2/crates/wifi-densepose-desktop/icons/128x128.png diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/icons/128x128@2x.png b/v2/crates/wifi-densepose-desktop/icons/128x128@2x.png similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/icons/128x128@2x.png rename to v2/crates/wifi-densepose-desktop/icons/128x128@2x.png diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/icons/32x32.png b/v2/crates/wifi-densepose-desktop/icons/32x32.png similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/icons/32x32.png rename to v2/crates/wifi-densepose-desktop/icons/32x32.png diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/icons/icon.icns b/v2/crates/wifi-densepose-desktop/icons/icon.icns similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/icons/icon.icns rename to v2/crates/wifi-densepose-desktop/icons/icon.icns diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/icons/icon.ico b/v2/crates/wifi-densepose-desktop/icons/icon.ico similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/icons/icon.ico rename to v2/crates/wifi-densepose-desktop/icons/icon.ico diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/discovery.rs b/v2/crates/wifi-densepose-desktop/src/commands/discovery.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/discovery.rs rename to v2/crates/wifi-densepose-desktop/src/commands/discovery.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/flash.rs b/v2/crates/wifi-densepose-desktop/src/commands/flash.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/flash.rs rename to v2/crates/wifi-densepose-desktop/src/commands/flash.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/mod.rs b/v2/crates/wifi-densepose-desktop/src/commands/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/mod.rs rename to v2/crates/wifi-densepose-desktop/src/commands/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/ota.rs b/v2/crates/wifi-densepose-desktop/src/commands/ota.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/ota.rs rename to v2/crates/wifi-densepose-desktop/src/commands/ota.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/provision.rs b/v2/crates/wifi-densepose-desktop/src/commands/provision.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/provision.rs rename to v2/crates/wifi-densepose-desktop/src/commands/provision.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/server.rs b/v2/crates/wifi-densepose-desktop/src/commands/server.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/server.rs rename to v2/crates/wifi-densepose-desktop/src/commands/server.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/settings.rs b/v2/crates/wifi-densepose-desktop/src/commands/settings.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/settings.rs rename to v2/crates/wifi-densepose-desktop/src/commands/settings.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/wasm.rs b/v2/crates/wifi-densepose-desktop/src/commands/wasm.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/commands/wasm.rs rename to v2/crates/wifi-densepose-desktop/src/commands/wasm.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/domain/config.rs b/v2/crates/wifi-densepose-desktop/src/domain/config.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/domain/config.rs rename to v2/crates/wifi-densepose-desktop/src/domain/config.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/domain/firmware.rs b/v2/crates/wifi-densepose-desktop/src/domain/firmware.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/domain/firmware.rs rename to v2/crates/wifi-densepose-desktop/src/domain/firmware.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/domain/mod.rs b/v2/crates/wifi-densepose-desktop/src/domain/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/domain/mod.rs rename to v2/crates/wifi-densepose-desktop/src/domain/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/domain/node.rs b/v2/crates/wifi-densepose-desktop/src/domain/node.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/domain/node.rs rename to v2/crates/wifi-densepose-desktop/src/domain/node.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/lib.rs b/v2/crates/wifi-densepose-desktop/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/lib.rs rename to v2/crates/wifi-densepose-desktop/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/main.rs b/v2/crates/wifi-densepose-desktop/src/main.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/main.rs rename to v2/crates/wifi-densepose-desktop/src/main.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/state.rs b/v2/crates/wifi-densepose-desktop/src/state.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/src/state.rs rename to v2/crates/wifi-densepose-desktop/src/state.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/tauri.conf.json b/v2/crates/wifi-densepose-desktop/tauri.conf.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/tauri.conf.json rename to v2/crates/wifi-densepose-desktop/tauri.conf.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/tests/api_integration.rs b/v2/crates/wifi-densepose-desktop/tests/api_integration.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/tests/api_integration.rs rename to v2/crates/wifi-densepose-desktop/tests/api_integration.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/daemon-state.json b/v2/crates/wifi-densepose-desktop/ui/.claude-flow/daemon-state.json similarity index 91% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/daemon-state.json rename to v2/crates/wifi-densepose-desktop/ui/.claude-flow/daemon-state.json index 0e6034dba..99ccd66d3 100644 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/daemon-state.json +++ b/v2/crates/wifi-densepose-desktop/ui/.claude-flow/daemon-state.json @@ -59,8 +59,8 @@ }, "config": { "autoStart": false, - "logDir": "/Users/cohen/GitHub/ruvnet/RuView/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/logs", - "stateFile": "/Users/cohen/GitHub/ruvnet/RuView/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.claude-flow/daemon-state.json", + "logDir": "/Users/cohen/GitHub/ruvnet/RuView/v2/crates/wifi-densepose-desktop/ui/.claude-flow/logs", + "stateFile": "/Users/cohen/GitHub/ruvnet/RuView/v2/crates/wifi-densepose-desktop/ui/.claude-flow/daemon-state.json", "maxConcurrent": 2, "workerTimeoutMs": 300000, "resourceThresholds": { diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_core.js b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_core.js similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_core.js rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_core.js diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_core.js.map b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_core.js.map similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_core.js.map rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_core.js.map diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_event.js b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_event.js similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_event.js rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_event.js diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_event.js.map b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_event.js.map similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_event.js.map rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_api_event.js.map diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_plugin-dialog.js b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_plugin-dialog.js similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_plugin-dialog.js rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_plugin-dialog.js diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_plugin-dialog.js.map b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_plugin-dialog.js.map similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_plugin-dialog.js.map rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/@tauri-apps_plugin-dialog.js.map diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/_metadata.json b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/_metadata.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/_metadata.json rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/_metadata.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-BUSYA2B4.js b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-BUSYA2B4.js similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-BUSYA2B4.js rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-BUSYA2B4.js diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-BUSYA2B4.js.map b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-BUSYA2B4.js.map similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-BUSYA2B4.js.map rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-BUSYA2B4.js.map diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-JCH2SJW3.js b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-JCH2SJW3.js similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-JCH2SJW3.js rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-JCH2SJW3.js diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-JCH2SJW3.js.map b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-JCH2SJW3.js.map similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-JCH2SJW3.js.map rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-JCH2SJW3.js.map diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-YQTFE5VL.js b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-YQTFE5VL.js similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-YQTFE5VL.js rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-YQTFE5VL.js diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-YQTFE5VL.js.map b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-YQTFE5VL.js.map similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-YQTFE5VL.js.map rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/chunk-YQTFE5VL.js.map diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/package.json b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/package.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/package.json rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/package.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/react-dom_client.js b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/react-dom_client.js similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/react-dom_client.js rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/react-dom_client.js diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/react-dom_client.js.map b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/react-dom_client.js.map similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/react-dom_client.js.map rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/react-dom_client.js.map diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/react.js b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/react.js similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/react.js rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/react.js diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/react.js.map b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/react.js.map similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/react.js.map rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/react.js.map diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/react_jsx-dev-runtime.js b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/react_jsx-dev-runtime.js similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/react_jsx-dev-runtime.js rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/react_jsx-dev-runtime.js diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/react_jsx-dev-runtime.js.map b/v2/crates/wifi-densepose-desktop/ui/.vite/deps/react_jsx-dev-runtime.js.map similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/.vite/deps/react_jsx-dev-runtime.js.map rename to v2/crates/wifi-densepose-desktop/ui/.vite/deps/react_jsx-dev-runtime.js.map diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/index.html b/v2/crates/wifi-densepose-desktop/ui/index.html similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/index.html rename to v2/crates/wifi-densepose-desktop/ui/index.html diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/package-lock.json b/v2/crates/wifi-densepose-desktop/ui/package-lock.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/package-lock.json rename to v2/crates/wifi-densepose-desktop/ui/package-lock.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/package.json b/v2/crates/wifi-densepose-desktop/ui/package.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/package.json rename to v2/crates/wifi-densepose-desktop/ui/package.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/App.tsx b/v2/crates/wifi-densepose-desktop/ui/src/App.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/App.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/App.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/components/NodeCard.tsx b/v2/crates/wifi-densepose-desktop/ui/src/components/NodeCard.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/components/NodeCard.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/components/NodeCard.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/components/Sidebar.tsx b/v2/crates/wifi-densepose-desktop/ui/src/components/Sidebar.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/components/Sidebar.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/components/Sidebar.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/components/StatusBadge.tsx b/v2/crates/wifi-densepose-desktop/ui/src/components/StatusBadge.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/components/StatusBadge.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/components/StatusBadge.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/design-system.css b/v2/crates/wifi-densepose-desktop/ui/src/design-system.css similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/design-system.css rename to v2/crates/wifi-densepose-desktop/ui/src/design-system.css diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/hooks/useNodes.ts b/v2/crates/wifi-densepose-desktop/ui/src/hooks/useNodes.ts similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/hooks/useNodes.ts rename to v2/crates/wifi-densepose-desktop/ui/src/hooks/useNodes.ts diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/hooks/useServer.ts b/v2/crates/wifi-densepose-desktop/ui/src/hooks/useServer.ts similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/hooks/useServer.ts rename to v2/crates/wifi-densepose-desktop/ui/src/hooks/useServer.ts diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/main.tsx b/v2/crates/wifi-densepose-desktop/ui/src/main.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/main.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/main.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/Dashboard.tsx b/v2/crates/wifi-densepose-desktop/ui/src/pages/Dashboard.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/Dashboard.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/pages/Dashboard.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/EdgeModules.tsx b/v2/crates/wifi-densepose-desktop/ui/src/pages/EdgeModules.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/EdgeModules.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/pages/EdgeModules.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/FlashFirmware.tsx b/v2/crates/wifi-densepose-desktop/ui/src/pages/FlashFirmware.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/FlashFirmware.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/pages/FlashFirmware.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/MeshView.tsx b/v2/crates/wifi-densepose-desktop/ui/src/pages/MeshView.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/MeshView.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/pages/MeshView.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/NetworkDiscovery.tsx b/v2/crates/wifi-densepose-desktop/ui/src/pages/NetworkDiscovery.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/NetworkDiscovery.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/pages/NetworkDiscovery.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/Nodes.tsx b/v2/crates/wifi-densepose-desktop/ui/src/pages/Nodes.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/Nodes.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/pages/Nodes.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/OtaUpdate.tsx b/v2/crates/wifi-densepose-desktop/ui/src/pages/OtaUpdate.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/OtaUpdate.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/pages/OtaUpdate.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/Sensing.tsx b/v2/crates/wifi-densepose-desktop/ui/src/pages/Sensing.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/Sensing.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/pages/Sensing.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/Settings.tsx b/v2/crates/wifi-densepose-desktop/ui/src/pages/Settings.tsx similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/pages/Settings.tsx rename to v2/crates/wifi-densepose-desktop/ui/src/pages/Settings.tsx diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/types.ts b/v2/crates/wifi-densepose-desktop/ui/src/types.ts similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/types.ts rename to v2/crates/wifi-densepose-desktop/ui/src/types.ts diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/version.ts b/v2/crates/wifi-densepose-desktop/ui/src/version.ts similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/src/version.ts rename to v2/crates/wifi-densepose-desktop/ui/src/version.ts diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/tsconfig.json b/v2/crates/wifi-densepose-desktop/ui/tsconfig.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/tsconfig.json rename to v2/crates/wifi-densepose-desktop/ui/tsconfig.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/vite.config.ts b/v2/crates/wifi-densepose-desktop/ui/vite.config.ts similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-desktop/ui/vite.config.ts rename to v2/crates/wifi-densepose-desktop/ui/vite.config.ts diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/Cargo.toml b/v2/crates/wifi-densepose-geo/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/Cargo.toml rename to v2/crates/wifi-densepose-geo/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/README.md b/v2/crates/wifi-densepose-geo/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/README.md rename to v2/crates/wifi-densepose-geo/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/examples/validate.rs b/v2/crates/wifi-densepose-geo/examples/validate.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/examples/validate.rs rename to v2/crates/wifi-densepose-geo/examples/validate.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/brain.rs b/v2/crates/wifi-densepose-geo/src/brain.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/brain.rs rename to v2/crates/wifi-densepose-geo/src/brain.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/cache.rs b/v2/crates/wifi-densepose-geo/src/cache.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/cache.rs rename to v2/crates/wifi-densepose-geo/src/cache.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/coord.rs b/v2/crates/wifi-densepose-geo/src/coord.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/coord.rs rename to v2/crates/wifi-densepose-geo/src/coord.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/fuse.rs b/v2/crates/wifi-densepose-geo/src/fuse.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/fuse.rs rename to v2/crates/wifi-densepose-geo/src/fuse.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/lib.rs b/v2/crates/wifi-densepose-geo/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/lib.rs rename to v2/crates/wifi-densepose-geo/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/locate.rs b/v2/crates/wifi-densepose-geo/src/locate.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/locate.rs rename to v2/crates/wifi-densepose-geo/src/locate.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/osm.rs b/v2/crates/wifi-densepose-geo/src/osm.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/osm.rs rename to v2/crates/wifi-densepose-geo/src/osm.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/register.rs b/v2/crates/wifi-densepose-geo/src/register.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/register.rs rename to v2/crates/wifi-densepose-geo/src/register.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/temporal.rs b/v2/crates/wifi-densepose-geo/src/temporal.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/temporal.rs rename to v2/crates/wifi-densepose-geo/src/temporal.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/terrain.rs b/v2/crates/wifi-densepose-geo/src/terrain.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/terrain.rs rename to v2/crates/wifi-densepose-geo/src/terrain.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/tiles.rs b/v2/crates/wifi-densepose-geo/src/tiles.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/tiles.rs rename to v2/crates/wifi-densepose-geo/src/tiles.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/types.rs b/v2/crates/wifi-densepose-geo/src/types.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/src/types.rs rename to v2/crates/wifi-densepose-geo/src/types.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/tests/geo_test.rs b/v2/crates/wifi-densepose-geo/tests/geo_test.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-geo/tests/geo_test.rs rename to v2/crates/wifi-densepose-geo/tests/geo_test.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/Cargo.toml b/v2/crates/wifi-densepose-hardware/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/Cargo.toml rename to v2/crates/wifi-densepose-hardware/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/README.md b/v2/crates/wifi-densepose-hardware/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/README.md rename to v2/crates/wifi-densepose-hardware/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/benches/transport_bench.rs b/v2/crates/wifi-densepose-hardware/benches/transport_bench.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/benches/transport_bench.rs rename to v2/crates/wifi-densepose-hardware/benches/transport_bench.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/aggregator/mod.rs b/v2/crates/wifi-densepose-hardware/src/aggregator/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/aggregator/mod.rs rename to v2/crates/wifi-densepose-hardware/src/aggregator/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/bin/aggregator.rs b/v2/crates/wifi-densepose-hardware/src/bin/aggregator.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/bin/aggregator.rs rename to v2/crates/wifi-densepose-hardware/src/bin/aggregator.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/bridge.rs b/v2/crates/wifi-densepose-hardware/src/bridge.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/bridge.rs rename to v2/crates/wifi-densepose-hardware/src/bridge.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/csi_frame.rs b/v2/crates/wifi-densepose-hardware/src/csi_frame.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/csi_frame.rs rename to v2/crates/wifi-densepose-hardware/src/csi_frame.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/error.rs b/v2/crates/wifi-densepose-hardware/src/error.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/error.rs rename to v2/crates/wifi-densepose-hardware/src/error.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/esp32/mod.rs b/v2/crates/wifi-densepose-hardware/src/esp32/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/esp32/mod.rs rename to v2/crates/wifi-densepose-hardware/src/esp32/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/esp32/quic_transport.rs b/v2/crates/wifi-densepose-hardware/src/esp32/quic_transport.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/esp32/quic_transport.rs rename to v2/crates/wifi-densepose-hardware/src/esp32/quic_transport.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/esp32/secure_tdm.rs b/v2/crates/wifi-densepose-hardware/src/esp32/secure_tdm.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/esp32/secure_tdm.rs rename to v2/crates/wifi-densepose-hardware/src/esp32/secure_tdm.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/esp32/tdm.rs b/v2/crates/wifi-densepose-hardware/src/esp32/tdm.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/esp32/tdm.rs rename to v2/crates/wifi-densepose-hardware/src/esp32/tdm.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/esp32_parser.rs b/v2/crates/wifi-densepose-hardware/src/esp32_parser.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/esp32_parser.rs rename to v2/crates/wifi-densepose-hardware/src/esp32_parser.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/lib.rs b/v2/crates/wifi-densepose-hardware/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/lib.rs rename to v2/crates/wifi-densepose-hardware/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/radio_ops.rs b/v2/crates/wifi-densepose-hardware/src/radio_ops.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-hardware/src/radio_ops.rs rename to v2/crates/wifi-densepose-hardware/src/radio_ops.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/Cargo.toml b/v2/crates/wifi-densepose-mat/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/Cargo.toml rename to v2/crates/wifi-densepose-mat/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/README.md b/v2/crates/wifi-densepose-mat/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/README.md rename to v2/crates/wifi-densepose-mat/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/benches/detection_bench.rs b/v2/crates/wifi-densepose-mat/benches/detection_bench.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/benches/detection_bench.rs rename to v2/crates/wifi-densepose-mat/benches/detection_bench.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/alerting/dispatcher.rs b/v2/crates/wifi-densepose-mat/src/alerting/dispatcher.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/alerting/dispatcher.rs rename to v2/crates/wifi-densepose-mat/src/alerting/dispatcher.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/alerting/generator.rs b/v2/crates/wifi-densepose-mat/src/alerting/generator.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/alerting/generator.rs rename to v2/crates/wifi-densepose-mat/src/alerting/generator.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/alerting/mod.rs b/v2/crates/wifi-densepose-mat/src/alerting/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/alerting/mod.rs rename to v2/crates/wifi-densepose-mat/src/alerting/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/alerting/triage_service.rs b/v2/crates/wifi-densepose-mat/src/alerting/triage_service.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/alerting/triage_service.rs rename to v2/crates/wifi-densepose-mat/src/alerting/triage_service.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/api/dto.rs b/v2/crates/wifi-densepose-mat/src/api/dto.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/api/dto.rs rename to v2/crates/wifi-densepose-mat/src/api/dto.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/api/error.rs b/v2/crates/wifi-densepose-mat/src/api/error.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/api/error.rs rename to v2/crates/wifi-densepose-mat/src/api/error.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/api/handlers.rs b/v2/crates/wifi-densepose-mat/src/api/handlers.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/api/handlers.rs rename to v2/crates/wifi-densepose-mat/src/api/handlers.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/api/mod.rs b/v2/crates/wifi-densepose-mat/src/api/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/api/mod.rs rename to v2/crates/wifi-densepose-mat/src/api/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/api/state.rs b/v2/crates/wifi-densepose-mat/src/api/state.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/api/state.rs rename to v2/crates/wifi-densepose-mat/src/api/state.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/api/websocket.rs b/v2/crates/wifi-densepose-mat/src/api/websocket.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/api/websocket.rs rename to v2/crates/wifi-densepose-mat/src/api/websocket.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/detection/breathing.rs b/v2/crates/wifi-densepose-mat/src/detection/breathing.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/detection/breathing.rs rename to v2/crates/wifi-densepose-mat/src/detection/breathing.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/detection/ensemble.rs b/v2/crates/wifi-densepose-mat/src/detection/ensemble.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/detection/ensemble.rs rename to v2/crates/wifi-densepose-mat/src/detection/ensemble.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/detection/heartbeat.rs b/v2/crates/wifi-densepose-mat/src/detection/heartbeat.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/detection/heartbeat.rs rename to v2/crates/wifi-densepose-mat/src/detection/heartbeat.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/detection/mod.rs b/v2/crates/wifi-densepose-mat/src/detection/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/detection/mod.rs rename to v2/crates/wifi-densepose-mat/src/detection/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/detection/movement.rs b/v2/crates/wifi-densepose-mat/src/detection/movement.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/detection/movement.rs rename to v2/crates/wifi-densepose-mat/src/detection/movement.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/detection/pipeline.rs b/v2/crates/wifi-densepose-mat/src/detection/pipeline.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/detection/pipeline.rs rename to v2/crates/wifi-densepose-mat/src/detection/pipeline.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/alert.rs b/v2/crates/wifi-densepose-mat/src/domain/alert.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/alert.rs rename to v2/crates/wifi-densepose-mat/src/domain/alert.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/coordinates.rs b/v2/crates/wifi-densepose-mat/src/domain/coordinates.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/coordinates.rs rename to v2/crates/wifi-densepose-mat/src/domain/coordinates.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/disaster_event.rs b/v2/crates/wifi-densepose-mat/src/domain/disaster_event.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/disaster_event.rs rename to v2/crates/wifi-densepose-mat/src/domain/disaster_event.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/events.rs b/v2/crates/wifi-densepose-mat/src/domain/events.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/events.rs rename to v2/crates/wifi-densepose-mat/src/domain/events.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/mod.rs b/v2/crates/wifi-densepose-mat/src/domain/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/mod.rs rename to v2/crates/wifi-densepose-mat/src/domain/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/scan_zone.rs b/v2/crates/wifi-densepose-mat/src/domain/scan_zone.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/scan_zone.rs rename to v2/crates/wifi-densepose-mat/src/domain/scan_zone.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/survivor.rs b/v2/crates/wifi-densepose-mat/src/domain/survivor.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/survivor.rs rename to v2/crates/wifi-densepose-mat/src/domain/survivor.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/triage.rs b/v2/crates/wifi-densepose-mat/src/domain/triage.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/triage.rs rename to v2/crates/wifi-densepose-mat/src/domain/triage.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/vital_signs.rs b/v2/crates/wifi-densepose-mat/src/domain/vital_signs.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/domain/vital_signs.rs rename to v2/crates/wifi-densepose-mat/src/domain/vital_signs.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/integration/csi_receiver.rs b/v2/crates/wifi-densepose-mat/src/integration/csi_receiver.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/integration/csi_receiver.rs rename to v2/crates/wifi-densepose-mat/src/integration/csi_receiver.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/integration/hardware_adapter.rs b/v2/crates/wifi-densepose-mat/src/integration/hardware_adapter.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/integration/hardware_adapter.rs rename to v2/crates/wifi-densepose-mat/src/integration/hardware_adapter.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/integration/mod.rs b/v2/crates/wifi-densepose-mat/src/integration/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/integration/mod.rs rename to v2/crates/wifi-densepose-mat/src/integration/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/integration/neural_adapter.rs b/v2/crates/wifi-densepose-mat/src/integration/neural_adapter.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/integration/neural_adapter.rs rename to v2/crates/wifi-densepose-mat/src/integration/neural_adapter.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/integration/signal_adapter.rs b/v2/crates/wifi-densepose-mat/src/integration/signal_adapter.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/integration/signal_adapter.rs rename to v2/crates/wifi-densepose-mat/src/integration/signal_adapter.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/lib.rs b/v2/crates/wifi-densepose-mat/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/lib.rs rename to v2/crates/wifi-densepose-mat/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/localization/depth.rs b/v2/crates/wifi-densepose-mat/src/localization/depth.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/localization/depth.rs rename to v2/crates/wifi-densepose-mat/src/localization/depth.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/localization/fusion.rs b/v2/crates/wifi-densepose-mat/src/localization/fusion.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/localization/fusion.rs rename to v2/crates/wifi-densepose-mat/src/localization/fusion.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/localization/mod.rs b/v2/crates/wifi-densepose-mat/src/localization/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/localization/mod.rs rename to v2/crates/wifi-densepose-mat/src/localization/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/localization/triangulation.rs b/v2/crates/wifi-densepose-mat/src/localization/triangulation.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/localization/triangulation.rs rename to v2/crates/wifi-densepose-mat/src/localization/triangulation.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/ml/debris_model.rs b/v2/crates/wifi-densepose-mat/src/ml/debris_model.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/ml/debris_model.rs rename to v2/crates/wifi-densepose-mat/src/ml/debris_model.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/ml/mod.rs b/v2/crates/wifi-densepose-mat/src/ml/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/ml/mod.rs rename to v2/crates/wifi-densepose-mat/src/ml/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/ml/vital_signs_classifier.rs b/v2/crates/wifi-densepose-mat/src/ml/vital_signs_classifier.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/ml/vital_signs_classifier.rs rename to v2/crates/wifi-densepose-mat/src/ml/vital_signs_classifier.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/tracking/fingerprint.rs b/v2/crates/wifi-densepose-mat/src/tracking/fingerprint.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/tracking/fingerprint.rs rename to v2/crates/wifi-densepose-mat/src/tracking/fingerprint.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/tracking/kalman.rs b/v2/crates/wifi-densepose-mat/src/tracking/kalman.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/tracking/kalman.rs rename to v2/crates/wifi-densepose-mat/src/tracking/kalman.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/tracking/lifecycle.rs b/v2/crates/wifi-densepose-mat/src/tracking/lifecycle.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/tracking/lifecycle.rs rename to v2/crates/wifi-densepose-mat/src/tracking/lifecycle.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/tracking/mod.rs b/v2/crates/wifi-densepose-mat/src/tracking/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/tracking/mod.rs rename to v2/crates/wifi-densepose-mat/src/tracking/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/tracking/tracker.rs b/v2/crates/wifi-densepose-mat/src/tracking/tracker.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/src/tracking/tracker.rs rename to v2/crates/wifi-densepose-mat/src/tracking/tracker.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/tests/integration_adr001.rs b/v2/crates/wifi-densepose-mat/tests/integration_adr001.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-mat/tests/integration_adr001.rs rename to v2/crates/wifi-densepose-mat/tests/integration_adr001.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/Cargo.toml b/v2/crates/wifi-densepose-nn/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/Cargo.toml rename to v2/crates/wifi-densepose-nn/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/README.md b/v2/crates/wifi-densepose-nn/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/README.md rename to v2/crates/wifi-densepose-nn/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/benches/inference_bench.rs b/v2/crates/wifi-densepose-nn/benches/inference_bench.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/benches/inference_bench.rs rename to v2/crates/wifi-densepose-nn/benches/inference_bench.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/densepose.rs b/v2/crates/wifi-densepose-nn/src/densepose.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/densepose.rs rename to v2/crates/wifi-densepose-nn/src/densepose.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/error.rs b/v2/crates/wifi-densepose-nn/src/error.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/error.rs rename to v2/crates/wifi-densepose-nn/src/error.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/inference.rs b/v2/crates/wifi-densepose-nn/src/inference.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/inference.rs rename to v2/crates/wifi-densepose-nn/src/inference.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/lib.rs b/v2/crates/wifi-densepose-nn/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/lib.rs rename to v2/crates/wifi-densepose-nn/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/onnx.rs b/v2/crates/wifi-densepose-nn/src/onnx.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/onnx.rs rename to v2/crates/wifi-densepose-nn/src/onnx.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/tensor.rs b/v2/crates/wifi-densepose-nn/src/tensor.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/tensor.rs rename to v2/crates/wifi-densepose-nn/src/tensor.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/translator.rs b/v2/crates/wifi-densepose-nn/src/translator.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-nn/src/translator.rs rename to v2/crates/wifi-densepose-nn/src/translator.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/Cargo.toml b/v2/crates/wifi-densepose-pointcloud/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/Cargo.toml rename to v2/crates/wifi-densepose-pointcloud/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/brain_bridge.rs b/v2/crates/wifi-densepose-pointcloud/src/brain_bridge.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/brain_bridge.rs rename to v2/crates/wifi-densepose-pointcloud/src/brain_bridge.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/camera.rs b/v2/crates/wifi-densepose-pointcloud/src/camera.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/camera.rs rename to v2/crates/wifi-densepose-pointcloud/src/camera.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/csi_pipeline.rs b/v2/crates/wifi-densepose-pointcloud/src/csi_pipeline.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/csi_pipeline.rs rename to v2/crates/wifi-densepose-pointcloud/src/csi_pipeline.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/depth.rs b/v2/crates/wifi-densepose-pointcloud/src/depth.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/depth.rs rename to v2/crates/wifi-densepose-pointcloud/src/depth.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/fusion.rs b/v2/crates/wifi-densepose-pointcloud/src/fusion.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/fusion.rs rename to v2/crates/wifi-densepose-pointcloud/src/fusion.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/main.rs b/v2/crates/wifi-densepose-pointcloud/src/main.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/main.rs rename to v2/crates/wifi-densepose-pointcloud/src/main.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/parser.rs b/v2/crates/wifi-densepose-pointcloud/src/parser.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/parser.rs rename to v2/crates/wifi-densepose-pointcloud/src/parser.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/pointcloud.rs b/v2/crates/wifi-densepose-pointcloud/src/pointcloud.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/pointcloud.rs rename to v2/crates/wifi-densepose-pointcloud/src/pointcloud.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/stream.rs b/v2/crates/wifi-densepose-pointcloud/src/stream.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/stream.rs rename to v2/crates/wifi-densepose-pointcloud/src/stream.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/training.rs b/v2/crates/wifi-densepose-pointcloud/src/training.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/training.rs rename to v2/crates/wifi-densepose-pointcloud/src/training.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/viewer.html b/v2/crates/wifi-densepose-pointcloud/src/viewer.html similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-pointcloud/src/viewer.html rename to v2/crates/wifi-densepose-pointcloud/src/viewer.html diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/Cargo.toml b/v2/crates/wifi-densepose-ruvector/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/Cargo.toml rename to v2/crates/wifi-densepose-ruvector/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/README.md b/v2/crates/wifi-densepose-ruvector/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/README.md rename to v2/crates/wifi-densepose-ruvector/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/benches/crv_bench.rs b/v2/crates/wifi-densepose-ruvector/benches/crv_bench.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/benches/crv_bench.rs rename to v2/crates/wifi-densepose-ruvector/benches/crv_bench.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/crv/mod.rs b/v2/crates/wifi-densepose-ruvector/src/crv/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/crv/mod.rs rename to v2/crates/wifi-densepose-ruvector/src/crv/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/lib.rs b/v2/crates/wifi-densepose-ruvector/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/lib.rs rename to v2/crates/wifi-densepose-ruvector/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/mat/breathing.rs b/v2/crates/wifi-densepose-ruvector/src/mat/breathing.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/mat/breathing.rs rename to v2/crates/wifi-densepose-ruvector/src/mat/breathing.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/mat/heartbeat.rs b/v2/crates/wifi-densepose-ruvector/src/mat/heartbeat.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/mat/heartbeat.rs rename to v2/crates/wifi-densepose-ruvector/src/mat/heartbeat.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/mat/mod.rs b/v2/crates/wifi-densepose-ruvector/src/mat/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/mat/mod.rs rename to v2/crates/wifi-densepose-ruvector/src/mat/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/mat/triangulation.rs b/v2/crates/wifi-densepose-ruvector/src/mat/triangulation.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/mat/triangulation.rs rename to v2/crates/wifi-densepose-ruvector/src/mat/triangulation.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/signal/bvp.rs b/v2/crates/wifi-densepose-ruvector/src/signal/bvp.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/signal/bvp.rs rename to v2/crates/wifi-densepose-ruvector/src/signal/bvp.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/signal/fresnel.rs b/v2/crates/wifi-densepose-ruvector/src/signal/fresnel.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/signal/fresnel.rs rename to v2/crates/wifi-densepose-ruvector/src/signal/fresnel.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/signal/mod.rs b/v2/crates/wifi-densepose-ruvector/src/signal/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/signal/mod.rs rename to v2/crates/wifi-densepose-ruvector/src/signal/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/signal/spectrogram.rs b/v2/crates/wifi-densepose-ruvector/src/signal/spectrogram.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/signal/spectrogram.rs rename to v2/crates/wifi-densepose-ruvector/src/signal/spectrogram.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/signal/subcarrier.rs b/v2/crates/wifi-densepose-ruvector/src/signal/subcarrier.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/signal/subcarrier.rs rename to v2/crates/wifi-densepose-ruvector/src/signal/subcarrier.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/viewpoint/attention.rs b/v2/crates/wifi-densepose-ruvector/src/viewpoint/attention.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/viewpoint/attention.rs rename to v2/crates/wifi-densepose-ruvector/src/viewpoint/attention.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/viewpoint/coherence.rs b/v2/crates/wifi-densepose-ruvector/src/viewpoint/coherence.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/viewpoint/coherence.rs rename to v2/crates/wifi-densepose-ruvector/src/viewpoint/coherence.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/viewpoint/fusion.rs b/v2/crates/wifi-densepose-ruvector/src/viewpoint/fusion.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/viewpoint/fusion.rs rename to v2/crates/wifi-densepose-ruvector/src/viewpoint/fusion.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/viewpoint/geometry.rs b/v2/crates/wifi-densepose-ruvector/src/viewpoint/geometry.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/viewpoint/geometry.rs rename to v2/crates/wifi-densepose-ruvector/src/viewpoint/geometry.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/viewpoint/mod.rs b/v2/crates/wifi-densepose-ruvector/src/viewpoint/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-ruvector/src/viewpoint/mod.rs rename to v2/crates/wifi-densepose-ruvector/src/viewpoint/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/Cargo.toml b/v2/crates/wifi-densepose-sensing-server/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/Cargo.toml rename to v2/crates/wifi-densepose-sensing-server/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/README.md b/v2/crates/wifi-densepose-sensing-server/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/README.md rename to v2/crates/wifi-densepose-sensing-server/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/adaptive_classifier.rs b/v2/crates/wifi-densepose-sensing-server/src/adaptive_classifier.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/adaptive_classifier.rs rename to v2/crates/wifi-densepose-sensing-server/src/adaptive_classifier.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/cli.rs b/v2/crates/wifi-densepose-sensing-server/src/cli.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/cli.rs rename to v2/crates/wifi-densepose-sensing-server/src/cli.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/csi.rs b/v2/crates/wifi-densepose-sensing-server/src/csi.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/csi.rs rename to v2/crates/wifi-densepose-sensing-server/src/csi.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/dataset.rs b/v2/crates/wifi-densepose-sensing-server/src/dataset.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/dataset.rs rename to v2/crates/wifi-densepose-sensing-server/src/dataset.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/embedding.rs b/v2/crates/wifi-densepose-sensing-server/src/embedding.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/embedding.rs rename to v2/crates/wifi-densepose-sensing-server/src/embedding.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/field_bridge.rs b/v2/crates/wifi-densepose-sensing-server/src/field_bridge.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/field_bridge.rs rename to v2/crates/wifi-densepose-sensing-server/src/field_bridge.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/graph_transformer.rs b/v2/crates/wifi-densepose-sensing-server/src/graph_transformer.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/graph_transformer.rs rename to v2/crates/wifi-densepose-sensing-server/src/graph_transformer.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/lib.rs b/v2/crates/wifi-densepose-sensing-server/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/lib.rs rename to v2/crates/wifi-densepose-sensing-server/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/main.rs b/v2/crates/wifi-densepose-sensing-server/src/main.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/main.rs rename to v2/crates/wifi-densepose-sensing-server/src/main.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/model_manager.rs b/v2/crates/wifi-densepose-sensing-server/src/model_manager.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/model_manager.rs rename to v2/crates/wifi-densepose-sensing-server/src/model_manager.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/multistatic_bridge.rs b/v2/crates/wifi-densepose-sensing-server/src/multistatic_bridge.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/multistatic_bridge.rs rename to v2/crates/wifi-densepose-sensing-server/src/multistatic_bridge.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/pose.rs b/v2/crates/wifi-densepose-sensing-server/src/pose.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/pose.rs rename to v2/crates/wifi-densepose-sensing-server/src/pose.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/recording.rs b/v2/crates/wifi-densepose-sensing-server/src/recording.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/recording.rs rename to v2/crates/wifi-densepose-sensing-server/src/recording.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/rvf_container.rs b/v2/crates/wifi-densepose-sensing-server/src/rvf_container.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/rvf_container.rs rename to v2/crates/wifi-densepose-sensing-server/src/rvf_container.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/rvf_pipeline.rs b/v2/crates/wifi-densepose-sensing-server/src/rvf_pipeline.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/rvf_pipeline.rs rename to v2/crates/wifi-densepose-sensing-server/src/rvf_pipeline.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/sona.rs b/v2/crates/wifi-densepose-sensing-server/src/sona.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/sona.rs rename to v2/crates/wifi-densepose-sensing-server/src/sona.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/sparse_inference.rs b/v2/crates/wifi-densepose-sensing-server/src/sparse_inference.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/sparse_inference.rs rename to v2/crates/wifi-densepose-sensing-server/src/sparse_inference.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/tracker_bridge.rs b/v2/crates/wifi-densepose-sensing-server/src/tracker_bridge.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/tracker_bridge.rs rename to v2/crates/wifi-densepose-sensing-server/src/tracker_bridge.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/trainer.rs b/v2/crates/wifi-densepose-sensing-server/src/trainer.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/trainer.rs rename to v2/crates/wifi-densepose-sensing-server/src/trainer.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/training_api.rs b/v2/crates/wifi-densepose-sensing-server/src/training_api.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/training_api.rs rename to v2/crates/wifi-densepose-sensing-server/src/training_api.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/types.rs b/v2/crates/wifi-densepose-sensing-server/src/types.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/types.rs rename to v2/crates/wifi-densepose-sensing-server/src/types.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/vital_signs.rs b/v2/crates/wifi-densepose-sensing-server/src/vital_signs.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/src/vital_signs.rs rename to v2/crates/wifi-densepose-sensing-server/src/vital_signs.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/tests/multi_node_test.rs b/v2/crates/wifi-densepose-sensing-server/tests/multi_node_test.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/tests/multi_node_test.rs rename to v2/crates/wifi-densepose-sensing-server/tests/multi_node_test.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/tests/rvf_container_test.rs b/v2/crates/wifi-densepose-sensing-server/tests/rvf_container_test.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/tests/rvf_container_test.rs rename to v2/crates/wifi-densepose-sensing-server/tests/rvf_container_test.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/tests/vital_signs_test.rs b/v2/crates/wifi-densepose-sensing-server/tests/vital_signs_test.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-sensing-server/tests/vital_signs_test.rs rename to v2/crates/wifi-densepose-sensing-server/tests/vital_signs_test.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/Cargo.toml b/v2/crates/wifi-densepose-signal/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/Cargo.toml rename to v2/crates/wifi-densepose-signal/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/README.md b/v2/crates/wifi-densepose-signal/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/README.md rename to v2/crates/wifi-densepose-signal/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/benches/signal_bench.rs b/v2/crates/wifi-densepose-signal/benches/signal_bench.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/benches/signal_bench.rs rename to v2/crates/wifi-densepose-signal/benches/signal_bench.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/bvp.rs b/v2/crates/wifi-densepose-signal/src/bvp.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/bvp.rs rename to v2/crates/wifi-densepose-signal/src/bvp.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/csi_processor.rs b/v2/crates/wifi-densepose-signal/src/csi_processor.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/csi_processor.rs rename to v2/crates/wifi-densepose-signal/src/csi_processor.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/csi_ratio.rs b/v2/crates/wifi-densepose-signal/src/csi_ratio.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/csi_ratio.rs rename to v2/crates/wifi-densepose-signal/src/csi_ratio.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/features.rs b/v2/crates/wifi-densepose-signal/src/features.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/features.rs rename to v2/crates/wifi-densepose-signal/src/features.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/fresnel.rs b/v2/crates/wifi-densepose-signal/src/fresnel.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/fresnel.rs rename to v2/crates/wifi-densepose-signal/src/fresnel.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/hampel.rs b/v2/crates/wifi-densepose-signal/src/hampel.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/hampel.rs rename to v2/crates/wifi-densepose-signal/src/hampel.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/hardware_norm.rs b/v2/crates/wifi-densepose-signal/src/hardware_norm.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/hardware_norm.rs rename to v2/crates/wifi-densepose-signal/src/hardware_norm.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/lib.rs b/v2/crates/wifi-densepose-signal/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/lib.rs rename to v2/crates/wifi-densepose-signal/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/motion.rs b/v2/crates/wifi-densepose-signal/src/motion.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/motion.rs rename to v2/crates/wifi-densepose-signal/src/motion.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/phase_sanitizer.rs b/v2/crates/wifi-densepose-signal/src/phase_sanitizer.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/phase_sanitizer.rs rename to v2/crates/wifi-densepose-signal/src/phase_sanitizer.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/adversarial.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/adversarial.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/adversarial.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/adversarial.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/attractor_drift.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/attractor_drift.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/attractor_drift.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/attractor_drift.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/coherence.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/coherence.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/coherence.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/coherence.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/coherence_gate.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/coherence_gate.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/coherence_gate.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/coherence_gate.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/cross_room.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/cross_room.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/cross_room.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/cross_room.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/field_model.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/field_model.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/field_model.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/field_model.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/gesture.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/gesture.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/gesture.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/gesture.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/intention.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/intention.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/intention.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/intention.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/longitudinal.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/longitudinal.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/longitudinal.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/longitudinal.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/mod.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/mod.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/multiband.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/multiband.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/multiband.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/multiband.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/multistatic.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/multistatic.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/multistatic.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/multistatic.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/phase_align.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/phase_align.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/phase_align.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/phase_align.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/pose_tracker.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/pose_tracker.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/pose_tracker.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/pose_tracker.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/temporal_gesture.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/temporal_gesture.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/temporal_gesture.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/temporal_gesture.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/tomography.rs b/v2/crates/wifi-densepose-signal/src/ruvsense/tomography.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/ruvsense/tomography.rs rename to v2/crates/wifi-densepose-signal/src/ruvsense/tomography.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/spectrogram.rs b/v2/crates/wifi-densepose-signal/src/spectrogram.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/spectrogram.rs rename to v2/crates/wifi-densepose-signal/src/spectrogram.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/subcarrier_selection.rs b/v2/crates/wifi-densepose-signal/src/subcarrier_selection.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/src/subcarrier_selection.rs rename to v2/crates/wifi-densepose-signal/src/subcarrier_selection.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/tests/validation_test.rs b/v2/crates/wifi-densepose-signal/tests/validation_test.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-signal/tests/validation_test.rs rename to v2/crates/wifi-densepose-signal/tests/validation_test.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/Cargo.toml b/v2/crates/wifi-densepose-train/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/Cargo.toml rename to v2/crates/wifi-densepose-train/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/README.md b/v2/crates/wifi-densepose-train/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/README.md rename to v2/crates/wifi-densepose-train/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/benches/training_bench.rs b/v2/crates/wifi-densepose-train/benches/training_bench.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/benches/training_bench.rs rename to v2/crates/wifi-densepose-train/benches/training_bench.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/bin/train.rs b/v2/crates/wifi-densepose-train/src/bin/train.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/bin/train.rs rename to v2/crates/wifi-densepose-train/src/bin/train.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/bin/verify_training.rs b/v2/crates/wifi-densepose-train/src/bin/verify_training.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/bin/verify_training.rs rename to v2/crates/wifi-densepose-train/src/bin/verify_training.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/config.rs b/v2/crates/wifi-densepose-train/src/config.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/config.rs rename to v2/crates/wifi-densepose-train/src/config.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/dataset.rs b/v2/crates/wifi-densepose-train/src/dataset.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/dataset.rs rename to v2/crates/wifi-densepose-train/src/dataset.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/domain.rs b/v2/crates/wifi-densepose-train/src/domain.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/domain.rs rename to v2/crates/wifi-densepose-train/src/domain.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/error.rs b/v2/crates/wifi-densepose-train/src/error.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/error.rs rename to v2/crates/wifi-densepose-train/src/error.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/eval.rs b/v2/crates/wifi-densepose-train/src/eval.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/eval.rs rename to v2/crates/wifi-densepose-train/src/eval.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/geometry.rs b/v2/crates/wifi-densepose-train/src/geometry.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/geometry.rs rename to v2/crates/wifi-densepose-train/src/geometry.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/lib.rs b/v2/crates/wifi-densepose-train/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/lib.rs rename to v2/crates/wifi-densepose-train/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/losses.rs b/v2/crates/wifi-densepose-train/src/losses.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/losses.rs rename to v2/crates/wifi-densepose-train/src/losses.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/metrics.rs b/v2/crates/wifi-densepose-train/src/metrics.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/metrics.rs rename to v2/crates/wifi-densepose-train/src/metrics.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/model.rs b/v2/crates/wifi-densepose-train/src/model.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/model.rs rename to v2/crates/wifi-densepose-train/src/model.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/proof.rs b/v2/crates/wifi-densepose-train/src/proof.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/proof.rs rename to v2/crates/wifi-densepose-train/src/proof.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/rapid_adapt.rs b/v2/crates/wifi-densepose-train/src/rapid_adapt.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/rapid_adapt.rs rename to v2/crates/wifi-densepose-train/src/rapid_adapt.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/ruview_metrics.rs b/v2/crates/wifi-densepose-train/src/ruview_metrics.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/ruview_metrics.rs rename to v2/crates/wifi-densepose-train/src/ruview_metrics.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/subcarrier.rs b/v2/crates/wifi-densepose-train/src/subcarrier.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/subcarrier.rs rename to v2/crates/wifi-densepose-train/src/subcarrier.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/trainer.rs b/v2/crates/wifi-densepose-train/src/trainer.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/trainer.rs rename to v2/crates/wifi-densepose-train/src/trainer.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/virtual_aug.rs b/v2/crates/wifi-densepose-train/src/virtual_aug.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/src/virtual_aug.rs rename to v2/crates/wifi-densepose-train/src/virtual_aug.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/tests/test_config.rs b/v2/crates/wifi-densepose-train/tests/test_config.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/tests/test_config.rs rename to v2/crates/wifi-densepose-train/tests/test_config.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/tests/test_dataset.rs b/v2/crates/wifi-densepose-train/tests/test_dataset.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/tests/test_dataset.rs rename to v2/crates/wifi-densepose-train/tests/test_dataset.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/tests/test_losses.rs b/v2/crates/wifi-densepose-train/tests/test_losses.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/tests/test_losses.rs rename to v2/crates/wifi-densepose-train/tests/test_losses.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/tests/test_metrics.rs b/v2/crates/wifi-densepose-train/tests/test_metrics.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/tests/test_metrics.rs rename to v2/crates/wifi-densepose-train/tests/test_metrics.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/tests/test_proof.rs b/v2/crates/wifi-densepose-train/tests/test_proof.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/tests/test_proof.rs rename to v2/crates/wifi-densepose-train/tests/test_proof.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-train/tests/test_subcarrier.rs b/v2/crates/wifi-densepose-train/tests/test_subcarrier.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-train/tests/test_subcarrier.rs rename to v2/crates/wifi-densepose-train/tests/test_subcarrier.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/Cargo.toml b/v2/crates/wifi-densepose-vitals/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/Cargo.toml rename to v2/crates/wifi-densepose-vitals/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/README.md b/v2/crates/wifi-densepose-vitals/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/README.md rename to v2/crates/wifi-densepose-vitals/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/anomaly.rs b/v2/crates/wifi-densepose-vitals/src/anomaly.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/anomaly.rs rename to v2/crates/wifi-densepose-vitals/src/anomaly.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/breathing.rs b/v2/crates/wifi-densepose-vitals/src/breathing.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/breathing.rs rename to v2/crates/wifi-densepose-vitals/src/breathing.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/heartrate.rs b/v2/crates/wifi-densepose-vitals/src/heartrate.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/heartrate.rs rename to v2/crates/wifi-densepose-vitals/src/heartrate.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/lib.rs b/v2/crates/wifi-densepose-vitals/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/lib.rs rename to v2/crates/wifi-densepose-vitals/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/preprocessor.rs b/v2/crates/wifi-densepose-vitals/src/preprocessor.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/preprocessor.rs rename to v2/crates/wifi-densepose-vitals/src/preprocessor.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/store.rs b/v2/crates/wifi-densepose-vitals/src/store.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/store.rs rename to v2/crates/wifi-densepose-vitals/src/store.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/types.rs b/v2/crates/wifi-densepose-vitals/src/types.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-vitals/src/types.rs rename to v2/crates/wifi-densepose-vitals/src/types.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/.cargo/config.toml b/v2/crates/wifi-densepose-wasm-edge/.cargo/config.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/.cargo/config.toml rename to v2/crates/wifi-densepose-wasm-edge/.cargo/config.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/.claude-flow/.trend-cache.json b/v2/crates/wifi-densepose-wasm-edge/.claude-flow/.trend-cache.json similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/.claude-flow/.trend-cache.json rename to v2/crates/wifi-densepose-wasm-edge/.claude-flow/.trend-cache.json diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/Cargo.lock b/v2/crates/wifi-densepose-wasm-edge/Cargo.lock similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/Cargo.lock rename to v2/crates/wifi-densepose-wasm-edge/Cargo.lock diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/Cargo.toml b/v2/crates/wifi-densepose-wasm-edge/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/Cargo.toml rename to v2/crates/wifi-densepose-wasm-edge/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/adversarial.rs b/v2/crates/wifi-densepose-wasm-edge/src/adversarial.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/adversarial.rs rename to v2/crates/wifi-densepose-wasm-edge/src/adversarial.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ais_behavioral_profiler.rs b/v2/crates/wifi-densepose-wasm-edge/src/ais_behavioral_profiler.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ais_behavioral_profiler.rs rename to v2/crates/wifi-densepose-wasm-edge/src/ais_behavioral_profiler.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ais_prompt_shield.rs b/v2/crates/wifi-densepose-wasm-edge/src/ais_prompt_shield.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ais_prompt_shield.rs rename to v2/crates/wifi-densepose-wasm-edge/src/ais_prompt_shield.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/aut_psycho_symbolic.rs b/v2/crates/wifi-densepose-wasm-edge/src/aut_psycho_symbolic.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/aut_psycho_symbolic.rs rename to v2/crates/wifi-densepose-wasm-edge/src/aut_psycho_symbolic.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/aut_self_healing_mesh.rs b/v2/crates/wifi-densepose-wasm-edge/src/aut_self_healing_mesh.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/aut_self_healing_mesh.rs rename to v2/crates/wifi-densepose-wasm-edge/src/aut_self_healing_mesh.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bin/ghost_hunter.rs b/v2/crates/wifi-densepose-wasm-edge/src/bin/ghost_hunter.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bin/ghost_hunter.rs rename to v2/crates/wifi-densepose-wasm-edge/src/bin/ghost_hunter.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_elevator_count.rs b/v2/crates/wifi-densepose-wasm-edge/src/bld_elevator_count.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_elevator_count.rs rename to v2/crates/wifi-densepose-wasm-edge/src/bld_elevator_count.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_energy_audit.rs b/v2/crates/wifi-densepose-wasm-edge/src/bld_energy_audit.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_energy_audit.rs rename to v2/crates/wifi-densepose-wasm-edge/src/bld_energy_audit.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_hvac_presence.rs b/v2/crates/wifi-densepose-wasm-edge/src/bld_hvac_presence.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_hvac_presence.rs rename to v2/crates/wifi-densepose-wasm-edge/src/bld_hvac_presence.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_lighting_zones.rs b/v2/crates/wifi-densepose-wasm-edge/src/bld_lighting_zones.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_lighting_zones.rs rename to v2/crates/wifi-densepose-wasm-edge/src/bld_lighting_zones.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_meeting_room.rs b/v2/crates/wifi-densepose-wasm-edge/src/bld_meeting_room.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/bld_meeting_room.rs rename to v2/crates/wifi-densepose-wasm-edge/src/bld_meeting_room.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/coherence.rs b/v2/crates/wifi-densepose-wasm-edge/src/coherence.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/coherence.rs rename to v2/crates/wifi-densepose-wasm-edge/src/coherence.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_breathing_sync.rs b/v2/crates/wifi-densepose-wasm-edge/src/exo_breathing_sync.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_breathing_sync.rs rename to v2/crates/wifi-densepose-wasm-edge/src/exo_breathing_sync.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_dream_stage.rs b/v2/crates/wifi-densepose-wasm-edge/src/exo_dream_stage.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_dream_stage.rs rename to v2/crates/wifi-densepose-wasm-edge/src/exo_dream_stage.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_emotion_detect.rs b/v2/crates/wifi-densepose-wasm-edge/src/exo_emotion_detect.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_emotion_detect.rs rename to v2/crates/wifi-densepose-wasm-edge/src/exo_emotion_detect.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_gesture_language.rs b/v2/crates/wifi-densepose-wasm-edge/src/exo_gesture_language.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_gesture_language.rs rename to v2/crates/wifi-densepose-wasm-edge/src/exo_gesture_language.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_ghost_hunter.rs b/v2/crates/wifi-densepose-wasm-edge/src/exo_ghost_hunter.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_ghost_hunter.rs rename to v2/crates/wifi-densepose-wasm-edge/src/exo_ghost_hunter.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_happiness_score.rs b/v2/crates/wifi-densepose-wasm-edge/src/exo_happiness_score.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_happiness_score.rs rename to v2/crates/wifi-densepose-wasm-edge/src/exo_happiness_score.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_hyperbolic_space.rs b/v2/crates/wifi-densepose-wasm-edge/src/exo_hyperbolic_space.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_hyperbolic_space.rs rename to v2/crates/wifi-densepose-wasm-edge/src/exo_hyperbolic_space.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_music_conductor.rs b/v2/crates/wifi-densepose-wasm-edge/src/exo_music_conductor.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_music_conductor.rs rename to v2/crates/wifi-densepose-wasm-edge/src/exo_music_conductor.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_plant_growth.rs b/v2/crates/wifi-densepose-wasm-edge/src/exo_plant_growth.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_plant_growth.rs rename to v2/crates/wifi-densepose-wasm-edge/src/exo_plant_growth.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_rain_detect.rs b/v2/crates/wifi-densepose-wasm-edge/src/exo_rain_detect.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_rain_detect.rs rename to v2/crates/wifi-densepose-wasm-edge/src/exo_rain_detect.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_time_crystal.rs b/v2/crates/wifi-densepose-wasm-edge/src/exo_time_crystal.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/exo_time_crystal.rs rename to v2/crates/wifi-densepose-wasm-edge/src/exo_time_crystal.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/gesture.rs b/v2/crates/wifi-densepose-wasm-edge/src/gesture.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/gesture.rs rename to v2/crates/wifi-densepose-wasm-edge/src/gesture.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_clean_room.rs b/v2/crates/wifi-densepose-wasm-edge/src/ind_clean_room.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_clean_room.rs rename to v2/crates/wifi-densepose-wasm-edge/src/ind_clean_room.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_confined_space.rs b/v2/crates/wifi-densepose-wasm-edge/src/ind_confined_space.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_confined_space.rs rename to v2/crates/wifi-densepose-wasm-edge/src/ind_confined_space.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_forklift_proximity.rs b/v2/crates/wifi-densepose-wasm-edge/src/ind_forklift_proximity.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_forklift_proximity.rs rename to v2/crates/wifi-densepose-wasm-edge/src/ind_forklift_proximity.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_livestock_monitor.rs b/v2/crates/wifi-densepose-wasm-edge/src/ind_livestock_monitor.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_livestock_monitor.rs rename to v2/crates/wifi-densepose-wasm-edge/src/ind_livestock_monitor.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_structural_vibration.rs b/v2/crates/wifi-densepose-wasm-edge/src/ind_structural_vibration.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ind_structural_vibration.rs rename to v2/crates/wifi-densepose-wasm-edge/src/ind_structural_vibration.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/intrusion.rs b/v2/crates/wifi-densepose-wasm-edge/src/intrusion.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/intrusion.rs rename to v2/crates/wifi-densepose-wasm-edge/src/intrusion.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lib.rs b/v2/crates/wifi-densepose-wasm-edge/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lib.rs rename to v2/crates/wifi-densepose-wasm-edge/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_anomaly_attractor.rs b/v2/crates/wifi-densepose-wasm-edge/src/lrn_anomaly_attractor.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_anomaly_attractor.rs rename to v2/crates/wifi-densepose-wasm-edge/src/lrn_anomaly_attractor.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_dtw_gesture_learn.rs b/v2/crates/wifi-densepose-wasm-edge/src/lrn_dtw_gesture_learn.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_dtw_gesture_learn.rs rename to v2/crates/wifi-densepose-wasm-edge/src/lrn_dtw_gesture_learn.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_ewc_lifelong.rs b/v2/crates/wifi-densepose-wasm-edge/src/lrn_ewc_lifelong.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_ewc_lifelong.rs rename to v2/crates/wifi-densepose-wasm-edge/src/lrn_ewc_lifelong.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_meta_adapt.rs b/v2/crates/wifi-densepose-wasm-edge/src/lrn_meta_adapt.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/lrn_meta_adapt.rs rename to v2/crates/wifi-densepose-wasm-edge/src/lrn_meta_adapt.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_cardiac_arrhythmia.rs b/v2/crates/wifi-densepose-wasm-edge/src/med_cardiac_arrhythmia.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_cardiac_arrhythmia.rs rename to v2/crates/wifi-densepose-wasm-edge/src/med_cardiac_arrhythmia.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_gait_analysis.rs b/v2/crates/wifi-densepose-wasm-edge/src/med_gait_analysis.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_gait_analysis.rs rename to v2/crates/wifi-densepose-wasm-edge/src/med_gait_analysis.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_respiratory_distress.rs b/v2/crates/wifi-densepose-wasm-edge/src/med_respiratory_distress.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_respiratory_distress.rs rename to v2/crates/wifi-densepose-wasm-edge/src/med_respiratory_distress.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_seizure_detect.rs b/v2/crates/wifi-densepose-wasm-edge/src/med_seizure_detect.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_seizure_detect.rs rename to v2/crates/wifi-densepose-wasm-edge/src/med_seizure_detect.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_sleep_apnea.rs b/v2/crates/wifi-densepose-wasm-edge/src/med_sleep_apnea.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/med_sleep_apnea.rs rename to v2/crates/wifi-densepose-wasm-edge/src/med_sleep_apnea.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/occupancy.rs b/v2/crates/wifi-densepose-wasm-edge/src/occupancy.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/occupancy.rs rename to v2/crates/wifi-densepose-wasm-edge/src/occupancy.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/qnt_interference_search.rs b/v2/crates/wifi-densepose-wasm-edge/src/qnt_interference_search.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/qnt_interference_search.rs rename to v2/crates/wifi-densepose-wasm-edge/src/qnt_interference_search.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/qnt_quantum_coherence.rs b/v2/crates/wifi-densepose-wasm-edge/src/qnt_quantum_coherence.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/qnt_quantum_coherence.rs rename to v2/crates/wifi-densepose-wasm-edge/src/qnt_quantum_coherence.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_customer_flow.rs b/v2/crates/wifi-densepose-wasm-edge/src/ret_customer_flow.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_customer_flow.rs rename to v2/crates/wifi-densepose-wasm-edge/src/ret_customer_flow.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_dwell_heatmap.rs b/v2/crates/wifi-densepose-wasm-edge/src/ret_dwell_heatmap.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_dwell_heatmap.rs rename to v2/crates/wifi-densepose-wasm-edge/src/ret_dwell_heatmap.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_queue_length.rs b/v2/crates/wifi-densepose-wasm-edge/src/ret_queue_length.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_queue_length.rs rename to v2/crates/wifi-densepose-wasm-edge/src/ret_queue_length.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_shelf_engagement.rs b/v2/crates/wifi-densepose-wasm-edge/src/ret_shelf_engagement.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_shelf_engagement.rs rename to v2/crates/wifi-densepose-wasm-edge/src/ret_shelf_engagement.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_table_turnover.rs b/v2/crates/wifi-densepose-wasm-edge/src/ret_table_turnover.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/ret_table_turnover.rs rename to v2/crates/wifi-densepose-wasm-edge/src/ret_table_turnover.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/rvf.rs b/v2/crates/wifi-densepose-wasm-edge/src/rvf.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/rvf.rs rename to v2/crates/wifi-densepose-wasm-edge/src/rvf.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_loitering.rs b/v2/crates/wifi-densepose-wasm-edge/src/sec_loitering.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_loitering.rs rename to v2/crates/wifi-densepose-wasm-edge/src/sec_loitering.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_panic_motion.rs b/v2/crates/wifi-densepose-wasm-edge/src/sec_panic_motion.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_panic_motion.rs rename to v2/crates/wifi-densepose-wasm-edge/src/sec_panic_motion.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_perimeter_breach.rs b/v2/crates/wifi-densepose-wasm-edge/src/sec_perimeter_breach.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_perimeter_breach.rs rename to v2/crates/wifi-densepose-wasm-edge/src/sec_perimeter_breach.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_tailgating.rs b/v2/crates/wifi-densepose-wasm-edge/src/sec_tailgating.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_tailgating.rs rename to v2/crates/wifi-densepose-wasm-edge/src/sec_tailgating.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_weapon_detect.rs b/v2/crates/wifi-densepose-wasm-edge/src/sec_weapon_detect.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sec_weapon_detect.rs rename to v2/crates/wifi-densepose-wasm-edge/src/sec_weapon_detect.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_coherence_gate.rs b/v2/crates/wifi-densepose-wasm-edge/src/sig_coherence_gate.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_coherence_gate.rs rename to v2/crates/wifi-densepose-wasm-edge/src/sig_coherence_gate.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_flash_attention.rs b/v2/crates/wifi-densepose-wasm-edge/src/sig_flash_attention.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_flash_attention.rs rename to v2/crates/wifi-densepose-wasm-edge/src/sig_flash_attention.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_mincut_person_match.rs b/v2/crates/wifi-densepose-wasm-edge/src/sig_mincut_person_match.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_mincut_person_match.rs rename to v2/crates/wifi-densepose-wasm-edge/src/sig_mincut_person_match.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_optimal_transport.rs b/v2/crates/wifi-densepose-wasm-edge/src/sig_optimal_transport.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_optimal_transport.rs rename to v2/crates/wifi-densepose-wasm-edge/src/sig_optimal_transport.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_sparse_recovery.rs b/v2/crates/wifi-densepose-wasm-edge/src/sig_sparse_recovery.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_sparse_recovery.rs rename to v2/crates/wifi-densepose-wasm-edge/src/sig_sparse_recovery.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_temporal_compress.rs b/v2/crates/wifi-densepose-wasm-edge/src/sig_temporal_compress.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/sig_temporal_compress.rs rename to v2/crates/wifi-densepose-wasm-edge/src/sig_temporal_compress.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/spt_micro_hnsw.rs b/v2/crates/wifi-densepose-wasm-edge/src/spt_micro_hnsw.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/spt_micro_hnsw.rs rename to v2/crates/wifi-densepose-wasm-edge/src/spt_micro_hnsw.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/spt_pagerank_influence.rs b/v2/crates/wifi-densepose-wasm-edge/src/spt_pagerank_influence.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/spt_pagerank_influence.rs rename to v2/crates/wifi-densepose-wasm-edge/src/spt_pagerank_influence.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/spt_spiking_tracker.rs b/v2/crates/wifi-densepose-wasm-edge/src/spt_spiking_tracker.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/spt_spiking_tracker.rs rename to v2/crates/wifi-densepose-wasm-edge/src/spt_spiking_tracker.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/tmp_goap_autonomy.rs b/v2/crates/wifi-densepose-wasm-edge/src/tmp_goap_autonomy.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/tmp_goap_autonomy.rs rename to v2/crates/wifi-densepose-wasm-edge/src/tmp_goap_autonomy.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/tmp_pattern_sequence.rs b/v2/crates/wifi-densepose-wasm-edge/src/tmp_pattern_sequence.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/tmp_pattern_sequence.rs rename to v2/crates/wifi-densepose-wasm-edge/src/tmp_pattern_sequence.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/tmp_temporal_logic_guard.rs b/v2/crates/wifi-densepose-wasm-edge/src/tmp_temporal_logic_guard.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/tmp_temporal_logic_guard.rs rename to v2/crates/wifi-densepose-wasm-edge/src/tmp_temporal_logic_guard.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/vendor_common.rs b/v2/crates/wifi-densepose-wasm-edge/src/vendor_common.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/vendor_common.rs rename to v2/crates/wifi-densepose-wasm-edge/src/vendor_common.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/vital_trend.rs b/v2/crates/wifi-densepose-wasm-edge/src/vital_trend.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/src/vital_trend.rs rename to v2/crates/wifi-densepose-wasm-edge/src/vital_trend.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/tests/budget_compliance.rs b/v2/crates/wifi-densepose-wasm-edge/tests/budget_compliance.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/tests/budget_compliance.rs rename to v2/crates/wifi-densepose-wasm-edge/tests/budget_compliance.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/tests/vendor_modules_bench.rs b/v2/crates/wifi-densepose-wasm-edge/tests/vendor_modules_bench.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/tests/vendor_modules_bench.rs rename to v2/crates/wifi-densepose-wasm-edge/tests/vendor_modules_bench.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/tests/vendor_modules_test.rs b/v2/crates/wifi-densepose-wasm-edge/tests/vendor_modules_test.rs similarity index 99% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/tests/vendor_modules_test.rs rename to v2/crates/wifi-densepose-wasm-edge/tests/vendor_modules_test.rs index f727f641e..085a0b6ab 100644 --- a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm-edge/tests/vendor_modules_test.rs +++ b/v2/crates/wifi-densepose-wasm-edge/tests/vendor_modules_test.rs @@ -4,7 +4,7 @@ //! for each module. At least 3 tests per module = 72+ tests total. //! //! Run with: -//! cd rust-port/wifi-densepose-rs +//! cd v2 //! cargo test -p wifi-densepose-wasm-edge --features std -- --nocapture // ============================================================================ diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm/Cargo.toml b/v2/crates/wifi-densepose-wasm/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm/Cargo.toml rename to v2/crates/wifi-densepose-wasm/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm/README.md b/v2/crates/wifi-densepose-wasm/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm/README.md rename to v2/crates/wifi-densepose-wasm/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm/src/lib.rs b/v2/crates/wifi-densepose-wasm/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm/src/lib.rs rename to v2/crates/wifi-densepose-wasm/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm/src/mat.rs b/v2/crates/wifi-densepose-wasm/src/mat.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wasm/src/mat.rs rename to v2/crates/wifi-densepose-wasm/src/mat.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/Cargo.toml b/v2/crates/wifi-densepose-wifiscan/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/Cargo.toml rename to v2/crates/wifi-densepose-wifiscan/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/README.md b/v2/crates/wifi-densepose-wifiscan/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/README.md rename to v2/crates/wifi-densepose-wifiscan/README.md diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/adapter/linux_scanner.rs b/v2/crates/wifi-densepose-wifiscan/src/adapter/linux_scanner.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/adapter/linux_scanner.rs rename to v2/crates/wifi-densepose-wifiscan/src/adapter/linux_scanner.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/adapter/macos_scanner.rs b/v2/crates/wifi-densepose-wifiscan/src/adapter/macos_scanner.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/adapter/macos_scanner.rs rename to v2/crates/wifi-densepose-wifiscan/src/adapter/macos_scanner.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/adapter/mod.rs b/v2/crates/wifi-densepose-wifiscan/src/adapter/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/adapter/mod.rs rename to v2/crates/wifi-densepose-wifiscan/src/adapter/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/adapter/netsh_scanner.rs b/v2/crates/wifi-densepose-wifiscan/src/adapter/netsh_scanner.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/adapter/netsh_scanner.rs rename to v2/crates/wifi-densepose-wifiscan/src/adapter/netsh_scanner.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/adapter/wlanapi_scanner.rs b/v2/crates/wifi-densepose-wifiscan/src/adapter/wlanapi_scanner.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/adapter/wlanapi_scanner.rs rename to v2/crates/wifi-densepose-wifiscan/src/adapter/wlanapi_scanner.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/domain/bssid.rs b/v2/crates/wifi-densepose-wifiscan/src/domain/bssid.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/domain/bssid.rs rename to v2/crates/wifi-densepose-wifiscan/src/domain/bssid.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/domain/frame.rs b/v2/crates/wifi-densepose-wifiscan/src/domain/frame.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/domain/frame.rs rename to v2/crates/wifi-densepose-wifiscan/src/domain/frame.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/domain/mod.rs b/v2/crates/wifi-densepose-wifiscan/src/domain/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/domain/mod.rs rename to v2/crates/wifi-densepose-wifiscan/src/domain/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/domain/registry.rs b/v2/crates/wifi-densepose-wifiscan/src/domain/registry.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/domain/registry.rs rename to v2/crates/wifi-densepose-wifiscan/src/domain/registry.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/domain/result.rs b/v2/crates/wifi-densepose-wifiscan/src/domain/result.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/domain/result.rs rename to v2/crates/wifi-densepose-wifiscan/src/domain/result.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/error.rs b/v2/crates/wifi-densepose-wifiscan/src/error.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/error.rs rename to v2/crates/wifi-densepose-wifiscan/src/error.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/lib.rs b/v2/crates/wifi-densepose-wifiscan/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/lib.rs rename to v2/crates/wifi-densepose-wifiscan/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/attention_weighter.rs b/v2/crates/wifi-densepose-wifiscan/src/pipeline/attention_weighter.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/attention_weighter.rs rename to v2/crates/wifi-densepose-wifiscan/src/pipeline/attention_weighter.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/breathing_extractor.rs b/v2/crates/wifi-densepose-wifiscan/src/pipeline/breathing_extractor.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/breathing_extractor.rs rename to v2/crates/wifi-densepose-wifiscan/src/pipeline/breathing_extractor.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/correlator.rs b/v2/crates/wifi-densepose-wifiscan/src/pipeline/correlator.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/correlator.rs rename to v2/crates/wifi-densepose-wifiscan/src/pipeline/correlator.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/fingerprint_matcher.rs b/v2/crates/wifi-densepose-wifiscan/src/pipeline/fingerprint_matcher.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/fingerprint_matcher.rs rename to v2/crates/wifi-densepose-wifiscan/src/pipeline/fingerprint_matcher.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/mod.rs b/v2/crates/wifi-densepose-wifiscan/src/pipeline/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/mod.rs rename to v2/crates/wifi-densepose-wifiscan/src/pipeline/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/motion_estimator.rs b/v2/crates/wifi-densepose-wifiscan/src/pipeline/motion_estimator.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/motion_estimator.rs rename to v2/crates/wifi-densepose-wifiscan/src/pipeline/motion_estimator.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/orchestrator.rs b/v2/crates/wifi-densepose-wifiscan/src/pipeline/orchestrator.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/orchestrator.rs rename to v2/crates/wifi-densepose-wifiscan/src/pipeline/orchestrator.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/predictive_gate.rs b/v2/crates/wifi-densepose-wifiscan/src/pipeline/predictive_gate.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/predictive_gate.rs rename to v2/crates/wifi-densepose-wifiscan/src/pipeline/predictive_gate.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/quality_gate.rs b/v2/crates/wifi-densepose-wifiscan/src/pipeline/quality_gate.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/pipeline/quality_gate.rs rename to v2/crates/wifi-densepose-wifiscan/src/pipeline/quality_gate.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/port/mod.rs b/v2/crates/wifi-densepose-wifiscan/src/port/mod.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/port/mod.rs rename to v2/crates/wifi-densepose-wifiscan/src/port/mod.rs diff --git a/rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/port/scan_port.rs b/v2/crates/wifi-densepose-wifiscan/src/port/scan_port.rs similarity index 100% rename from rust-port/wifi-densepose-rs/crates/wifi-densepose-wifiscan/src/port/scan_port.rs rename to v2/crates/wifi-densepose-wifiscan/src/port/scan_port.rs diff --git a/rust-port/wifi-densepose-rs/data/adaptive_model.json b/v2/data/adaptive_model.json similarity index 100% rename from rust-port/wifi-densepose-rs/data/adaptive_model.json rename to v2/data/adaptive_model.json diff --git a/rust-port/wifi-densepose-rs/data/recordings/rec_1772470567081-20260302_165607.csi.jsonl b/v2/data/recordings/rec_1772470567081-20260302_165607.csi.jsonl similarity index 100% rename from rust-port/wifi-densepose-rs/data/recordings/rec_1772470567081-20260302_165607.csi.jsonl rename to v2/data/recordings/rec_1772470567081-20260302_165607.csi.jsonl diff --git a/rust-port/wifi-densepose-rs/data/recordings/rec_1772470567081-20260302_165607.csi.meta.json b/v2/data/recordings/rec_1772470567081-20260302_165607.csi.meta.json similarity index 100% rename from rust-port/wifi-densepose-rs/data/recordings/rec_1772470567081-20260302_165607.csi.meta.json rename to v2/data/recordings/rec_1772470567081-20260302_165607.csi.meta.json diff --git a/rust-port/wifi-densepose-rs/data/recordings/rec_1772472968919-20260302_173608.csi.jsonl b/v2/data/recordings/rec_1772472968919-20260302_173608.csi.jsonl similarity index 100% rename from rust-port/wifi-densepose-rs/data/recordings/rec_1772472968919-20260302_173608.csi.jsonl rename to v2/data/recordings/rec_1772472968919-20260302_173608.csi.jsonl diff --git a/rust-port/wifi-densepose-rs/docs/adr/ADR-001-workspace-structure.md b/v2/docs/adr/ADR-001-workspace-structure.md similarity index 100% rename from rust-port/wifi-densepose-rs/docs/adr/ADR-001-workspace-structure.md rename to v2/docs/adr/ADR-001-workspace-structure.md diff --git a/rust-port/wifi-densepose-rs/docs/adr/ADR-002-signal-processing.md b/v2/docs/adr/ADR-002-signal-processing.md similarity index 100% rename from rust-port/wifi-densepose-rs/docs/adr/ADR-002-signal-processing.md rename to v2/docs/adr/ADR-002-signal-processing.md diff --git a/rust-port/wifi-densepose-rs/docs/adr/ADR-003-neural-network-inference.md b/v2/docs/adr/ADR-003-neural-network-inference.md similarity index 100% rename from rust-port/wifi-densepose-rs/docs/adr/ADR-003-neural-network-inference.md rename to v2/docs/adr/ADR-003-neural-network-inference.md diff --git a/rust-port/wifi-densepose-rs/docs/ddd/README.md b/v2/docs/ddd/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/docs/ddd/README.md rename to v2/docs/ddd/README.md diff --git a/rust-port/wifi-densepose-rs/docs/ddd/aggregates.md b/v2/docs/ddd/aggregates.md similarity index 100% rename from rust-port/wifi-densepose-rs/docs/ddd/aggregates.md rename to v2/docs/ddd/aggregates.md diff --git a/rust-port/wifi-densepose-rs/docs/ddd/bounded-contexts.md b/v2/docs/ddd/bounded-contexts.md similarity index 100% rename from rust-port/wifi-densepose-rs/docs/ddd/bounded-contexts.md rename to v2/docs/ddd/bounded-contexts.md diff --git a/rust-port/wifi-densepose-rs/docs/ddd/domain-events.md b/v2/docs/ddd/domain-events.md similarity index 100% rename from rust-port/wifi-densepose-rs/docs/ddd/domain-events.md rename to v2/docs/ddd/domain-events.md diff --git a/rust-port/wifi-densepose-rs/docs/ddd/domain-model.md b/v2/docs/ddd/domain-model.md similarity index 100% rename from rust-port/wifi-densepose-rs/docs/ddd/domain-model.md rename to v2/docs/ddd/domain-model.md diff --git a/rust-port/wifi-densepose-rs/docs/ddd/ubiquitous-language.md b/v2/docs/ddd/ubiquitous-language.md similarity index 100% rename from rust-port/wifi-densepose-rs/docs/ddd/ubiquitous-language.md rename to v2/docs/ddd/ubiquitous-language.md diff --git a/rust-port/wifi-densepose-rs/examples/mat-dashboard.html b/v2/examples/mat-dashboard.html similarity index 100% rename from rust-port/wifi-densepose-rs/examples/mat-dashboard.html rename to v2/examples/mat-dashboard.html diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/Cargo.lock b/v2/patches/ruvector-crv/Cargo.lock similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/Cargo.lock rename to v2/patches/ruvector-crv/Cargo.lock diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/Cargo.toml b/v2/patches/ruvector-crv/Cargo.toml similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/Cargo.toml rename to v2/patches/ruvector-crv/Cargo.toml diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/Cargo.toml.orig b/v2/patches/ruvector-crv/Cargo.toml.orig similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/Cargo.toml.orig rename to v2/patches/ruvector-crv/Cargo.toml.orig diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/README.md b/v2/patches/ruvector-crv/README.md similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/README.md rename to v2/patches/ruvector-crv/README.md diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/src/error.rs b/v2/patches/ruvector-crv/src/error.rs similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/src/error.rs rename to v2/patches/ruvector-crv/src/error.rs diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/src/lib.rs b/v2/patches/ruvector-crv/src/lib.rs similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/src/lib.rs rename to v2/patches/ruvector-crv/src/lib.rs diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/src/session.rs b/v2/patches/ruvector-crv/src/session.rs similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/src/session.rs rename to v2/patches/ruvector-crv/src/session.rs diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/src/stage_i.rs b/v2/patches/ruvector-crv/src/stage_i.rs similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/src/stage_i.rs rename to v2/patches/ruvector-crv/src/stage_i.rs diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/src/stage_ii.rs b/v2/patches/ruvector-crv/src/stage_ii.rs similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/src/stage_ii.rs rename to v2/patches/ruvector-crv/src/stage_ii.rs diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/src/stage_iii.rs b/v2/patches/ruvector-crv/src/stage_iii.rs similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/src/stage_iii.rs rename to v2/patches/ruvector-crv/src/stage_iii.rs diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/src/stage_iv.rs b/v2/patches/ruvector-crv/src/stage_iv.rs similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/src/stage_iv.rs rename to v2/patches/ruvector-crv/src/stage_iv.rs diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/src/stage_v.rs b/v2/patches/ruvector-crv/src/stage_v.rs similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/src/stage_v.rs rename to v2/patches/ruvector-crv/src/stage_v.rs diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/src/stage_vi.rs b/v2/patches/ruvector-crv/src/stage_vi.rs similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/src/stage_vi.rs rename to v2/patches/ruvector-crv/src/stage_vi.rs diff --git a/rust-port/wifi-densepose-rs/patches/ruvector-crv/src/types.rs b/v2/patches/ruvector-crv/src/types.rs similarity index 100% rename from rust-port/wifi-densepose-rs/patches/ruvector-crv/src/types.rs rename to v2/patches/ruvector-crv/src/types.rs