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

01KTGKKQR4KPCGFAGPFFJDRR9H

finished 2026-06-07 08:36:24.964747+00:00 → 2026-06-07 10:48:14.790352+00:00 · 36 runs · supervisor: react-agent

“All 4 criteria met: mean attenuation is near-flat across the loss×radius grid (range 2.25 dB) while per-placement spread separates the parameters (range 14.85 dB) — the mean under-determines the body model; per-band mean shift 10.13 dB confirms per-band calibration is mandatory; the cylinder + calibrated scalar loss is vindicated for bundle statistics (IP-094 Q5).”

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.

Success criteria

CriterionResolved
Each (loss, radius, band) cell returns the IP-085 scalar floor + links.parquet; no NaN/Inf. yes
Mean attenuation is near-invariant along a loss×radius iso-contour while the per-placement spread is not — the mean alone under-determines the body model; the distribution separates loss from radius. yes
Mean blockage shifts measurably across 2.4/5/6 GHz at fixed geometry — per-band calibration is not optional. yes
Notebook-backed analysis emits the loss×radius confounding map + per-band curves + metrics.json; synthesis states the closure verdict. yes

Synthesis

Synthesis — c-csi-body-em-fidelity, session 01KTGKKQR4KPCGFAGPFFJDRR9H

Question: is a single homogeneous dielectric cylinder + one calibrated per-body loss an adequate scatterer for amplitude-bundle statistics, and what does it hide?

Corpus. Complete 36-cell grid — body_loss_db ∈ {2,5,10,20} × body_radius_m ∈ {0.15,0.20,0.30} × {2.4,5,6} GHz — at fixed mid occupancy (n_agents=6) on csi-synth-corridor-link, run sequentially as IP-078 sweep 01KTGQEBBZT7AKB84XG75G4N4Q (9 min wall). n_placements=32 per the staged base config's documented tractable-pass note (brief design-max is 64); 32 × 3 links = 96 attenuation rows/cell still samples the distribution. A first sweep attempt died on cell 1 via the sim.s3.put 30 s BoundaryTimeout; after raising the sim-S3 deadline to 120 s (monad_knowledge/sim/runtime/s3.py), the rerun completed 36/36 with zero upload failures.

Criterion 1 — artefact floor: MET. 36/36 runs gate-passed with scalar floor + links.parquet (e.g. sim://run/01KTGQEBC0KF5JM6J3V3TER52C/artefact/links.parquet); no NaN/Inf survived the pooled reduction.

Criterion 2 — loss×radius confounding: MET. Across the full loss×radius grid the grid-mean attenuation moves only ≈2.3 dB (2.25/2.39/2.27 dB at 2.4/5/6 GHz) while the per-placement spread moves ≈12.7–14.9 dB. A dataset of mean curves is therefore blind to the body parameters — loss and radius are jointly identifiable only from the attenuation distribution, exactly as the analytical sandbox (notebook 02) predicted.

Criterion 3 — per-band shift: MET. Mean blockage shifts 10.13 dB across 2.4→6 GHz at fixed geometry — the Fresnel-radius/permittivity effect is first-order; per-band calibration is not optional.

Criterion 4 — closure: MET (driver mode). csi_body_em_sensitivity.py ran host-side over the pooled corpus (local-curious driver path), emitting csi_body_em_sensitivity.metrics.json + the confounding map fig_csi_body_loss_radius_confounding.png under _cache/campaign-sessions/01KTGKKQR4KPCGFAGPFFJDRR9H/reduction/. Closure verdict: within this corpus a single calibrated scalar absorbs the swept variation of the bundle mean, provided (a) the calibration is fit against the attenuation distribution (spread), not the mean, and (b) it is re-fit per band. No structured residual demanding the next primitive (elliptical cross-section, two-layer shell) emerged — the cylinder + calibrated loss is vindicated for bundle statistics, confirming IP-094 Q5 (expected interpretation 1).

Platform notes. The recurring sim.s3.put 30 s timeout (7th kill of the session series) is mitigated by the 120 s deadline; the proper fix is retry-on-transient in S3Backend.put_bytes. The fork-safety SIGTRAP class (cygrpc threads + fork+exec on CPython 3.12) is closed going forward: the venv moved to Python 3.13.1 where subprocess uses posix_spawn.

Attached runs

Run Gate Purpose Replay
V3TER52C
MKA405T0
4EW4F2GP
BP36635F
BF8654EV
1KNN9GP8
3JD4NKDD
DSX4CA93
XN8CEXDQ
HDT194NC
01W7QP54
SZYAJW95
SVCN7F5F
GPHCBSK5
GRZHD8QY
YVMEQVMZ
13GR09JZ
TQRY6WV4
Y2S525JN
2KF6QJD9
V4VY1BK9
10SZ8A05
Z7D0HHBY
XMEZZQQP
8VB6MTN2
RFK6003J
E476PD53
W1S6GJND
2W0BK4N6
DF7AHK2S
SS9SK15V
WQREBBPX
CS2R7NJX
BZGZMFC3
WW5VH9Y2
21T6N6W8