Question
The simulator's measurement model is a literature prior that its own docstring flags as unproven. What is it actually, on our NIC? And does the occupancy signal the whole in-silico programme rests on survive at the measured value?
exp_csi_static/schema.py:131, unchanged since IP-101:
Parameters are a prior grounded in the commodity-NIC literature (Atheros / Intel CSI-tool conventions); they are flagged unproven until the first
exp-csi-calibrationsession checks them against real capture.
exp-csi-calibration was never written, because it needed a real capture. This is
that session, eighteen months of proposal text later.
What we already know
- The corpus exists.
EXP-F2: 86 sessions, 2,641,389,896 declared records, 2026-07-27 → 2026-08-28, ten AX210/Pi5 nodes,useful_yield0.927–0.976. The room was empty or near-empty for the whole window, which is exactly the condition an impairment fit wants. - The impairment grid already found the cliff. IP-101's sweep established that mild NIC impairments halve the occupancy attenuation signature and sign-flip the Rician-K slope. So the fitted operating point is not a cosmetic detail. It decides whether the published in-silico occupancy numbers describe a regime the hardware is in.
- The lake is the wrong instrument for this. Its
packetstable carrieschain_amp_rms,ratio_amp_db,ratio_phase_rad. The last two are inter-chain ratios inside one NIC, so a common CFO cancels exactly. The one column that looks like phase is the one where the parameter of interest is invisible. Read the csiq containers through thecsipackage. - The lake cannot tell you which container to read. Measured today: 985 of
EXP-F2's 1,027 segments have
csiq_formNULL and 402 havederived_fromNULL, while S3 holds 2,626 re-derived containers.lake syncis incremental and skips segments it already holds, so those columns were never backfilled. A null is not a zero. Resolve the container per segment against the bucket, or the fit runs on superseded envelopes and nothing errors. n_bitsis not a fit. The container format states it. Fitting a known constant is a way to produce a confident wrong answer.
What the supervisor should plan
Step 0 — establish the corpus and the spread. lake sync --apply first: 63
sealed segments are not ingested, 593 await decode, and 1,232 were decoded from
original containers although re-derived ones exist. Then measure the between-host
spread of at least snr_db on a small subsample, and power-size the rest against it.
pilot_sigma is deliberately null in this brief.
Step 1 — per-host estimation. One estimator per parameter, each with a stated identifiability condition:
| Parameter | Read from | Fails when |
|---|---|---|
snr_db |
per-link amplitude variance against RSSI | AGC changes mid-session |
cfo_hz |
packet-to-packet common phase rotation across tones | the chain-ratio path is used by mistake |
sto_samples |
linear phase-ramp slope across subcarriers | the tone grid is grouped and index-only |
iq_amp_imbalance_db / iq_phase_imbalance_deg |
mirror-tone conjugate correlation | 802.11 nulls the FFT centre, so the mirror pairing must respect the used-tone set |
phase_noise_deg_rms |
residual per-tone phase RMS after CFO and STO removal | CFO and STO were not removed first |
Scope every estimate to one record class. session_classes gives the shape —
legacy_ofdm 52×2, ht 56×4, he 242×2 at 78.125 kHz spacing — and pooling classes
mixes two different tone grids.
Step 2 — the decisive comparison. Re-run exp-csi-static on one fixed scene
under the shipped prior and under the fitted profile, and report the paired per-link
difference in occupancy attenuation signature with a CI. This is the primary. The
seven parameter values are the method.
Step 3 — the honesty pass. List the in-silico occupancy results whose impairment setting now sits outside the measured region. If the list is empty, say so — that is the good outcome and it is worth as much as the bad one.
Out of scope
- Fitting the diffuse term.
OccupancyDiffuse.from_real_anchorwants labelled (count, Rician-K) pairs, and the fleet has no labelled occupancy. Named in the card, deliberately not attempted here. - Thermal drift.
ImpairmentProfilehas no thermal term. That the fleet's phase drift is temperature-ordered is a measured fact and a model gap, not a parameter to fit into a model that cannot hold it. It belongs in a proposal, not this session. - Anything about delivery, contention or channel loading. Sionna RT has no MAC.