Coupled simulation sandbox: foundation checks and continuity limits
Current assessment (2026-09-15)
The sandbox's pedestrian and scenario checks remain useful within their tested densities. The original c-exp-s1-mechanism-defense reduction remains incomplete. It is no longer the missing thesis headline: the later c-continuity-prior-csi-density-v2 campaign found the continuity prior practically equivalent to smoothing within its declared ±0.10 margin in both tested flow regimes.
The simulation is an instrument for the calibration argument. It does not validate a field data interface merely because synthetic layers run. The July 15 continuity study found no practically meaningful physics-specific advantage, with paired differences near −0.003 within the equivalence margin. That is a scoped negative for continuity-prior-regularizes-density, not an instruction to revive the abandoned headline.
Next evidence needed: Retain the foundation checks and their density limits. Reopen a continuity experiment only for a distinct, falsifiable mechanism; current priority is independently labelled calibration evidence and realistic measurement assumptions.
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
A Wi-Fi crowd-counting model learns "this pattern of radio distortion ≈ this many people." But it is a black box: give it a strange input and it will still confidently output some count, with no sense of whether that count is physically possible. People do not teleport — the number in a room changes only because someone walked through a door. That is a conservation law: the rate a cell's occupancy changes must equal the net flow across its boundaries (the continuity equation \partial\rho/\partial t + \nabla\cdot(\rho\mathbf{v}) = 0, the backbone of continuum crowd theory — hughes2002_57b4 ↗, maury2018_d24a ↗).
The idea EXP-S1 tests is to teach the model that law by adding a penalty to its training loss: whenever its predicted per-cell counts violate conservation, it pays. This is exactly the recipe of physics-informed deep learning, which has a mature track record in traffic-state estimation (di2023_285b ↗, shi2022_1e5b ↗). The sceptic's objection — and it is a fair one — is "any regulariser would smooth your predictions; how do you know it is the physics doing the work and not just generic damping?" Defending against that objection is the whole point of the top layer, and it is the part that has not run.
Before you can even ask that question honestly, the simulated crowd underneath has to be believable — otherwise you are teaching a model the physics of a world that does not exist. So EXP-S1 spends its first two layers earning the right to ask the headline question.
What we are trying to prove
Three falsifiable hypotheses, in dependency order:
- H-S1.1 (harness validity). The coupled pipeline runs end-to-end on a CPU in minutes and emits a structured run card plus the OTel span tree. Null: it does not complete or does not instrument → the platform is not trustworthy and nothing downstream can be believed. Status: met (Phase A smoke test, inherited as the trust anchor).
- H-S1.2 (mechanism signal). The continuity penalty at its best strength \lambda^* reduces per-cell occupancy MAE by ≥ 0.10 ped/cell on at least 2 of 3 model architectures. Null: no lift, or the lift is a rounding-error → L4½.5 is not supported and the loss term is dropped. Status: NOT EXECUTED.
- H-S1.3 (separability / transfer). The sign of the lift is positive across all three architectures with bounded variance. Null: the effect is a quirk of one model class, not a transferable mechanism → the thesis must claim far less. Status: NOT EXECUTED.
A clean way to read this: H-S1.1 asks "is the instrument real?" (yes), the fundamental-diagram and scenario campaigns ask "is the simulated world real enough?" (largely yes), and H-S1.2/H-S1.3 ask "is the thesis's mechanism real?" — and that last, load-bearing question is still open.
How the experiment works (plain method)
- Geometry. A parametric Shapely seminar room (~8 m × 12 m, six logical cells, two doors) — or, for the scenario layer, a real six-room PostGIS floor (
resplan-12439-floor-0) staged straight from the spatial database. - Crowd. JuPedSim's Collision-Free Speed Model (tordeux2016_5e66 ↗) moves agents; PedPy computes Voronoi density and speed per time-bin and the continuity residual. This is the layer the fundamental-diagram gate stress-tests.
- Radios. BLE RSSI is a log-distance path-loss model with log-normal shadowing (sadowski2020_f2ba ↗); the CSI channel is a statistical proxy — a per-link feature 4-tuple, deliberately not a ray-tracer at this phase — enough to read a λ-sweep direction, explicitly not a fidelity claim.
- Graph + models. Per-1 s window, a heterogeneous graph snapshot feeds a small model zoo (Bagging-LGBM, a hand-rolled PINN, CNN+LSTM). The continuity penalty is one autograd term; the λ-sweep \{0, 0.01, 0.1, 0.3, 1.0\} is run per architecture and per seed.
- Read-outs. Per-cell MAE at each λ, the achieved continuity residual, and the residual↔MAE correlation — the last is the mechanism test (reducing residual should reduce error; if not, the penalty is generic smoothing).
Three campaigns exercise different layers: c-exps1-fundamental-diagram (step 2 physics), c-crowd-motion-mix (a real-floor scenario stress-test of the walker), and c-exp-s1-mechanism-defense (steps 4–5, the headline — the one that has not run).
What we've found so far (honest, across campaigns)
| Layer / campaign | What it tested | Verdict | Real numbers |
|---|---|---|---|
Fundamental diagram — c-exps1-fundamental-diagram |
Does the crowd layer reproduce the empirical (density, speed) relation? | Partial (2/3) | Voronoi speed 1.169 → 1.139 → 0.708 m/s at ρ = 0.042 → 0.167 → 0.500 ped/m²; per-seed Spearman −1.0 (monotone slowdown). Speeds physical, no degenerate collapse. But dense/jam regimes unreachable on 96 m² → criterion 1 fails; in-band fraction 2/3. |
Scenario / walker — c-crowd-motion-mix |
Does a believable multi-wave, seat-reusing crowd run on a real floor, visibly? | All 4 criteria met | n_outside_walkable = 0 everywhere; walk speed 1.08–1.20 m/s; seat reuse occupancy_rate 2.19–2.25 (>2× people seated than seats); turned_away = 0; time-to-seat 3.1→6.2→13.8 s across load, monotone Spearman ρ = 0.95. |
Mechanism (headline) — c-exp-s1-mechanism-defense |
Does the continuity penalty reduce MAE across the model zoo? (L4½.5) | NOT EXECUTED — phantom session | Latest session: 7 days stuck running, 0.031 CPU-h, 0 LLM tokens, 0 S3 bytes, no synthesis, no figures, no criteria resolved; operator-cancelled as a dead supervisor. 9 trajectory runs preserved as fan-in but never analysed. Campaign blocked: no runner image ships torch + lightgbm. |
Read this table honestly. The two lower layers give real, defensible evidence — and the scenario result is genuinely strong. But the row that carries the thesis claim is empty. There is no MAE lift, no λ*, no residual↔MAE correlation, because the reduction never ran. Anyone citing EXP-S1 for L4½.5 today would be citing a design, not a result. Two important caveats even on the passing rows: (i) the FD gate cannot reach the jam regime on this small room, so its validation is free-flow-to-dense only; (ii) in the scenario campaign the congestion signal is seat-queueing, not fundamental-diagram slowdown — walking speed stays clamped at 1.20 m/s and does not fall with load, so the monotonic time-to-seat is a demand/capacity effect, not the Hughes density law. The synthesis says so explicitly.
The plan for the headline (unexecuted)
To turn the empty row into a real result, in order:
- Unblock infrastructure — build the
python-mlrunner image withtorch+lightgbm(and the macOS dual-libomp guard). This is the single gate; the reduction notebook (exps1_continuity_penalty.py) is written and waiting. - Criterion 1 (lift magnitude) — λ-sweep at N=8 on Geometry A across all three architectures, 3 seeds; report Δ-MAE(λ*) per architecture.
- Criterion 2 (sign transfer) — verify the lift is positive on all three at λ*.
- Criterion 3 (density transfer) — scan N ∈ {4, 8, 12} at λ* on the strongest architecture.
- Falsification guard — the Phase-C random-conservation-law counter-test: swap \nabla\cdot(\rho\mathbf{v}) for a nonsense law; if MAE is unchanged, the penalty was generic regularisation and L4½.5 collapses. This is the test that answers the sceptic — and it is downstream of a result that does not exist yet.
Until step 2 returns a number, EXP-S1's contribution to the thesis is a validated data plane and a validated crowd, not a validated mechanism.
How to read the figures
Only the two lower-layer campaigns produced figures; the headline campaign produced none.
fundamental_diagram_geomA(c-exps1-fundamental-diagram) — a (density, speed) scatter with the Liddle-2022 / Adrian-2024 empirical band overlaid. Read the downward trend, not individual points: speed should fall as density rises. The honest caveat is that the cloud only spans free-flow to dense; the right-hand jam corner is empty because the room is too small to fill.crowd_motion_mix(c-crowd-motion-mix) — three panels: footfall heatmaps at rising intensity (doorway hotspots grow with load), time-to-seat vs intensity (the super-linear rise is the story), and a per-group on-floor population timeline. The headline artefact istrajectory.html— an animated, group-coloured replay where you can watch the morning wave seat, dwell, stand, and leave, and the late wave re-claim the freed seats. n = 9 runs (3 intensities × 3 seeds).
Key references
- hughes2002_57b4 ↗ · maury2018_d24a ↗ — the conservation law the penalty enforces.
- di2023_285b ↗ · shi2022_1e5b ↗ — the physics-informed-loss paradigm and its λ-sweep provenance.
- tordeux2016_5e66 ↗ · corbetta2023_bcb7 ↗ · liddle2022_ee2c ↗ — the pedestrian model and the empirical fundamental-diagram band the crowd layer is gated against.
- zhou2020_6173 ↗ · zou2018_1590 ↗ · mondal2023_7f7a ↗ — device-free CSI occupancy baselines and the LGBM-beats-deep result at this scale.
- sadowski2020_f2ba ↗ · demrozi2021_bf55 ↗ · longo2019_b72f ↗ — the BLE channel model and BLE occupancy grounding.
- wang2026_2758 ↗ · chen2023_5cbd ↗ · khan2023_b7c5 ↗ · brunello2025_d781 ↗ — the sim-to-real and transfer bars the red-team and ML voices invoke.
- zhang2026_ccac ↗ · guarino2026_e72c ↗ · huang2025_060d ↗ — the reproducibility protocol and the public real-CSI anchor for the cross-check demand.