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

01KW0K48WQEXTSTP7CT6Q002MC

finished 2026-06-25 23:51:30.967151+00:00 → 2026-06-26 00:18:02.881500+00:00 · 0 runs · supervisor: react-agent

“Behaviour leaves a measurable CSI fingerprint (KS D=0.40, p=4.2e-4) — a real train/test mismatch risk for a counting model.”

Archive snapshot, as of 20 h 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.

Synthesis

c-flat-day-reactive-vs-scripted — does the behaviour model leave a sensing fingerprint?

Setup. Identical floor (resplan-12439-floor-0) + identical dense-10 sensors + identical seeds; the only change is the strategic layer. Arm B (reactive) = the IP-107 18-FSM cast (guards: room_full(living-0) diverts, count_in(kitchen-0) > 4 escapes, etc.). Arm A (scripted) = the same cast linearised to each FSM's dominant path (fixed legs itinerary, after: leave), so it ignores live room state. 5 seeds each, coupled to ray-traced CSI via exp-csi-crowd (--where local). Valid scripted runs: 01KW0KGBDZ15KJTEBPJAWVRNTB, …HWM30T, …K98BM2, …N3B3GW, …Q41QH8 (an earlier scripted batch failed fast — an exit-kind leg the engine rejects only in linear form — and was superseded after the fix).

The divergence is real but not where the brief guessed (partial ✓ / corrected). The behaviour layer changes crowd persistence more than living-0 redistribution:

  • Peak total occupancy: reactive 21.0 [19.9, 22.1] vs scripted 15.4 [13.9, 16.9] (95% CIs, multi-seed) — disjoint. Reactive FSMs loop (few have exit states) so guests keep circulating; scripted guests run their itinerary and leave, so fewer are co-present.
  • living-0 peak is statistically indistinguishable (reactive 13.4 vs scripted 13.8) — both fill the sofa hub the same. The brief's expectation (A concentrates 18 / B spreads 16 in living-0) does not hold under coupling; the divergence lives in total persistence, not hub crowding.

The fingerprint is measurable (✓). On the sensed signal the arms diverge cleanly:

  • Attenuation slope: reactive 26.5 [19.7, 33.4] vs scripted 13.8 [11.2, 16.5] dB/person — reactive ≈ 2× (more co-present bodies → more occlusion events).
  • Two-sample KS on the 50 per-link CSI amplitude-variance observations per arm: D = 0.40, p = 4.2×10⁻⁴. The reactive and scripted crowds produce statistically distinguishable CSI distributions on the same receivers.

Implication. A crowd-counting model fit on one behaviour regime is mis-specified on the other: the input distribution it learns (variance, attenuation-per-person) is arm-dependent. Behaviour realism is therefore not cosmetic for sensing — it shifts the very feature distribution a counter consumes. This is a concrete sim-to-real risk worth carrying into training-data design.

IP-108 / reductions. CIs (multi_seed_ci), the arm-separability test (ks_2samp) and the density×observability trend (spearman) were computed with the audited reduction_stats primitives sim_reduction_run wraps. Note: exp-csi-crowd leaves run-level metrics:{} (domain metrics live in the artefact JSON), so the sim_reduction_run MCP path had nothing to aggregate — flagged as an IP-108 follow-on (promote sionna domain_metrics into run metrics).

Caveats. Scripted arm is a derived linearisation of the reactive cast, not an independently-authored itinerary — a clean isolation of the reactive layer, but it shares persona DNA. 5 seeds; single evening; quasi-static RT; synthetic crowd.</synthesis_md> ["Two crowd arms on identical floor + sensor layout (A scripted-linear, B reactive-FSM)", "Measure the divergence the reactive layer creates in occupancy", "Test whether per-link RSSI/variance distributions are statistically distinguishable between arms", "5 seeds per arm; report effect size + CIs via reduction_stats"]

Criticism adversarial review

Written by the campaign-critic subagent against the brief's success criteria — read it as the counter-position to the synthesis above.

Self-critique (deterministic supervisor)

  • The arms are not independent. Arm A is a deterministic linearisation of arm B's FSMs (dominant-path), so they share personas, arrival windows and room preferences. This isolates the reactive mechanism cleanly but is not an A/B of two independently-authored crowds — the fingerprint magnitude could be larger or smaller for genuinely different itineraries.
  • The KS test pools per-link observations (n=50/arm) treating links×seeds as exchangeable. Links within a room are correlated and the 10 links are not independent, so the effective sample size is smaller than 50; p=4×10⁻⁴ is optimistic. The direction (reactive variance distribution shifted right) is robust; the exact p is not.
  • Persistence confound. The dominant separator is total co-present count (21 vs 15), which trivially raises occlusion/attenuation. So part of the "fingerprint" is just "more people present", not "different spatial behaviour" — a counting model keyed on count would partly absorb it. Disentangling spatial-pattern fingerprint from headcount fingerprint needs an occupancy-matched A/B (future).
  • Quasi-static RT + single evening + synthetic cast, as in the sibling campaign.

Attached runs

The attached runs are not in the current atlas snapshot — rebuild via web --build-sim-atlas.