c-flat-day-csi — the ray-traced CSI behind the explorer
The c-flat-day-ai campaign produced a believable reactive crowd (18 LLM-authored behaviour FSMs) and the CSI explorer visualises a first-order occlusion + free-space-path-loss proxy over the 10 real csi-rp-rx-* receivers. This campaign replaces that proxy with the ray-traced article: couple the same FSM crowd trajectory into the exp-csi-crowd / Sionna chain (the csi-link-resplan-12439-dense10 layout) and emit real CSI tensors + per-link statistics over the evening.
Why
The explorer answers "where does the crowd go and which links does it block" with a defensible but analytic model. The thesis direction (BLE-calibrated CSI crowd sensing) needs the ray-traced signal — multipath, body-as-scatterer EM, per-subcarrier amplitude/phase — to confirm the proxy's headline finding: the densest room (the living-room hub) is the least observable. If the ray-traced signal agrees, the coverage-gap argument is solid; if not, the placement needs rethinking.
Plan
- Crowd leg: re-run the c-flat-day-ai FSM cast (
resolved_fsm_cast.yaml, on S3 underexperiments/ip107-flat-day-ai/) to regeneratetrajectory.parquetdeterministically (seeds 0–2). - CSI leg: feed it to
exp-csi-crowdwith thee2e-resplan12439.yamlcoupling and the dense-10 receiver layout →links.parquet+csi.hdf5per seed. - Compare the ray-traced
links.parquetto the proxylinks_proxy.parquet(same schema) — amplitude-vs-occluder slope, RSSI ranges, the living-0 coverage gap. - Swap the explorer's data source from proxy → ray-traced (identical schema) so the replay shows real CSI.
Execution note
Sionna is not installed in the local venv (CPU-only on Apple Silicon, heavy). This campaign is the systematic / CI path: dispatch via sim-campaign.yml once the walk-notebook image carries the IP-107 agenda+FSM engine (after merge + GHCR build). The crowd leg already runs locally via uv run --with jupedsim; only the Sionna leg needs CI.