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
- 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.
- The four arrangements are dated scans, not four states the room passed through.
lidar-silentandlidar-open-transfername different zones. There is no real before-and-after here to difference, which is why the real arm is a shape check. - The graded channel is untested on the real side. The
packetsaggregate that would give per-host RSSI exceeded the query budget repeatedly, so only the records-based extinction signal was read. - The impairment profile is still an unvalidated literature prior. Every decibel quoted here rides it.
c-csi-impairment-fitis the campaign that fixes that and it has not run. rt_precisionis float32 on the Metal lane for all twelve runs.- 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 − tablesto "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.