wifi-densepose/examples/research-sota
rUv 50a7c4a645
research(R12.1): pose-PABS closed loop — 9.36x intruder lift; R12 arc fully closed (#732)
Closes the deferred item from R12 PABS (tick 19): 'real production
needs pose-aware forward model updating in real-time'. R12.1 implements
the closed loop in synthetic form.

Method: 50-frame walking subject + intruder entering at T=25. Compare
two PABS pipelines:
(a) Fixed-expected (R12 PABS naive)
(b) Pose-updated (R12.1 closed loop, 5 cm pose noise matching ADR-079
    ~95% PCK@20 quality)

Results:

| Phase                | Fixed-expected | Pose-updated |
|----------------------|---------------:|-------------:|
| Pre-intruder (walking)|         6.02   |        0.30  |
| Post-intruder        |         7.76   |        2.84  |
| Intruder lift        |         1.29x  |        9.36x |

Pose updates suppress subject-motion noise by 20x (6.02 -> 0.30),
leaving the intruder as a clean 9.36x spike. False-alarm problem
from R12 PABS RESOLVED.

R12 thread fully closed (3 ticks):
- R12 (tick 5):    NEGATIVE  SVD eigenshift 0.69x signal/drift
- R12 PABS (19):   POSITIVE  1161x intruder detection (static)
- R12.1 (this):    CLOSED    9.36x intruder detection (dynamic)

Failure -> success with caveat -> success without caveat. The
multi-tick arc that justifies a long research loop.

Production roadmap (~80 LOC + 30 LOC plumbing):
  let pose = pose_tracker.estimate(csi_window)?;
  let expected_scene = body_model.from_pose(pose) + room_walls;
  let y_predicted = fresnel_forward.simulate(expected_scene);
  let pabs = (csi_window - y_predicted).norm_sq() / csi_window.norm_sq();
  if pabs > threshold { emit_structure_event(); }

Slot into existing vital_signs cog per-frame inference path.

Composes:
- R6.1 forward operator
- R7 mincut per-link PABS-after-pose-update = precise multi-link
  consistency quantity
- R14 V0 security feature (intruder detection) shippable
- R10/R11 wildlife/maritime variants need their own body models
- ADR-079/101 pose pipeline = critical path
- ADR-105/106/107/108 fully on-device

Honest scope:
- 5 cm pose noise matches ADR-079; worse without good signal
- Continuous-time tracking assumed (revert to baseline on failure)
- Single subject (multi-subject = data association work)
- Static walls (re-baselining needed for furniture changes)
- Synthetic data only; real CSI bench validation pending

Coordination: ticks/tick-29.md, no PROGRESS.md edit.

After this tick, all research-loop work substantively complete:
- 13 research threads (R1, R3, R5-R15)
- 4 ADRs in privacy chain (105, 106, 107, 108)
- 3 negative-result categories
- 2 explicit self-corrections
- 3 honest-scope findings
- 9-tick R6 placement family
- 3-tick R3 cross-room re-ID arc
- 3-tick R12 structure detection arc
2026-05-22 05:56:57 -04:00
..
r1_toa_crlb.py research(R1): ToA CRLB — precision floor for WiFi multistatic localisation (#711) 2026-05-22 01:38:35 -04:00
r1_toa_crlb_results.json research(R1): ToA CRLB — precision floor for WiFi multistatic localisation (#711) 2026-05-22 01:38:35 -04:00
r3_1_physics_env_results.json research(R3.1): physics-informed env prediction at raw-CSI level — NEGATIVE (architecture-error) (#723) 2026-05-22 04:04:38 -04:00
r3_1_physics_informed_env.py research(R3.1): physics-informed env prediction at raw-CSI level — NEGATIVE (architecture-error) (#723) 2026-05-22 04:04:38 -04:00
r3_2_embedding_physics_env.py research(R3.2): embedding-level physics-informed env — structural validation + AETHER dependency (#729) 2026-05-22 05:24:53 -04:00
r3_2_embedding_results.json research(R3.2): embedding-level physics-informed env — structural validation + AETHER dependency (#729) 2026-05-22 05:24:53 -04:00
r3_crossroom_reid.py research(R3): cross-room re-ID — MERIDIAN closes the env-shift gap + 4 privacy constraints (#715) 2026-05-22 02:13:10 -04:00
r3_reid_results.json research(R3): cross-room re-ID — MERIDIAN closes the env-shift gap + 4 privacy constraints (#715) 2026-05-22 02:13:10 -04:00
r5_subcarrier_saliency.py research(sota): kick off SOTA research loop + first R5 saliency measurement (#702) 2026-05-21 23:05:55 -04:00
r6_1_multiscatterer.py research(R6.1): multi-scatterer Fresnel — discovers 4.7 dB penalty matching R13's 5-dB shortfall (#721) 2026-05-22 03:36:42 -04:00
r6_1_multiscatterer_results.json research(R6.1): multi-scatterer Fresnel — discovers 4.7 dB penalty matching R13's 5-dB shortfall (#721) 2026-05-22 03:36:42 -04:00
r6_2_1_3d_placement.py research(R6.2.1): 3D antenna placement — ceiling-only gives 0% coverage; mixed-height wins (#724) 2026-05-22 04:17:47 -04:00
r6_2_1_3d_results.json research(R6.2.1): 3D antenna placement — ceiling-only gives 0% coverage; mixed-height wins (#724) 2026-05-22 04:17:47 -04:00
r6_2_2_1_3d_multistatic.py research(R6.2.2.1): 3D N-anchor multistatic — 2D knee disappears; revises R6.2.2 down (#727) 2026-05-22 04:58:10 -04:00
r6_2_2_1_3d_multistatic_results.json research(R6.2.2.1): 3D N-anchor multistatic — 2D knee disappears; revises R6.2.2 down (#727) 2026-05-22 04:58:10 -04:00
r6_2_2_multistatic_placement.py research(R6.2.2): N-anchor multistatic placement saturation — practical knee at N=5 (#720) 2026-05-22 03:17:14 -04:00
r6_2_2_multistatic_results.json research(R6.2.2): N-anchor multistatic placement saturation — practical knee at N=5 (#720) 2026-05-22 03:17:14 -04:00
r6_2_3_chest_centric.py research(R6.2.3): chest-centric placement — +26.9 pp coverage gain for vital-signs cogs (#726) 2026-05-22 04:43:34 -04:00
r6_2_3_chest_centric_results.json research(R6.2.3): chest-centric placement — +26.9 pp coverage gain for vital-signs cogs (#726) 2026-05-22 04:43:34 -04:00
r6_2_4_3d_chest_multistatic.py research(R6.2.4): 3D chest-centric N-anchor — validates R6.2.2.1 prediction with refinement (#728) 2026-05-22 05:12:48 -04:00
r6_2_4_3d_chest_results.json research(R6.2.4): 3D chest-centric N-anchor — validates R6.2.2.1 prediction with refinement (#728) 2026-05-22 05:12:48 -04:00
r6_2_5_multi_subject.py research(R6.2.5): multi-subject occupancy union — N=5 hits 100% for 4 occupants; R6 family complete (#730) 2026-05-22 05:37:29 -04:00
r6_2_5_multi_subject_results.json research(R6.2.5): multi-subject occupancy union — N=5 hits 100% for 4 occupants; R6 family complete (#730) 2026-05-22 05:37:29 -04:00
r6_2_antenna_placement.py research(R6.2): Fresnel-aware antenna placement — 93x sensing-coverage lift from physics alone (#719) 2026-05-22 03:04:17 -04:00
r6_2_placement_results.json research(R6.2): Fresnel-aware antenna placement — 93x sensing-coverage lift from physics alone (#719) 2026-05-22 03:04:17 -04:00
r6_fresnel_results.json research(R6): Fresnel-zone forward model — bedrock physics for CSI sensitivity (#710) 2026-05-22 01:31:09 -04:00
r6_fresnel_zone.py research(R6): Fresnel-zone forward model — bedrock physics for CSI sensitivity (#710) 2026-05-22 01:31:09 -04:00
r7_multilink_consistency.py research(R7): Stoer-Wagner mincut detects adversarial CSI nodes 3/3 in synthetic (#704) 2026-05-21 23:28:46 -04:00
r7_multilink_consistency_results.json research(R7): Stoer-Wagner mincut detects adversarial CSI nodes 3/3 in synthetic (#704) 2026-05-21 23:28:46 -04:00
r8_rssi_only_count.py research(R8): RSSI-only person count retains 95% of full-CSI accuracy (#703) 2026-05-21 23:18:09 -04:00
r8_rssi_only_results.json research(R8): RSSI-only person count retains 95% of full-CSI accuracy (#703) 2026-05-21 23:18:09 -04:00
r9_rssi_fingerprint_knn.py feat(tools/ruview-mcp): M2 — wire real inference via cog health (#706) 2026-05-21 23:43:32 -04:00
r9_rssi_fingerprint_results.json feat(tools/ruview-mcp): M2 — wire real inference via cog health (#706) 2026-05-21 23:43:32 -04:00
r10_foliage_attenuation.py research(R10): through-foliage wildlife sensing — physics feasibility + per-species gait taxonomy 2026-05-22 00:59:11 -04:00
r10_foliage_results.json research(R10): through-foliage wildlife sensing — physics feasibility + per-species gait taxonomy 2026-05-22 00:59:11 -04:00
r11_maritime_propagation.py research(R11): maritime sensing — through-bulkhead impossible, through-seam works (#712) 2026-05-22 01:53:51 -04:00
r11_maritime_results.json research(R11): maritime sensing — through-bulkhead impossible, through-seam works (#712) 2026-05-22 01:53:51 -04:00
r12_1_pose_pabs_loop.py research(R12.1): pose-PABS closed loop — 9.36x intruder lift; R12 arc fully closed (#732) 2026-05-22 05:56:57 -04:00
r12_1_pose_pabs_results.json research(R12.1): pose-PABS closed loop — 9.36x intruder lift; R12 arc fully closed (#732) 2026-05-22 05:56:57 -04:00
r12_pabs_implementation.py research(R12 PABS): NEGATIVE -> POSITIVE — 1161x detection lift via R6.1 forward model (#722) 2026-05-22 03:49:41 -04:00
r12_pabs_results.json research(R12 PABS): NEGATIVE -> POSITIVE — 1161x detection lift via R6.1 forward model (#722) 2026-05-22 03:49:41 -04:00
r12_rf_weather_eigenshift.py research(R12): RF weather mapping eigenshift — negative-ish, with clearly-actionable revision path (#707) 2026-05-21 23:52:49 -04:00
r12_rf_weather_results.json research(R12): RF weather mapping eigenshift — negative-ish, with clearly-actionable revision path (#707) 2026-05-21 23:52:49 -04:00
r13_bp_physics_floor.py research(R13): NEGATIVE — contactless BP from CSI is physically inferior to a cuff (#713) 2026-05-22 02:00:35 -04:00
r13_bp_results.json research(R13): NEGATIVE — contactless BP from CSI is physically inferior to a cuff (#713) 2026-05-22 02:00:35 -04:00