Live status · Read the latest
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 1 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 ✓ — —