Agents completed three of seven ADR-017 integration points:
1. subcarrier_selection.rs — ruvector-mincut: mincut_subcarrier_partition
partitions subcarriers into (sensitive, insensitive) groups using
DynamicMinCut. O(n^1.5 log n) amortized vs O(n log n) static sort.
Includes test: mincut_partition_separates_high_low.
2. spectrogram.rs — ruvector-attn-mincut: gate_spectrogram applies
self-attention (Q=K=V) over STFT time frames to suppress noise and
multipath interference frames. Configurable lambda gating strength.
Includes tests: preserves shape, finite values.
3. bvp.rs — ruvector-attention stub added (in progress by agent).
4. Cargo.toml — added ruvector-mincut, ruvector-attn-mincut,
ruvector-temporal-tensor, ruvector-solver, ruvector-attention
as workspace deps in wifi-densepose-signal crate.
Cargo.lock updated for new dependencies.
Remaining ADR-017 integrations (fresnel.rs, MAT crate) still in
progress via background agents.
https://claude.ai/code/session_01BSBAQJ34SLkiJy4A8SoiL4
Records the decision to use MM-Fi as primary training dataset and XRF55
as secondary, with a teacher-student pipeline for generating DensePose
UV pseudo-labels from paired RGB frames.
https://claude.ai/code/session_01BSBAQJ34SLkiJy4A8SoiL4
- install.sh: 7-step interactive installer detecting system, toolchains,
WiFi hardware (interfaces, ESP32 USB, Intel CSI debug), and recommending
the best build profile (verify/python/rust/browser/iot/docker/field/full)
- Rust is the primary recommended runtime (810x faster than Python)
- Makefile: 15+ targets including make install, make check, make build-rust,
make build-wasm, make bench, make run-api, make run-viz
- README: Updated installation section with Rust-primary ordering, removed
mock testing references, added v2.2.0 changelog entry
https://claude.ai/code/session_01Ki7pvEZtJDvqJkmyn6B714
Optimization:
- Cache mean phase per frame in ring buffer for O(1) Doppler access
- Sliding window (last 64 frames) instead of full history traversal
- Doppler FFT: 253.9us -> 44.9us per frame (5.7x faster)
- Full pipeline: 719.2us -> 254.2us per frame (2.8x faster)
Trust kill switch:
- ./verify: one-command proof replay with SHA-256 hash verification
- Enhanced verify.py with source provenance, feature inspection, --audit
- Makefile with verify/verify-verbose/verify-audit targets
- New hash: 0b82bd45e836e5a99db0494cda7795832dda0bb0a88dac65a2bab0e949950ee0
Benchmark fix:
- NN inference_bench.rs uses MockBackend instead of calling forward()
which now correctly errors when no weights are loaded
https://claude.ai/code/session_01Ki7pvEZtJDvqJkmyn6B714
Add viz.html as the main entry point that loads Three.js from CDN and
orchestrates all visualization components (scene, body model, signal
viz, environment, HUD). Add data-processor.js that transforms API
WebSocket messages into geometry updates and provides demo mode with
pre-recorded pose cycling when the server is unavailable.
https://claude.ai/code/session_01Ki7pvEZtJDvqJkmyn6B714
Add prominent hardware requirements table at top of README documenting
the three paths to real CSI data (ESP32, research NIC, commodity WiFi).
Include remaining Three.js visualization components for dashboard.
https://claude.ai/code/session_01Ki7pvEZtJDvqJkmyn6B714
Add comprehensive test suite (36 tests) for the ADR-013 commodity sensing
module covering all components: RingBuffer, SimulatedCollector determinism,
feature extraction (time-domain stats, FFT spectral analysis, band power
isolation), CUSUM change-point detection, presence/motion classification,
and end-to-end CommodityBackend pipeline.
Fix feature_extractor.py: add missing _trim_to_window method that caused
AttributeError on the WifiSample extraction path, add post-trim sample
count guard, and handle constant-signal edge case in skewness/kurtosis
computation to prevent scipy RuntimeWarning.
https://claude.ai/code/session_01Ki7pvEZtJDvqJkmyn6B714
The configure_csi_collection method was still referencing the old
mock_data_generator dict directly instead of delegating to the
MockCSIGenerator instance from the testing module. This completes the
ADR-011 mock isolation by ensuring all mock CSI configuration flows
through v1/src/testing/mock_csi_generator.py.
https://claude.ai/code/session_01Ki7pvEZtJDvqJkmyn6B714
- .github/workflows/verify-pipeline.yml: CI that verifies pipeline
determinism and checks for np.random in production code
- ui/components/body-model.js: Three.js 3D human body model with
24 DensePose body parts mapped to 3D geometry
- v1/requirements-lock.txt: Minimal pinned dependencies for verification
- v1/src/api/dependencies.py: Fix mock auth returns with proper errors
- v1/src/core/router_interface.py: Additional mock mode cleanup
- v1/src/services/pose_service.py: Further mock elimination in service
https://claude.ai/code/session_01Ki7pvEZtJDvqJkmyn6B714
Commodity Sensing Module (ADR-013):
- sensing/rssi_collector.py: Real Linux WiFi RSSI collection from
/proc/net/wireless and iw commands, with SimulatedCollector for testing
- sensing/feature_extractor.py: FFT-based spectral analysis, CUSUM
change-point detection, breathing/motion band power extraction
- sensing/classifier.py: Rule-based presence/motion classification
with confidence scoring and multi-receiver agreement
- sensing/backend.py: Common SensingBackend protocol with honest
capability reporting (PRESENCE + MOTION only for commodity)
Proof of Reality Bundle (ADR-011):
- data/proof/generate_reference_signal.py: Deterministic synthetic CSI
with known breathing (0.3 Hz) and walking (1.2 Hz) signals
- data/proof/sample_csi_data.json: Generated reference signal
- data/proof/verify.py: One-command pipeline verification with SHA-256
- data/proof/expected_features.sha256: Expected output hash
Three.js Visualization:
- ui/components/scene.js: 3D scene setup with OrbitControls
Mock Isolation:
- testing/mock_pose_generator.py: Mock pose generation moved out of
production pose_service.py
- services/pose_service.py: Cleaned mock paths
https://claude.ai/code/session_01Ki7pvEZtJDvqJkmyn6B714
- core/router_interface.py: Replace placeholder _collect_real_csi_data()
with explicit RuntimeError directing users to hardware setup docs
- hardware/router_interface.py: Replace np.random.rand() in
_parse_csi_response() with RouterConnectionError requiring real parser
- testing/: New isolated module for mock data generation (moved out of
production code paths per ADR-011)
- sensing/: Initialize commodity sensing module (ADR-013)
No production code path returns random data. Mock mode requires explicit
opt-in via WIFI_DENSEPOSE_MOCK=true environment variable.
https://claude.ai/code/session_01Ki7pvEZtJDvqJkmyn6B714
- csi_processor.py: Replace np.random.rand(10) Doppler placeholder with
real temporal phase-difference FFT extraction from CSI history buffer.
Returns zeros (not random) when insufficient history frames available.
- csi_extractor.py: Replace np.random.rand() fallbacks in ESP32 and
Atheros parsers with proper data parsing (ESP32) and explicit error
raising (Atheros). Add CSIExtractionError for clear failure reporting
instead of silent random data substitution.
These are the two most critical mock eliminations identified in ADR-011.
https://claude.ai/code/session_01Ki7pvEZtJDvqJkmyn6B714