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.