diff --git a/docs/adr/ADR-100-gain-lock-baseline-stabilization.md b/docs/adr/ADR-100-gain-lock-baseline-stabilization.md index f4d3fdc2..c38861c4 100644 --- a/docs/adr/ADR-100-gain-lock-baseline-stabilization.md +++ b/docs/adr/ADR-100-gain-lock-baseline-stabilization.md @@ -7,7 +7,7 @@ ## Context -After ADR-099 deployed the TP-Link WISP AP and the operator captured three +After ADR-110 deployed the TP-Link WISP AP and the operator captured three controlled one-minute windows (empty / sit / walk), the RSSI MAD-Δ classifier failed to separate the three states — measured `d` values overlapped within ±0.03 of 0.49 while in-state spread was ±0.10. We @@ -59,9 +59,9 @@ that it short-circuits. Tagged as ADR-100 in the source comment for traceability. -### D2 — Use the existing `raw.html` console (ADR-099, D2 reuse) as the verification UI +### D2 — Use the existing `raw.html` console (ADR-110, D2 reuse) as the verification UI -The console added in ADR-099 already streams `nodes[].amplitude` from +The console added in ADR-110 already streams `nodes[].amplitude` from the existing WebSocket. No server-side change was needed. The HTML displays a per-node bar histogram of all 56 active subcarriers plus broadband mean amplitude and RSSI traces over the last 30 s. This is @@ -75,7 +75,7 @@ A controlled three-state capture made on 2026-05-17 with both sensors positioned so that the line `TP-Link AP → sensor` passes through the operator (lying on the bed) confirmed both decisions. The summary table appears under *Verified Acceptance* below. Earlier captures -(ADR-099) failed to separate states partly because the sensors were +(ADR-110) failed to separate states partly because the sensors were placed off-axis from the AP-to-body line; with that geometry the body never physically obstructs the CSI channel. @@ -114,7 +114,7 @@ Observations: ladder 2.71 → 3.70 → 12.50 % is a second independent feature. * **Node 2 separates STILL+EMPTY from WALK** by CV (5 → 30 %). Its geometry doesn't pick up a still body, only motion. -* **Compare to ADR-099** where empty/sit/walk differed by ±0.02 inside +* **Compare to ADR-110** where empty/sit/walk differed by ±0.02 inside ±0.10 noise — we now have inter-state separation ratios of **×3.4 on node 1 and ×5.9 on node 2**. The signal is no longer dominated by baseline drift. @@ -123,7 +123,7 @@ Observations: ``` firmware/esp32-csi-node/main/csi_collector.c # gain-lock module + hook -v2/crates/wifi-densepose-sensing-server/static/raw.html # already from ADR-099 +v2/crates/wifi-densepose-sensing-server/static/raw.html # already from ADR-110 docs/adr/ADR-100-gain-lock-baseline-stabilization.md # this ADR ``` @@ -145,8 +145,8 @@ docs/adr/ADR-100-gain-lock-baseline-stabilization.md # this ADR * ADR-039 — Edge intelligence pipeline (host DSP path). * ADR-098 — Earlier ESP32-S3 deployment fixes. -* ADR-099 — TP-Link WISP deployment + first RSSI-Δ attempt (this ADR - supersedes the threshold table in ADR-099, D3 — the RSSI MAD-Δ +* ADR-110 — TP-Link WISP deployment + first RSSI-Δ attempt (this ADR + supersedes the threshold table in ADR-110, D3 — the RSSI MAD-Δ detector is left in place but no longer the primary signal). * Francesco Pace, *How I Turned My Wi-Fi Into a Motion Sensor — Part 2*, Dec 2025 — source of the gain-lock recipe. diff --git a/docs/adr/ADR-101-raw-amplitude-classifier.md b/docs/adr/ADR-101-raw-amplitude-classifier.md index 44d27261..a08911e4 100644 --- a/docs/adr/ADR-101-raw-amplitude-classifier.md +++ b/docs/adr/ADR-101-raw-amplitude-classifier.md @@ -11,7 +11,7 @@ After ADR-100 the AGC drift is gone and the broadband baseline is clean. Before this ADR the live `classification.motion_level` was being driven by the legacy DSP (variance + motion_band_power thresholds) plus an -RSSI MAD-Δ override from ADR-099. Both failed on the operator's +RSSI MAD-Δ override from ADR-110. Both failed on the operator's deployment: variance overlaps empty/sit/walk within noise, and RSSI MAD-Δ overlaps within ±0.03 of 0.49 across all three states. The operator could lie still in the path between AP and sensor and the @@ -123,7 +123,7 @@ v2/crates/wifi-densepose-sensing-server/static/raw.html # per-node badges Cross-state separation ratio = 3.4× on node 1 broadband mean, 5.9× on node 2 CV, compared to ±0.02 inside ±0.10 noise with the old -RSSI MAD-Δ classifier from ADR-099. +RSSI MAD-Δ classifier from ADR-110. ## Open Items @@ -138,7 +138,7 @@ RSSI MAD-Δ classifier from ADR-099. ## References -* ADR-099 — first RSSI MAD-Δ attempt (superseded for `motion_level` / +* ADR-110 — first RSSI MAD-Δ attempt (superseded for `motion_level` / `presence` / `confidence`; helper kept as `#[allow(dead_code)]`). * ADR-100 — gain lock that makes this classifier possible. * ADR-102 — NBVI subcarrier selection that drives the CV computation. diff --git a/docs/adr/ADR-099-tplink-wisp-deployment-and-rssi-presence.md b/docs/adr/ADR-110-tplink-wisp-deployment-and-rssi-presence.md similarity index 98% rename from docs/adr/ADR-099-tplink-wisp-deployment-and-rssi-presence.md rename to docs/adr/ADR-110-tplink-wisp-deployment-and-rssi-presence.md index 73e280af..02bdac5f 100644 --- a/docs/adr/ADR-099-tplink-wisp-deployment-and-rssi-presence.md +++ b/docs/adr/ADR-110-tplink-wisp-deployment-and-rssi-presence.md @@ -1,4 +1,4 @@ -# ADR-099 — TP-Link WISP Deployment + RSSI-Δ Presence Detector +# ADR-110 — TP-Link WISP Deployment + RSSI-Δ Presence Detector **Status**: Accepted **Date**: 2026-05-15 @@ -123,7 +123,7 @@ operator capture those next two states. v2/crates/wifi-densepose-sensing-server/src/main.rs # RSSI MAD-Δ + override v2/crates/wifi-densepose-sensing-server/static/spectrum.html # live console v2/crates/wifi-densepose-sensing-server/static/calibrate.html # peak-tracker view -docs/adr/ADR-099-tplink-wisp-deployment-and-rssi-presence.md # this ADR +docs/adr/ADR-110-tplink-wisp-deployment-and-rssi-presence.md # this ADR ``` ## Verified Acceptance