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

01M14FXTAQ9QA13GCDCN5DEA65

finished 2026-08-28 15:31:00.567290+00:00 → 2026-08-28 15:35:23.108456+00:00 · 12 runs · supervisor: claude-code

“PARTIAL — the mechanism is EXTINCTION, not attenuation. Link-extinction rate is ordered exactly by furniture reaching the 90 cm antenna plane (0.0% / 8.3% / 13.9% at reach 0 / 13 / 34); the graded amplitude contrast is -4.5 dB and SPANS ZERO at n=9 links. One matching extinction event in the real corpus (monad02, 2026-08-23, 11 segments, 0 records, 6 peers recording) is a signature match, NOT an attribution to furniture. Criteria 7-8 unresolved: the real per-link AMPLITUDE arm was never read, so the four-way outcome table is not resolvable. Neither hypothesis changes state.”

Archive snapshot, as of 11 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
OCCUPANCY IS INERT ON THIS FLOOR AND THE CAMPAIGN RUNS AT `n_agents: 0`. The degeneracy gate was run on 2026-08-28 and FAILED at every occupancy the schema allows: occluder incidence 0.0% / 1.9% / 0.0% / 3.7% / 3.7% at n_agents 4 / 8 / 16 / 32 / 64, with at most ONE occluded link-frame anywhere. Sixty-four people in a 15x18 m room block 2 of 54 link-frames. Deterministic ray tracing cannot carry occupancy here through the occlusion channel, which is what `scene_overrides.occupancy_diffuse` (IP-118) exists for and is a separate campaign. Running at 0 is also the CORRECT match to the real arm: EXP-F2 is an empty-room corpus. yes
REPLICATION IS DEVICE JITTER, NOT SEEDS OVER AGENTS. At `n_agents: 0` the scene is deterministic and a seed changes nothing. `device_jitter_m: 0.25` displaces each node per seed, which is the survey's own positional uncertainty (the walk placed 22 of 27 markers at 0.259 m RMS). A shared seed gives the SAME node positions across arrangements, so the furniture contrast stays paired and the question becomes: does it survive our uncertainty about where the nodes are? yes
`mean_atten_db_per_person` is NOT used for any claim. Measured 2026-08-28 it is non-monotone in occupancy (+15.68, +95.72, +15.13 dB/person at n_agents 8/32/64) because it regresses amplitude on occluder count across nine links whose path loss already spans 15.8 dB. Every reported effect is the PAIRED per-link change between furniture states, which differences per-link path loss out. yes
Each furniture state stages its own arrangement and only its own: the run log must show 16 / 31 / 98 pieces for `lidar-tables-2026-08-28` / `lidar-silent-2026-08-19` / `lidar-open-transfer-2026-08-21`. A run showing 160 is the pre-fix union of all four active arrangements and is void. yes
PRE-DECLARED PREDICTION, recorded before the measured arm is read: the per-link amplitude change is ORDERED by how much of an arrangement reaches the 90 cm antenna plane — 0 pieces for `lidar-tables` (negative control), 13 for `lidar-silent`, 34 for `lidar-open-transfer`. The session declares its ordering threshold BEFORE reading EXP-F2. A flat result across all three arrangements REFUTES this, and must be reported as a refutation rather than as agreement with the earlier below-the-plane claim, which was wrong. yes
`catalog-open-fill-2026-08-21` is excluded and the synthesis says why: all 15 pieces sit at exactly 90.0 cm, a catalogue default rather than a measurement, parked on the antenna plane. Including it would return the largest effect in the set for the least physical reason. yes
REAL ARM: the per-link mean-amplitude change measured across EXP-F2 over the same calendar window is reported for the same nine receiver links, with a CI, recomputed from summed counts rather than averaged per-segment ratios. no
The synthesis resolves the four-way outcome table (sim ordered/flat x real drifting/flat) explicitly, names which of `ble-periodic-calibration` and `recalibration-trigger-from-drift` the outcome moves and in which direction, and reports `rt_precision` for every headline number — the Metal lane is Float32 and falls back silently above `rt.metal_max_depth`. no

Synthesis

c-csi-drift-real-floor — session 01M14FXTAQ9QA13GCDCN5DEA65

Executive summary

The campaign asked whether the synthetic drift prior built on a toy corridor survives contact with the room the fleet measures. It does not survive unchanged, and the way it failed is the result.

The mechanism is extinction, not attenuation. Furniture that reaches the antenna plane does not shave a few decibels off a link. It kills specific links outright — the ray tracer finds no path and writes a −240 dB sentinel with rician_k_db = -inf. The extinction rate is ordered exactly by how much of an arrangement reaches 90 cm: 0.0 % at 0 pieces, 8.3 % at 13, 13.9 % at 34. On the links that survive, the graded amplitude contrast is about −4.5 dB and its interval spans zero at n = 9.

The real arm shows the same signature once, and it cannot be attributed to furniture.

Abstract

Twelve exp-csi-static runs staged three LiDAR-scanned furniture arrangements of fiit-ground-0 against the surveyed ten-node fiit-ground-fleet layout, at zero occupancy, replicated over four device-jitter seeds at the survey's own 0.25 m positional uncertainty. The negative control (lidar-tables-2026-08-28, no piece reaching the 90 cm antenna plane) lost no links. The two arrangements that do reach it extinguished links in proportion to their reach. A six-day EXP-F2 host-day census found one extinction event — monad02, 2026-08-23, eleven segments, zero records, six peers recording normally — which matches the predicted signature and has a competing explanation the corpus cannot exclude.

Method, in plain terms

Nine receivers hear one transmitter across a library floor. We rebuilt that floor in a ray tracer from its LiDAR scan, dropped in one scanned furniture set at a time, and read the amplitude each receiver saw. Then we changed the furniture set and read it again. Because there are no people in the model, the only thing that moves between runs is the furniture — and because the four seeds displace the nodes by the same amount we are uncertain about their real positions, the comparison stays paired.

Results, per criterion

Occupancy is inert on this floor, and the campaign ran at zero. The degeneracy gate failed at every occupancy the schema permits: occluder incidence 0.0 / 1.9 / 0.0 / 3.7 / 3.7 % at 4 / 8 / 16 / 32 / 64 agents, never more than one occluded link-frame. Sixty-four people in a 15 × 18 m room block two of fifty-four link-frames. Deterministic ray tracing cannot carry occupancy here through the occlusion channel. Zero occupancy is also the correct match to EXP-F2, which is an empty-room corpus.

mean_atten_db_per_person was excluded, and the exclusion was earned. Measured at +15.68, +95.72 and +15.13 dB/person at 8, 32 and 64 agents — non-monotone, and 96 dB per person is not physics. It regresses amplitude on occluder count across nine links whose path loss already spans 15.8 dB.

Each state staged its own arrangement. 16 / 31 / 98 pieces, against 160 when unselected. Three code defects had to be fixed first: stage_scene never passed an arrangement, StaticParamsSchema had no such field, and SceneOverrides.furniture was typed list[dict] | None so the from_floor string that scene_stage.py has accepted since IP-113 failed validation before reaching it. That opt-in was documented in two docstrings and dead.

The pre-declared prediction is confirmed in extinction and unresolved in amplitude.

Arrangement Reach ≥ 90 cm Extinct Rate
lidar-tables-2026-08-28 0 0 / 36 0.0 %
lidar-silent-2026-08-19 13 3 / 36 8.3 %
lidar-open-transfer-2026-08-21 34 5 / 36 13.9 %
Contrast (links alive in both, n = 9 / 8) Mean 95 % CI
open-transfer − tables −4.530 dB [−10.92, +0.06] — spans zero
silent − tables −1.497 dB [−5.94, +1.65] — spans zero

catalog-open-fill-2026-08-21 was excluded and named. Fifteen pieces at exactly 90.0 cm is a catalogue default parked on the antenna plane, not a measurement.

The real arm is a shape check and found one event. Ten hosts over six days of EXP-F2. monad02 recorded zero across eleven segments on 2026-08-23 while six peers hearing the same transmitter recorded 16–25 million each. That is the predicted signature — a link dark while its neighbours are not.

What this means

A recalibration argument for this room should watch for a receiver going silent, not for a slow decibel sag. The graded channel is about 4.5 dB and is not resolvable at nine links, so a drift detector tuned to amplitude drift would be looking in the weaker of the two channels the physics offers.

Link 5 is the vulnerable one in every furnished arrangement, and link 8 in one. That is a placement fact independent of this campaign.

The four-way outcome table — why it cannot be resolved, and what did move

The brief asked for the sim × real table (ordered/flat against drifting/flat). It is not resolvable from this session, because the real amplitude arm was never read: the packets aggregate that yields per-host RSSI exceeded the query budget on every attempt, so the real side contributed only the extinction census. Half a table is not a table, and criteria 7 and 8 are marked unresolved rather than argued past.

What the session does establish about the two hypotheses:

  • ble-periodic-calibration (chosen, plausible, 72/85) — unchanged in strength, but its mechanism is narrowed. If drift in this room is furniture-driven, it arrives as a receiver going silent, not as a slow decibel sag. A recalibration schedule justified by gradual amplitude decay is justified by the weaker of the two channels.
  • recalibration-trigger-from-drift (chosen, plausible, 45/80) — mildly helped in design, not in evidence. A trigger watching for link extinction has a far larger effect to detect (total loss) than one watching a 4.5 dB shift whose interval spans zero. That is a design consequence of an in-silico result, and it upgrades nothing.

Neither hypothesis moves state on this session. Saying so is the point.

Caveats, in order of how much they should bother you

  1. The real event is not attributed to furniture. A deaf receiver produces an identical signature, the furniture did not change on 2026-08-23, and the 2026-08-22 entry already records an unexplained ninety-second per-receiver loss with the channel quiet and the node cool. One event is a signature match, not a rate and not a cause.
  2. The four arrangements are dated scans, not four states the room passed through. lidar-silent and lidar-open-transfer name different zones. There is no real before-and-after here to difference, which is why the real arm is a shape check.
  3. The graded channel is untested on the real side. The packets aggregate that would give per-host RSSI exceeded the query budget repeatedly, so only the records-based extinction signal was read.
  4. The impairment profile is still an unvalidated literature prior. Every decibel quoted here rides it. c-csi-impairment-fit is the campaign that fixes that and it has not run.
  5. rt_precision is float32 on the Metal lane for all twelve runs.
  6. Two reductions were discarded before this one. The first pooled the −240 dB sentinel into means and produced −14.4 / −27.4 / −13.0 dB with intervals excluding zero — every number an artefact of censoring. The second used n = 33 link-seed pairs and moved open − tables to "excludes zero". Averaging seeds within a link first, as the brief's declared unit requires, returns it to "spans zero". Both errors are recorded in the reduction's docstring.

Figure board

fig_furniture_link_contrast
fig_furniture_link_contrast
fig_real_arm_extinction
fig_real_arm_extinction

Attached runs

Run Gate Purpose Replay
YAC55J3P
NAGEJYND
ACH007XH
F4B1QQXF
6Y5HNEWA
MY43SRD4
J5M8SYM7
Q93WJN60
6D5X3S5V
4D82RX9V
CDCA4K97
HB4A0RSD