What we tested. This session re-runs the identical 3 × 3 grid (intensity ∈ {0.5, 1.0, 2.0}, seeds 0–2) against resplan-12439-floor-0 after the kitchen door (door-kitchen-0, 0.9 m) was added in PostGIS between sessions. The specific question is whether n_goals (reachable seats) rises from 14 to the 16 placed — resolving the baseline bound — and whether all four criteria hold on the repaired layout. All 9 runs passed the gate; artefacts are tagged purpose: phase-b-grid-16-seats.
What we found. Criterion 1 — figures: every run carries trajectory.html, footfall_heatmap.png, speed_vs_time.png in domain_metrics.figures, with non-empty trajectory.parquet (180 kB at intensity 0.5 to 593 kB at 2.0). The bound is resolved: n_goals = 16 on all 9 runs (runs 01KT96PXT2SZV2KGXF7N4CRTD7–01KT96S5ANGXZ1073CA8N2YAA2), confirming both kitchen seats are now reachable. Criterion 2 — kinematics: n_outside_walkable == 0 everywhere; mean_walk_speed_m_s ranges 1.08–1.20 m/s (within band), peak_walk_speed_m_s = 1.20 on all runs (CFSM clamp). Criterion 3 — lifecycle at intensity ≤ 1.0: across all 6 cells, morning-wave departed == spawned, late-wave seated == spawned, through-traffic departed == spawned, and turned_away == 0 throughout. Notably turned_away == 0 also at intensity 2.0 on all three seeds. The seat-seeker demand is identical to the baseline (36 = 20 morning + 16 late at intensity 2.0; 16 seats cannot hold all 36 concurrently), so this is not extra capacity headroom: the two recovered kitchen seats plus seat reuse now drain the queue fast enough that every seat-seeker is admitted before frame 6000, whereas the baseline left two agents still waiting for a free seat at run end. One morning-wave agent is mid-walk at frame 6000 in run 01KT96RFATXNWQH3H0MTWA9Z0A (intensity 2.0, seed 0); the criterion is scoped to intensity ≤ 1.0 and this is one agent still on its return leg at sim end (departed = 19/20), not a lifecycle failure. Criterion 4 — congestion monotonicity: pooled mean_time_to_seat_s is 3.13–4.54 s at intensity 0.5, 5.74–6.77 s at 1.0, and 12.11–15.18 s at 2.0; Spearman ρ = 0.95, above the ρ ≥ 0.60 threshold.
What it means for the thesis chain. All four criteria are resolved on the intended 16-seat layout. The kitchen-door fix fully lifts the capacity bound reported in session 01KT94JPFF0YDN0BJN7649PGVZ: every seat-seeker that the baseline turned away at intensity 2.0 is now accommodated, and the super-linear time-to-seat growth (3.6 s → 6.2 s → 13.8 s mean across seeds) is measured against the correct geometry. Congestion is seat-contention queueing — walking speed stays clamped at 1.20 m/s and does not fall with load — so the FD/Hughes slowdown mechanism does not apply here; the load signal is purely temporal (wait for a seat to free). This validates the scenario layer (groups, waves, dwell/return, seat-reuse ledger, PostGIS floor bundle) as a ready upstream for coupled CSI campaigns such as c-csi-crowd-temporal. The seat-reuse ledger's strongest evidence is at intensity 2.0, where n_seated reaches 35–36 against n_goals = 16 (occupancy_rate 2.19–2.25) — more than twice as many distinct people seated as seats exist, only possible if freed seats are re-claimed. One scope shift from the baseline must be named: at intensity 2.0 the regime is now uncapacitated (turned_away = 0 via reuse), so this session no longer demonstrates the capacity-gated turned_away signature the baseline used to evidence seat contention — the door fix removed that gating.