wifi-densepose/v2/crates/wifi-densepose-cli
ruv 8504638187 feat(signal): ADR-135 — empty-room baseline calibration
Operator-initiated calibration that records 30 s of stationary CSI,
emits a per-subcarrier baseline (amplitude mean+variance via Welford,
phase via circular sin/cos sums with von Mises dispersion), and gates
downstream stages on a deviation z-score. Plugs into multistatic
coherence gating, motion/presence detection, and the new ADR-134 CIR
estimator as a reference-subtracted input.

API surface (under wifi_densepose_signal):
  CalibrationConfig::{ht20, ht40, he20, he40}
  CalibrationRecorder { record(), finalize(), frames_recorded() }
  BaselineCalibration {
    subcarriers: Vec<SubcarrierBaseline>,
    deviation(&CsiFrame), subtract_in_place(&mut CsiFrame),
    to_bytes(), from_bytes()
  }
  CalibrationDeviationScore { amplitude_z_median, amplitude_z_max,
                              phase_drift_median, motion_flagged }
  CalibrationError { SubcarrierMismatch, TierMismatch,
                     InsufficientFrames, VersionMismatch, TruncatedBuffer }

Binary baseline format: magic 0xCA1B_0001 + u8 version=1 + u8 tier +
captured_at_unix_s (i64) + frame_count (u64) + num_subcarriers (u32) +
[SubcarrierBaseline; N] as 16 bytes each (amp_mean, amp_variance,
phase_mean, phase_dispersion as f32 LE). Hand-written serialisation so
the format is stable across Rust toolchain versions without serde drift.

CLI: new `wifi-densepose calibrate` subcommand binds a UDP listener
(0xC511_0001 frames), streams them through CalibrationRecorder, prints
a real-time z-score banner per ADR-135 §risk 1 (operator-may-be-moving),
aborts on sustained high deviation, and writes the binary baseline to
disk. Local UDP packet parser duplicated from sensing-server (per ADR
discussion — avoids cross-crate API churn).

Witness: cross-platform-deterministic SHA-256 over the per-subcarrier
quantised baseline profile (u16 LE at 1e-2/1e-4/1e-3, no sort) using
the lesson learnt from the CIR PR #837 libm-jitter fix. Hash:
d6bce07ecb1648e6936561df44bf4a3bfc17bb0ba5f692646b2301d105b52f67

CI guard: new "ADR-135 calibration witness proof (determinism guard)"
step under the Rust Workspace Tests job, adjacent to the existing
ADR-134 CIR guard. Regressions are unambiguously attributable.

Hardware-in-loop validation: full 600-frame capture exercised via the
new scripts/synth-csi-udp.py emitter targeting 127.0.0.1:5005. The CLI
binary received 600 frames at 20 Hz, z_med stable at ~0.7, motion
correctly NOT flagged, finalised baseline written to baseline.bin (860
bytes) with correct magic + version + timestamp in the header. Live
ESP32 capture from COM9 is operator follow-up — requires provisioning
the firmware's UDP target IP to match the host running the CLI.

Test results (cargo test -p wifi-densepose-signal --no-default-features):
  lib:                    382 pass / 0 fail / 1 ignored
  calibration_synthetic:   17 pass / 0 fail
  calibration_drift:        5 pass / 0 fail
  calibration_roundtrip:   10 pass / 0 fail
  cir_*:                    9 pass + 6 documented P2 ignores
  doctest:                 10 pass

Bench: 20 Criterion combinations registered
(recorder_record / recorder_finalize / deviation / record_600 /
to_bytes across HT20/HT40/HE20/HE40 tiers).

Witness: bash scripts/verify-calibration-proof.sh → VERDICT: PASS

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-05-28 18:57:08 -04:00
..
src feat(signal): ADR-135 — empty-room baseline calibration 2026-05-28 18:57:08 -04:00
Cargo.toml feat(signal): ADR-135 — empty-room baseline calibration 2026-05-28 18:57:08 -04:00
README.md chore(repo): rename rust-port/wifi-densepose-rs → v2/ (flatten to one level) (#427) 2026-04-25 21:28:13 -04:00

README.md

wifi-densepose-cli

Crates.io Documentation License

Command-line interface for WiFi-DensePose, including the Mass Casualty Assessment Tool (MAT) for disaster response operations.

Overview

wifi-densepose-cli ships the wifi-densepose binary -- a single entry point for operating the WiFi-DensePose system from the terminal. The primary command group is mat, which drives the disaster survivor detection and triage workflow powered by the wifi-densepose-mat crate.

Built with clap for argument parsing, tabled + colored for rich terminal output, and indicatif for progress bars during scans.

Features

  • Survivor scanning -- Start continuous or one-shot scans across disaster zones with configurable sensitivity, depth, and disaster type.
  • Triage management -- List detected survivors sorted by triage priority (Immediate / Delayed / Minor / Deceased / Unknown) with filtering and output format options.
  • Alert handling -- View, acknowledge, resolve, and escalate alerts generated by the detection pipeline.
  • Zone management -- Add, remove, pause, and resume rectangular or circular scan zones.
  • Data export -- Export scan results to JSON or CSV for integration with external USAR systems.
  • Simulation mode -- Run demo scans with synthetic detections (--simulate) for testing and training without hardware.
  • Multiple output formats -- Table, JSON, and compact single-line output for scripting.

Feature flags

Flag Default Description
mat yes Enable MAT disaster detection commands

Quick Start

# Install
cargo install wifi-densepose-cli

# Run a simulated disaster scan
wifi-densepose mat scan --disaster-type earthquake --sensitivity 0.8 --simulate

# Check system status
wifi-densepose mat status

# List detected survivors (sorted by triage priority)
wifi-densepose mat survivors --sort-by triage

# View pending alerts
wifi-densepose mat alerts --pending

# Manage scan zones
wifi-densepose mat zones add --name "Building A" --bounds 0,0,100,80
wifi-densepose mat zones list --active

# Export results to JSON
wifi-densepose mat export --output results.json --format json

# Show version
wifi-densepose version

Command Reference

wifi-densepose
  mat
    scan        Start scanning for survivors
    status      Show current scan status
    zones       Manage scan zones (list, add, remove, pause, resume)
    survivors   List detected survivors with triage status
    alerts      View and manage alerts (list, ack, resolve, escalate)
    export      Export scan data to JSON or CSV
  version       Display version information
Crate Role
wifi-densepose-mat MAT disaster detection engine
wifi-densepose-core Shared types and traits
wifi-densepose-signal CSI signal processing
wifi-densepose-hardware ESP32 hardware interfaces
wifi-densepose-wasm Browser-based MAT dashboard

License

MIT OR Apache-2.0