CSI layout drift: a synthetic (T*, ε) prior for recalibration cadence
Current assessment (2026-09-15)
The three-seed synthetic displacement sensitivity remains a design prior. The surveyed-floor follow-up ran August 28 and found link extinction rather than a resolved gradual amplitude effect.
The reported threshold distances of 0.25, 1.5 and 0.25 m vary across placements. Displacement is not elapsed time, so these cannot specify a weekly refresh schedule. csi-drift-real-floor now supplies a surveyed-scene follow-up, but its real amplitude comparison remains unresolved.
Next evidence needed: Use the simulated sensitivity to select falsifiers. Estimate a field calibration lifetime only from independent chronological references, separating source, receiver and room changes.
Basis: Thesis Narrative, the September 10 synthesis, and the September 15 register review. See the review record for evidence sources and outstanding checks.
Earlier protocol and dated results
The methods and observations below retain their original scope. Read their readiness statements and proposed next steps as historical. The current assessment above records what has changed; frozen thresholds have not been retrospectively revised.
The problem, in plain words
Picture calibrating a set of kitchen scales on a soft rug, then moving them onto a hard tile floor. The scales now read wrong — not because the food got heavier, but because the surface underneath changed. Wi-Fi crowd counting has the same weakness: it learns "this pattern of radio signal ≈ this many people," but that pattern depends on where the walls, desks, and metal cabinets sit, because they bounce and block the radio waves. Rearrange the room and the learned pattern silently stops matching reality. This is the classic problem of a model whose input–output relationship shifts underneath it, and in Wi-Fi sensing it is now well-documented that a model trained in one setting or time does not transfer to another (brunello2025_d781 ↗; chen2023_5cbd ↗).
The obvious fix is to recalibrate on a timer — every so often, re-measure the room with a known number of people. But timers are wasteful: most rooms are stable most of the time, so you pay for recalibrations you never needed. Before you can build anything smarter, you need to know one basic thing: how much layout change does it actually take to break the model? That is a curve — error versus displacement — and nobody has measured it, even in simulation. You cannot measure the real one without months of capture, but a ray-tracer can produce its shape cheaply and let that shape design the real capture. That is the entire purpose of this card.
What we are trying to prove
- Hypothesis (falsifiable): as furniture is displaced by a growing amount
delta_layout, the model's occupancy error grows monotonically on an in-path arm, so the sweep yields a usable cadenceT*(ε)— the largest displacement tolerated before error crosses a budget ε. And crucially, error must stay flat on an environment-only arm that shifts the signal amplitude without moving anything into the sensing path. If a big amplitude shift also moved the error, the two effects would be inseparable and no drift detector could ever tell "the room changed" from "the model broke." - What a null means: if error did not grow with displacement on any arm — or grew identically on the amplitude-only arm — then furniture rearrangement is not a coherent drift axis and the whole recalibration-cadence premise for this floor is misframed. (It did grow on the in-path arm and stayed flat on the perpendicular arm, so the mechanism is confirmed; what failed is the hope of a single cadence number.)
- Explicit non-goal: this does not answer RQ4 (the real drift rate) and does not upgrade
recalibration-trigger-from-driftbeyond plausible. It is a corpus generator and a design input, nothing more (IP-101 Q3=A).
How the experiment works (plain method)
- Fix one synthetic corridor (
test-lab-synth-floor-0, linkcsi-synth-corridor-link, 6 agents, 16 occupant placements), and hold the occupant placement seed constant across states so that furniture is the only thing that moves. - Define four displacement arms, deliberately bracketing best and worst case rather than sampling "typical" rearrangement:
corner— off-path furniture, random directions (session-1 replication);los— metal boxes on the Tx–Rx line, random directions;losperp— a deterministic slide perpendicular to the line, exiting the path (the environment-change-without-breakage trap);losin— a deterministic slide along the line, into deep blockage (the genuine drift regime).
- For each arm, ray-trace
exp-csi-staticat 7 ordered states (0.25 m steps, up to 1.5 m total), at 3 placement seeds — an intended 4 × 7 × 3 = 84-run grid. Every run also emits a co-registered BLE link (ble.enabled) so the sibling trigger campaign has a second modality. - Fit a simple analytic occupancy estimator (
variance-threshold, in two flavours —mean_amp_dbandrician_k_db) on state 0, evaluate it on every later state, and emitdrift_curve.parquetplus the per-arm/per-seedT*(ε)cadence.
What we've found so far (honest)
The latest session (01KWHXSZKAC8M8T5D9TKX112D8, finished 2026-07-03) ran the multi-seed sweep and produced one figure (fig_layout_drift_multiseed.png). All four success criteria are marked resolved. The substantive results:
| Arm | What moves | Occupancy error | Reading |
|---|---|---|---|
corner |
off-path furniture | flat at 0.22–0.38 (byte-stable across states) | no drift; replicates session 1 |
los |
metal boxes on the line, random dirs | ≤ 0.44 | in-path drift is not generic |
losperp |
perpendicular exit off the line | flat, despite ~27 dB amplitude swing (−93 → −66 dB) | big environment change, zero degradation — the false-alarm trap |
losin |
slide along the line into deep blockage | 0.29 → 0.93 (seed 0), 0.37 → 0.82 (seed 2), 0.43 (seed 1, robust) | the only arm that genuinely drifts |
The recalibration cadence the campaign exists to produce, T*(ε=0.5) on the drifting losin arm, is [0.25, 1.5, 0.25] m across the three placement seeds — a sixfold spread depending on where the six occupants happen to stand. So the single-number prior is not safe; the multi-seed spread is the honest deliverable, and it is the direct argument for event-driven over fixed-cadence recalibration.
Two mechanistic notes: the analytic estimator's slope is shallow (−0.005 to −0.03 persons/dB), which is why only extreme deep-blockage excursions hurt it; and the rician_k_db estimator degenerates (−inf, masked) under deep blockage, so the curve is read on mean_amp_db. Provenance caveat: the synthesis reports 84 runs, but 63 runs are attached to the session record — a gap a re-analyst should reconcile before quoting the corpus size.
How to read the figures
fig_layout_drift_multiseed— a small-multiples grid of drift curves, one panel per arm, three coloured traces per panel (the three placement seeds), furniture displacementdelta_layouton x, occupancy error on y, with the ε = 0.5 budget line drawn across. The reading is deliberately the spread, not the mean: on thelosinpanel the three seeds separate dramatically (one crosses ε almost immediately, one never crosses); oncorner/los/losperpall traces hug the floor. A drift statistic that only watched signal amplitude would fire hardest onlosperp— the panel where error never moves — which is the whole cautionary tale.
Key references
- brunello2025_d781 ↗ — the empirical drift-over-time result that motivates measuring a degradation curve at all.
- chen2023_5cbd ↗, wang2026_2758 ↗ — the domain-shift / generalizability framing this corpus feeds.
- zhang2024_df4a ↗ — site-specific furniture-level propagation; grounds the "in-path blockage dominates" mechanism.
- zhevnenko2026_e571 ↗ — single-link corridor counting as a real published regime.
- zhang2025_a250 ↗, zhang2023_9c06 ↗ — online adaptation, the natural response to sparse conditional drift.
- zhang2018_138d ↗, khan2023_b7c5 ↗ — cross-site transfer difficulty, the deployment-scale evidence.
- guarino2026_e72c ↗, zhang2026_ccac ↗ — the reproducibility bar the SWE voice invokes.
- meneghello2023_0a93 ↗, huang2025_060d ↗ — public real-CSI anchors for the red-team's cross-check demand.