Asking the fleet what it is doing…
monad-knowledge Wi-Fi sensing lab · FIIT STU
Campaign session

01KVX0WCD5SXYQDSTJZ77Q1ANT

finished 2026-06-24 14:34:54.757458+00:00 → 2026-06-24 14:44:13.433799+00:00 · 30 runs · supervisor: none

“Claim 2's enabling premise is partially met in sim: the co-registered BLE anchor robustly resolves occupancy PRESENCE (empty vs occupied, d=2.3-3.7, noise-robust) in the seated regime where temporal CSI collapses, but the response saturates after first occupants — coarse presence yes, graded headcount no. Motivation only, not proof. H1 NOT bumped (stays supported on literature weight); H2 stays plausible.”

Archive snapshot, as of 1 day ago — the run corpus is rebuilt once a day, so this page is not a live reading. The fleet panel is the live one; it refreshes every 30 s.

Success criteria

CriterionResolved
Every run emits BOTH channels from the SAME solved CFR — links.parquet/csi.hdf5 and ble_links.parquet (co-registered, no second RT pass) — with ble_enabled true; no NaN/Inf. yes
The BLE anchor carries occupancy in the static (seated-crowd proxy) regime: pooled mean rssi_dbm decreases monotonically with N (Spearman ρ(N, mean RSSI) ≤ −0.6 at 2.4 GHz, per seed). no
Discriminability under the synthetic event noise is quantified, not asserted: minimum resolvable occupancy step ΔN at effect size d ≥ 1 after event-averaging, and how it degrades at noise_db = 4.0 (and 6.0) — a sensitivity table, not an accuracy claim. yes

Synthesis

c-ble-csi-coregistration — session 01KVX0WCD5SXYQDSTJZ77Q1ANT (2026-06-24)

Framing discipline (carried from the brief): this is in-silico motivation for ble-periodic-calibration, not a hypothesis test. The BLE event noise is a self-authored Gaussian (σ = ble.noise_db); any accuracy headline against it would be circular. Deliverable = an honest sensitivity table. 30 runs on the static through-wall rig (seated-crowd proxy): main grid N∈{0,2,4,6,8,12} × seed∈{0,1,2} @ noise 2.0 dB (18) + noise arm {4.0,6.0 dB} × N∈{0,6,12} × seed∈{0,1} (12).

Verdict: the enabling premise is partially met — presence, not graded count. In the static/seated regime where the temporal CSI feature provably collapses (c-csi-crowd-temporal, seated CV ≈ 1e-6), the co-registered BLE/RSSI anchor robustly separates an occupied room from an empty one, but its blockage response saturates after the first occupants and does not scale monotonically with headcount in this multiroom layout.

Criterion 1 — both channels from one CFR — ✅

All 30 runs emitted links.parquet/csi.hdf5 and ble_links.parquet (5 Rx links × 24 placement events) from the same solved CFR with ble.enabled: true; every file read with no NaN/Inf. BLE/CSI co-registration by construction confirmed.

Criterion 2 — pooled mean RSSI monotone decreasing, ρ ≤ −0.6 per seed — ❌ (not uniformly)

Baseline-normalised (per-link empty-room subtracted, to remove the ≈4 dB cross-link path-loss offset) Spearman ρ(N, ΔRSSI) per seed @ noise 2.0: seed0 = −0.83, seed1 = −0.66, seed2 = −0.09. Two of three seeds meet ≤ −0.6; seed2 is broken by a single low-N placement realization (a body landing in a strong-blockage spot at N=2). More importantly, the shape is not a clean graded monotone decrease — it is an empty→occupied step (ΔRSSI ≈ −1 to −2 dB) followed by a saturated plateau (N=6 and N=12 ΔRSSI within ~0.2 dB). So the literal criterion is not met; the anchor does not encode graded count here.

Criterion 3 — resolvable-ΔN sensitivity table + noise degradation — ✅ (deliverable produced; honest reading)

Effect size d = |Δ mean ΔRSSI| / SE after event-averaging (M ≈ 120 events/level). The table cleanly separates two regimes:

comparison d @ noise 2.0 reading
empty → occupied (0→any N) 2.32 – 3.70 presence strongly resolvable
within-occupied, ΔN=2 (2→4, 4→6, 6→8) 0.43 – 0.77 graded count not resolvable
within-occupied, ΔN=4–6 0.19 – 1.02 marginal at best

Noise degradation of the presence step: d(empty→first) = 2.32 @ 2.0 dB → 1.81 @ 4.0 dB → 1.54 @ 6.0 dB — presence stays resolvable (d>1) even at 6 dB event noise; the min graded resolvable ΔN coarsens from the 0→2 presence step (ΔN=2) to ΔN=6 as noise grows. The ~6–12 dB pooled per-event σ (right figure panel) is dominated by cross-link + placement spread, not the self-authored measurement noise, and is the budget the occupancy term must clear.

Tie-back (per the diary guardrails)

  • This does establish the enabling premise in the honest sense the talk needs: where temporal CSI starves (seated regime), a co-registered BLE anchor still tells you the room is occupied — robustly and noise-tolerantly. That is the in-silico motivation for a periodic BLE anchor.
  • It does not show graded headcount from the anchor in this geometry. This lands between the brief's interpretation #1 (informative) and #2 (needs link-geometry rework): informative for presence, needs anchor-placement-near-occupant-zones / per-link calibration before it could support finer counting.
  • ble-ground-truth-sufficiency (H1) stays supported on literature weight — NOT bumped on this synthetic evidence (the noise is self-authored; the real bar is multi-week hardware penetration-ratio capture on ≥2 sites). ble-periodic-calibration (H2) stays plausible. The "✓ done in sim" badge for Claim 2 should read "enabling premise (presence) shown in sim; graded counting + H1 penetration ratio remain the field bar."

Reduction notebook monad_knowledge/notebooks/python/csi_ble_coregistration.py (new, this session — per-link baseline-normalised); artefacts fig_csi_ble_coregistration.png + csi_ble_coregistration.metrics.json under the session prefix. 30 source runs attached.

Attached runs

Run Gate Purpose Replay
WKN0MK9E arm_n0_s0_noise4.0
Z7FH1Q1D main_n8_s2_noise2.0
J1MPEPF2 main_n2_s0_noise2.0
0R2G6ME6 arm_n0_s0_noise6.0
95CRHYJ3 arm_n0_s1_noise4.0
RG3HSDZ2 main_n2_s1_noise2.0
1PHTFMAG arm_n0_s1_noise6.0
8314A7TR main_n0_s2_noise2.0
TEZ8GNKB main_n4_s0_noise2.0
BH21JM0T arm_n6_s0_noise6.0
8SNN4Z2K main_n12_s0_noise2.0
8TEJYMGW arm_n6_s0_noise4.0
1V76XCG8 main_n12_s1_noise2.0
MH0S61BX main_n4_s1_noise2.0
DNQ60Y1N arm_n6_s1_noise6.0
DVVHKGTC main_n6_s2_noise2.0
AKEQ5RSK arm_n6_s1_noise4.0
DWTQG6R5 main_n6_s0_noise2.0
ZK0FM16G main_n6_s1_noise2.0
VGKTS5RW main_n4_s2_noise2.0
EQ336TYZ main_n12_s2_noise2.0
TKR9WK7S arm_n12_s0_noise4.0
ACSHA8CQ main_n0_s0_noise2.0
159M58QC arm_n12_s0_noise6.0
88N9NBEE main_n8_s1_noise2.0
CA2FCQ1K arm_n12_s1_noise4.0
1YEQCC1W main_n8_s0_noise2.0
F08QFY0N main_n0_s1_noise2.0
CYC7BE14 arm_n12_s1_noise6.0
HX2T1Z9S main_n2_s2_noise2.0