Live status · Read the latest
monad-knowledge Wi-Fi sensing lab · FIIT STU
running csi-layout-drift simulation simulation

CSI layout drift — a synthetic (T*, ε) prior for recalibration cadence

In plain words

How fast does a Wi-Fi people counter go wrong as the furniture is moved, and is the decay regular enough to schedule recalibration by?

into the beam: count moves alongside: signal moves, count does not ordered furniture moves, four directions, several seeds
In simulation, furniture is moved step by step along different directions. Moving it into the beam between the radios should change the count; moving it sideways should change the signal but not the count. The gap between the two is what a drift detector has to isolate. Schematic of the design, not a measurement.
Why it matters
A counter is calibrated once in one furnished room. Then someone moves a bookshelf. A schedule needs to know how far the room can change before the count is wrong.
How it is done
Ray-trace a synthetic corridor under an ordered sequence of furniture moves along four directions, three seeds each (84 runs), and compare the arm that moves into the beam with the one that moves alongside it.
Where it stands
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.

Asks, formallyFurniture/layout displacement drives CSI model degradation at a rate that a synthetic corpus can characterise as a (T*, ε) prior: count error grows with ordered displacement magnitude on the in-path (`losin`) arm while staying flat on an environment-only (`losperp`) arm that shifts amplitude without changing occupancy error. The gap between the two arms is what a drift statistic must isolate — a per-link amplitude shift that does not track error is not a recalibration trigger.

FoundThe three-seed synthetic displacement sensitivity remains a design prior.

StandingCollecting data now · last activity 2026-07-02

RoomSynthetic corridor link on `test-lab-synth-floor-0`: ≥2 furniture arms × ordered displacement states × ≥3 placement seeds, co-registered CSI + BLE.

The room

test-lab-synth · test-lab-synth-floor-0 · 8 devices

The floor this experiment runs on — its rooms, walls, furniture and the highlighted sensors placed for it. This is the surveyed layout as last exported; a run's replay below shows the geometry as it was simulated.

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 cadence T*(ε) — 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-drift beyond plausible. It is a corpus generator and a design input, nothing more (IP-101 Q3=A).

How the experiment works (plain method)

  1. Fix one synthetic corridor (test-lab-synth-floor-0, link csi-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.
  2. 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).
  3. For each arm, ray-trace exp-csi-static at 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.
  4. Fit a simple analytic occupancy estimator (variance-threshold, in two flavours — mean_amp_db and rician_k_db) on state 0, evaluate it on every later state, and emit drift_curve.parquet plus the per-arm/per-seed T*(ε) 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 displacement delta_layout on x, occupancy error on y, with the ε = 0.5 budget line drawn across. The reading is deliberately the spread, not the mean: on the losin panel the three seeds separate dramatically (one crosses ε almost immediately, one never crosses); on corner/los/losperp all traces hug the floor. A drift statistic that only watched signal amplitude would fire hardest on losperp — 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.
Campaigns & sessions 1 campaign instantiating this experiment
Campaign Session State Runs Started Report
c-csi-layout-drift TKX112D8 finished 63 2026-07-02 synthesis →
H2E16TP6 finished 10 2026-06-24 synthesis →
XVDG1KEM finished 1 2026-06-24 synthesis →

Provenance

Data origin
simulated
Domain
csi
Room layout
csi-synth-corridor-link

Data types

  • csi-amplitude
  • per-link-summary
  • ble-rssi