Asking the fleet what it is doing…
monad-knowledge Wi-Fi sensing lab · FIIT STU
Instrument · what the count rests on

What the headcount is made of.

The app on the previous page prints one number per minute. This page opens the back of the instrument and shows what that number rests on: every measured day on one clock, the four ways of computing a level and how often they agree, the minutes with a known headcount the count map passes through, what an empty floor reads night by night, how often each rule would have cried wolf on a night nobody was there, which receivers raise alarms alone, whether the phones in the room move with the radio reading, and whether a warm node reads differently from a cool one.

In plain words Like a thermostat's chart for a house, but for people: a calendar of the days the fleet listened, a twenty-four-hour curve for the day you pick, and a headcount for each minute with the range the instrument can honestly give. A gap in the curve is a gap; nobody fills it with a zero.

Method for the level panels: Envelope, our transmitter only · Doppler 20–60 Hz, our transmitter only · Delivered-rate collapse · Envelope, every transmitter

Every measured day, on one clock

Per day, for env_inj: minutes captured, minutes the fleet could score (three or more receivers with a floor), and minutes whose most likely bucket was occupied or high.
Day Captured min Scored min Occupied+ min Span
2026-08-26 151 151 61 13:31–21:01 library time
2026-08-28 61 0 0 00:13–01:13 library time
2026-08-29 122 62 22 12:32–15:02 library time
2026-08-31 61 31 18 14:54–15:54 library time
2026-09-01 327 327 199 10:48–16:14 library time
2026-09-02 611 611 276 10:43–23:59 library time
2026-09-03 652 652 131 00:00–23:59 library time
2026-09-04 879 879 60 00:00–21:44 library time
2026-09-05 533 533 88 04:45–20:34 library time
2026-09-06 583 582 176 02:13–23:59 library time
2026-09-07 645 645 50 00:00–23:59 library time
2026-09-08 500 500 23 00:00–23:59 library time
2026-09-09 712 712 32 00:00–21:44 library time
2026-09-10 277 0 0 05:24–10:00 library time

How the four methods agree

Scope: every day pooled · 2026-08-26 · 2026-08-28 · 2026-08-29 · 2026-08-31 · 2026-09-01 · 2026-09-02 · 2026-09-03 · 2026-09-04 · 2026-09-05 · 2026-09-06 · 2026-09-07 · 2026-09-08 · 2026-09-09 · 2026-09-10

Agreement on the fleet bucket, 2026-09-09. κ of 1 is perfect agreement, 0 is chance, below 0 is systematic disagreement.
Method A Method B Minutes both scored Same bucket Cohen's κ
doppler_inj env_pooled 712 70 % 0.27
doppler_inj rate_inj 712 75 % 0.29
env_inj doppler_inj 712 75 % 0.38
env_inj env_pooled 712 80 % 0.44
env_inj rate_inj 712 87 % 0.57
rate_inj env_pooled 712 84 % 0.46

The calibration

The anchors of the count map on env_inj: for each labelled count, the fleet minutes inside its labelled windows and where their level sat. Zero is the certified-empty floor by construction.
PeopleMinutesLevel median (oct)p10p90
00.000
280.8820.4981.177
3180.9260.4841.206

One integer per minute with an interval, from a piecewise-linear map through the anchors. Zero is the floor by construction. Above the top anchor the upper bound is open.

Every labelled window the snapshot read. A label is a person's statement with a basis; it is what the map passes through.
LabelDayWindow (library time)PeopleSourceBasis
OL-001 2026-09-02 10:45–10:49 2 diary Two people filming a promotional video, moving all over the floor, before 11:20 (diary 2026-09-02 §3, the researcher's own timeline). The window edges are the detector's episode edges on nine receivers (§4b); the count is the researcher's. The quiet minutes between this and OL-002 are unlabelled because where the crew stood then is not recorded.
OL-002 2026-09-02 10:57–11:01 2 diary Same two people filming (diary 2026-09-02 §3, 'the 10:45 and 10:57 episodes fall in the window the researcher places two people making a video on the floor'). Window edges from §4b; count from the researcher.
OL-003 2026-09-02 11:16–11:26 3 diary Three people: the diary's calibration (§10) labels 'eighteen minutes with three people' across the 11:16 to 11:25 and 11:31 to 11:38 episodes, inside the researcher's own 11:20 to 11:45 visit (§3). Window edges from §4b; count from the researcher.
OL-004 2026-09-02 11:31–11:39 3 diary Three people, the second of the two episodes the diary's calibration (§10) labels as three people, inside the researcher's 11:20 to 11:45 visit (§3). Window edges from §4b; count from the researcher.

Edges calibrated on 2026-09-02 (nine receivers, the transmitter-scoped envelope): fleet level 0.00 octaves on 62 quiet minutes (p90 0.03), 1.05 on nine minutes with two moving people, 1.10 on eighteen minutes with three people. Empty against occupied separates; two against three people does not. `high` has never been observed and is a placeholder until the staged crowd days run. Buckets are levels, not head counts.

The empty floor, night by night

env_inj: per night and receiver, the certified-empty minutes and their median, MAD and 99th percentile of the raw statistic. "Shift" is this night's median minus the previous decoded night's, in units of that night's MAD.
Night of Receiver Minutes Median MAD p99 Previous Shift (MAD)
2026-09-02 monad02 336 0.0423 0.000943 0.08486
2026-09-03 monad02 336 0.03274 0.000747 0.06541 2026-09-02 -10.1
2026-09-05 monad02 110 0.02762 0.00442 0.07706 2026-09-03 -6.8
2026-09-06 monad02 323 0.04206 0.00115 0.07836 2026-09-05 +3.3
2026-09-07 monad02 340 0.04204 0.000776 0.09594 2026-09-06 -0.0
2026-09-08 monad02 320 0.0463 0.0183 0.09945 2026-09-07 +5.5
2026-09-02 monad03 335 0.03579 0.000888 0.1634
2026-09-03 monad03 336 0.03974 0.000706 0.1035 2026-09-02 +4.4
2026-09-05 monad03 110 0.04483 0.00266 0.1385 2026-09-03 +7.2
2026-09-06 monad03 323 0.04696 0.000705 0.103 2026-09-05 +0.8
2026-09-07 monad03 338 0.04454 0.000581 0.1445 2026-09-06 -3.4
2026-09-08 monad03 320 0.04837 0.00998 0.1165 2026-09-07 +6.6
2026-09-02 monad04 336 0.03478 0.00132 0.08586
2026-09-03 monad04 336 0.02808 0.00152 0.07685 2026-09-02 -5.1
2026-09-05 monad04 110 0.02808 0.00457 0.1178 2026-09-03 -0.0
2026-09-06 monad04 324 0.03375 0.00112 0.1024 2026-09-05 +1.2
2026-09-07 monad04 339 0.03722 0.0012 0.1238 2026-09-06 +3.1
2026-09-08 monad04 320 0.05329 0.0232 0.1179 2026-09-07 +13.4
2026-08-27 monad05 62 0.05699 0.00299 0.09492
2026-09-02 monad05 335 0.04089 0.000597 0.08552 2026-08-27 -5.4
2026-09-03 monad05 336 0.04357 0.000463 0.0645 2026-09-02 +4.5
2026-09-05 monad05 110 0.02435 0.00187 0.06439 2026-09-03 -41.5
2026-09-06 monad05 324 0.05774 0.000889 0.07415 2026-09-05 +17.9
2026-09-07 monad05 340 0.05348 0.000801 0.0784 2026-09-06 -4.8
2026-09-08 monad05 321 0.05202 0.00659 0.1104 2026-09-07 -1.8
2026-09-02 monad06 336 0.02666 0.000747 0.07775
2026-09-03 monad06 334 0.02808 0.00108 0.0647 2026-09-02 +1.9
2026-09-05 monad06 110 0.02838 0.0024 0.07336 2026-09-03 +0.3
2026-09-06 monad06 324 0.02864 0.0012 0.07257 2026-09-05 +0.1
2026-09-07 monad06 340 0.03304 0.000922 0.08301 2026-09-06 +3.7
2026-09-08 monad06 290 0.0326 0.0109 0.07202 2026-09-07 -0.5
2026-09-02 monad07 334 0.06309 0.000994 0.1654
2026-09-03 monad07 335 0.07619 0.00114 0.1271 2026-09-02 +13.2
2026-09-05 monad07 110 0.08011 0.00291 0.1556 2026-09-03 +3.4
2026-09-06 monad07 324 0.08417 0.00119 0.1373 2026-09-05 +1.4
2026-09-07 monad07 339 0.06872 0.000826 0.151 2026-09-06 -13.0
2026-08-27 monad08 62 0.05328 0.0211 0.09429
2026-09-02 monad08 336 0.05733 0.000735 0.1219 2026-08-27 +0.2
2026-09-03 monad08 335 0.05736 0.00119 0.121 2026-09-02 +0.0
2026-09-05 monad08 109 0.04958 0.00195 0.08483 2026-09-03 -6.5
2026-09-06 monad08 323 0.05326 0.00217 0.09827 2026-09-05 +1.9
2026-09-07 monad08 339 0.05018 0.000807 0.08805 2026-09-06 -1.4
2026-09-02 monad09 336 0.03362 0.000787 0.09913
2026-09-03 monad09 334 0.0398 0.000628 0.1201 2026-09-02 +7.8
2026-09-05 monad09 110 0.0388 0.00248 0.1202 2026-09-03 -1.6
2026-09-06 monad09 324 0.03691 0.00106 0.1206 2026-09-05 -0.8
2026-09-07 monad09 340 0.0396 0.000599 0.08484 2026-09-06 +2.5
2026-09-02 monad10 336 0.07191 0.00153 0.1614
2026-09-03 monad10 336 0.07124 0.000648 0.1209 2026-09-02 -0.4
2026-09-05 monad10 110 0.06948 0.00208 0.1487 2026-09-03 -2.7
2026-09-06 monad10 324 0.06745 0.000944 0.1314 2026-09-05 -1.0
2026-09-07 monad10 340 0.08155 0.000833 0.1544 2026-09-06 +14.9

The false-alarm ledger

env_inj, per night, rule, bucket edge and window: the windows that fired, the rate per empty hour, and the Wilson 95 % upper bound. The level is judged against the same night's floor.
Night of Rule Edge (oct) Window Windows Fired Per hour Upper 95 %
2026-09-02 fleet-median 0.25 1 min 326 89 16.38 19.43
2026-09-02 fleet-median 0.25 10 min 33 19 3.45 4.37
2026-09-02 fleet-median 0.75 1 min 326 74 13.62 16.53
2026-09-02 fleet-median 0.75 10 min 33 18 3.27 4.21
2026-09-02 fleet-median 1.50 1 min 326 0 0.00 0.70
2026-09-02 fleet-median 1.50 10 min 33 0 0.00 0.63
2026-09-02 k2-of-N 0.25 1 min 326 96 17.67 20.77
2026-09-02 k2-of-N 0.25 10 min 33 19 3.45 4.37
2026-09-02 k2-of-N 0.75 1 min 326 86 15.83 18.85
2026-09-02 k2-of-N 0.75 10 min 33 19 3.45 4.37
2026-09-02 k2-of-N 1.50 1 min 326 10 1.84 3.33
2026-09-02 k2-of-N 1.50 10 min 33 7 1.27 2.27
2026-09-03 fleet-median 0.25 1 min 326 55 10.12 12.79
2026-09-03 fleet-median 0.25 10 min 33 19 3.45 4.37
2026-09-03 fleet-median 0.75 1 min 326 15 2.76 4.47
2026-09-03 fleet-median 0.75 10 min 33 11 2.00 3.02
2026-09-03 fleet-median 1.50 1 min 326 0 0.00 0.70
2026-09-03 fleet-median 1.50 10 min 33 0 0.00 0.63
2026-09-03 k2-of-N 0.25 1 min 326 90 16.56 19.62
2026-09-03 k2-of-N 0.25 10 min 33 25 4.55 5.23
2026-09-03 k2-of-N 0.75 1 min 326 51 9.39 11.99
2026-09-03 k2-of-N 0.75 10 min 33 19 3.45 4.37
2026-09-03 k2-of-N 1.50 1 min 326 0 0.00 0.70
2026-09-03 k2-of-N 1.50 10 min 33 0 0.00 0.63
2026-09-05 fleet-median 0.25 1 min 107 50 28.04 33.68
2026-09-05 fleet-median 0.25 10 min 11 9 4.91 5.69
2026-09-05 fleet-median 0.75 1 min 107 37 20.75 26.39
2026-09-05 fleet-median 0.75 10 min 11 7 3.82 5.09
2026-09-05 fleet-median 1.50 1 min 107 0 0.00 2.08
2026-09-05 fleet-median 1.50 10 min 11 0 0.00 1.55
2026-09-05 k2-of-N 0.25 1 min 107 51 28.60 34.23
2026-09-05 k2-of-N 0.25 10 min 11 9 4.91 5.69
2026-09-05 k2-of-N 0.75 1 min 107 47 26.36 32.03
2026-09-05 k2-of-N 0.75 10 min 11 8 4.36 5.42
2026-09-05 k2-of-N 1.50 1 min 107 11 6.17 10.49
2026-09-05 k2-of-N 1.50 10 min 11 4 2.18 3.88
2026-09-06 fleet-median 0.25 1 min 314 72 13.76 16.73
2026-09-06 fleet-median 0.25 10 min 32 20 3.75 4.62
2026-09-06 fleet-median 0.75 1 min 314 8 1.53 2.97
2026-09-06 fleet-median 0.75 10 min 32 7 1.31 2.33
2026-09-06 fleet-median 1.50 1 min 314 0 0.00 0.73
2026-09-06 fleet-median 1.50 10 min 32 0 0.00 0.64
2026-09-06 k2-of-N 0.25 1 min 314 96 18.34 21.53
2026-09-06 k2-of-N 0.25 10 min 32 24 4.50 5.20
2026-09-06 k2-of-N 0.75 1 min 314 65 12.42 15.31
2026-09-06 k2-of-N 0.75 10 min 32 20 3.75 4.62
2026-09-06 k2-of-N 1.50 1 min 314 3 0.57 1.66
2026-09-06 k2-of-N 1.50 10 min 32 2 0.38 1.21
2026-09-07 fleet-median 0.25 1 min 330 55 10.00 12.64
2026-09-07 fleet-median 0.25 10 min 33 15 2.73 3.72
2026-09-07 fleet-median 0.75 1 min 330 34 6.18 8.43
2026-09-07 fleet-median 0.75 10 min 33 10 1.82 2.84
2026-09-07 fleet-median 1.50 1 min 330 0 0.00 0.69
2026-09-07 fleet-median 1.50 10 min 33 0 0.00 0.63
2026-09-07 k2-of-N 0.25 1 min 330 78 14.18 17.10
2026-09-07 k2-of-N 0.25 10 min 33 19 3.45 4.37
2026-09-07 k2-of-N 0.75 1 min 330 49 8.91 11.45
2026-09-07 k2-of-N 0.75 10 min 33 15 2.73 3.72
2026-09-07 k2-of-N 1.50 1 min 330 12 2.18 3.75
2026-09-07 k2-of-N 1.50 10 min 33 5 0.91 1.86
2026-09-08 fleet-median 0.25 1 min 311 148 28.55 31.88
2026-09-08 fleet-median 0.25 10 min 32 28 5.25 5.70
2026-09-08 fleet-median 0.75 1 min 311 96 18.52 21.73
2026-09-08 fleet-median 0.75 10 min 32 21 3.94 4.78
2026-09-08 fleet-median 1.50 1 min 311 0 0.00 0.73
2026-09-08 fleet-median 1.50 10 min 32 0 0.00 0.64
2026-09-08 k2-of-N 0.25 1 min 311 151 29.13 32.45
2026-09-08 k2-of-N 0.25 10 min 32 28 5.25 5.70
2026-09-08 k2-of-N 0.75 1 min 311 102 19.68 22.92
2026-09-08 k2-of-N 0.75 10 min 32 21 3.94 4.78
2026-09-08 k2-of-N 1.50 1 min 311 0 0.00 0.73
2026-09-08 k2-of-N 1.50 10 min 32 0 0.00 0.64

Receiver commissioning

A flag is a receiver-minute whose own level bucket is occupied or above. A lone flag is one no other receiver scored that minute shared. Lone flags inside an episode the fleet later joined are the best-placed receiver hearing first; lone flags outside every episode are the alarms nobody else ever joined. Quiet correlation is the receiver's level against the fleet median on minutes the fleet read empty: common-mode drift shows here. The ranking must hold on two independent days before it is quoted, which is why the scope can be one day. Scope: every day pooled · 2026-08-26 · 2026-08-28 · 2026-08-29 · 2026-08-31 · 2026-09-01 · 2026-09-02 · 2026-09-03 · 2026-09-04 · 2026-09-05 · 2026-09-06 · 2026-09-07 · 2026-09-08 · 2026-09-09 · 2026-09-10

env_inj, 2026-09-09: per receiver, minutes scored, minutes it flagged, its lone flags and their rate, how many lone flags fell inside a fleet episode, the episodes it flagged over the episodes on its days, and its correlation with the fleet median on fleet-quiet minutes.
Receiver Minutes Flags Lone Lone rate Lone in episode Episodes flagged Quiet ρ
monad02 712 9 1 11 % 0 3 of 10 0.56 (n 558)
monad03 712 37 3 8 % 2 10 of 10 0.57 (n 558)
monad04 712 48 11 23 % 2 10 of 10 0.46 (n 558)
monad05 712 10 3 30 % 1 3 of 10 0.50 (n 558)
monad06 683 41 2 5 % 0 6 of 10 0.67 (n 537)
monad07 472 50 0 0 % 0 6 of 10 0.55 (n 413)
monad08 472 288 5 2 % 0 6 of 10 0.61 (n 413)
monad09 472 62 1 2 % 0 6 of 10 -0.34 (n 413)
monad10 472 281 16 6 % 0 6 of 10 0.63 (n 413)

Bystander devices against the envelope

Bystanders are advertisers with no lab identity; our own handsets are counted apart. The first ten minutes of every host-session are dropped because a new session re-salts every hash. The level is log2((n + 1) / (floor + 1)) against each receiver's own empty-night count, through the same floor rules, edges and receiver bootstrap as the CSI methods. It counts phones, not bodies.

Bucket agreement between env_inj and ble_bystanders on shared minutes: κ on four buckets, κ on the two-level collapse (empty+low against occupied+high), and the 2×2 of that collapse. The design's reading: agreement on quiet and disagreement on active means Bluetooth counts phones and the envelope counts bodies.
Scope Minutes Same bucket κ (4) κ (2) Both quiet Envelope only Bluetooth only Both active
2026-08-26 151 30 % 0.04 0.15 77 44 13 17
2026-08-29 62 40 % -0.05 0.00 40 22 0 0
2026-08-31 31 29 % 0.00 0.00 13 18 0 0
2026-09-01 327 22 % -0.03 -0.04 112 184 16 15
2026-09-02 611 40 % -0.01 0.02 299 241 36 35
2026-09-03 652 64 % 0.06 0.02 516 128 5 3
2026-09-04 879 78 % 0.06 0.08 809 56 10 4
2026-09-05 533 66 % 0.00 0.00 445 88 0 0
2026-09-06 582 39 % 0.00 0.00 406 176 0 0
2026-09-07 645 74 % 0.01 0.04 595 49 0 1
2026-09-08 500 89 % -0.00 0.00 477 23 0 0
2026-09-09 712 78 % -0.00 0.00 680 32 0 0
all 5685 63 % 0.05 0.07 4469 1061 80 75

Temperature against the empty floor

Per receiver-hour, the node temperature from the fleet export beside the hour's median raw statistic (dB), its level and its time-in-session. The fit is a slope in dB per degree over certified-empty hours with a bootstrap over nights, and a second slope against time-in-session. Hours within a night are serially dependent, so there is no p-value and the interval is over nights.

Per receiver over certified-empty hours: the slope of the raw env_inj statistic in dB per degree with a 5–95 % bootstrap over nights, and the slope against hours since the segment started. A floor that moves with temperature and not with time-in-session is thermal; the reverse is the radio settling. Fewer than 2 nights prints no interval.
Receiver Hours Nights Temp range (°C) dB per °C 5–95 % dB per hour in session 5–95 %
monad02 32 6 1.3 +0.0083 -0.0102 to +0.0242 +0.0390 -0.0070 to +0.0919
monad03 32 6 1.9 +0.0088 +0.0007 to +0.0118 +0.0057 -0.0304 to +0.0358
monad04 32 6 2.8 +0.0116 -0.0077 to +0.0161 +0.0278 +0.0028 to +0.0672
monad05 34 7 2.2 +0.0035 -0.0093 to +0.0136 +0.0143 -0.0114 to +0.0701
monad06 32 6 2.3 +0.0061 -0.0029 to +0.0094 -0.0105 -0.0249 to +0.0253
monad07 26 5 1.3 +0.0106 +0.0014 to +0.0174 -0.0629 -0.1262 to -0.0038
monad08 28 6 1.4 +0.0045 -0.0021 to +0.0112 -0.0533 -0.1243 to +0.0296
monad09 26 5 1.0 +0.0052 -0.0001 to +0.0064 +0.0049 -0.0163 to +0.0149
monad10 26 5 1.6 +0.0034 -0.0042 to +0.0088 +0.0391 +0.0045 to +0.1319

JSON: days · agreement · nights · false alarms · receivers · bystanders · temperature · episodes