Question
The c-csi-ble-fusion staleness-switch is THE robust fusion architecture (tracks the lower envelope of {BLE-held, CSI} across all cadences) — but its weight is a clock (
w = exp(-t/tau), tau hand-tuned to 16 s, flagged as an overfit risk). It distrusts a still-valid anchor during quiet plateaus and trusts a stale one right after a burst. c-ble-drift-trigger just showed the cross-modal CSI/BLE disagreement is an online statistic that tracks prediction-relevant drift (ρ=0.93, quiet on irrelevant change). Close the loop: does weighting the anchor by observed disagreement instead of elapsed time match a tuned clock without tuning — and beat it where occupancy dynamics are bursty, i.e. where elapsed time is a bad proxy for change?
Why now — the thread this closes
This is the designed follow-on from both parents: the fusion campaign ended with "tau hand-tuned (overfit risk)" and the trigger campaign ended with "replace the clock weight with the drift statistic — condition-based, not time-based". The condition switch is also the concrete consumer of the IP-106 recommendation to log the cross-modal statistic per BLE calibration campaign: if it works in-silico, the hardware capture validates a complete sensing policy, not just a metric.
What the supervisor does
- Author two occupancy-dynamics scenarios on
resplan-12439-floor-0(device layoutcsi-link-resplan-12439-multiroom) as walk-notebookfrom_floorcasts using plain wave/legs arrival windows — do NOT usekind: agendas/fsms(the GHCR walk-notebook image may predate the IP-107 engine).smooth: arrivals and departures spread evenly over the window (roughly constant change rate).bursty: 2–3 tight arrival/departure waves with quiet plateaus between (same total agent count and a comparable occupancy range as smooth — the arms must differ in dynamics, not headcount). Validate both viasim_scenario_validate(with the floor bundle) before any launch. - Fan out
exp-csi-crowdover {smooth, bursty} × seeds {0,1,2} (6 coupled runs,ble.enabled, Doppler NOT enabled — the CV feature here is the rolling std over coarse frames, matching the parent fusion reductions). - Run
fusion_condition_switch.py(runnerpython) over all 6 runs'links.parquettrajectory.parquet. Operator note: if the notebook container cannot read the run parquet from the Hetzner S3 endpoint (known runner limitation), download the artefacts to the workspace and run the reduction standalone, then uploadfusion_condition_switch{.parquet,_sensitivity.parquet,.metrics.json}+fig_fusion_condition_switch.pngto the sessionartefacts/.
- Synthesise per the success criteria; run the campaign-critic before closing; report per-seed numbers, no averaging away variance.
Figure render request
fusion_condition_switch — per-arm MAE vs BLE cadence (log-x): BLE-held, CSI-adapted,
clock switch (tau=16 s) with error bars, condition switch with error bars, oracle envelope
dotted; burstiness of each arm annotated in the panel title.
Out of scope
- Learned fusion heads / Kalman-style filters — the affine + exponential-weight family is deliberate (interpretable, calibration-window-only parameters); a filter comparison is a follow-on once the condition mechanism is settled.
- Layout drift during a run — the trigger campaign covered environment drift; here the environment is static and only occupancy dynamics vary. Composing both (drift + bursty occupancy) is the eventual field condition but confounds the first test.
- Band contrast / Doppler — single band, quasi-static CV, matching the parent reductions for comparability.
Expected interpretation
- Condition ≤ clock on bursty, ≈ on smooth, within 0.1 of best-tau everywhere → the switch no longer needs a deployment-tuned time constant; the IP-106 capture validates the complete condition-based policy. Strengthens the Hybrid-Fusion chain.
- Condition ≈ clock everywhere → disagreement adds nothing over elapsed time at these dynamics — an honest negative that keeps the simpler clock and downgrades the condition-switch idea to "only needed under environment drift".
- Condition < clock only at extreme sparsity → the payoff is confined to low-BLE-availability regimes; report the crossover cadence as the design number.
- Burstiness manipulation fails criterion 1 → scenario-authoring finding on wave casts; fix the cast before interpreting fusion numbers.