c-fiit-find-a-seat — session 01KTPQBFJN (re-run, path bug fixed)
Re-run rationale. The prior session 01KTGV7KJD (2026-06-07) aborted on a diagnosed singular/plural path mismatch (/work/input/ vs /work/inputs/). That bug is now reconciled in code (floor_walk.py:68, walk_notebook/schema.py:119) and in the brief's sim_params.floor_bundle. This session re-runs the two planned seeds.
Corpus. 2 runs, seeds 0/1, seek_and_occupy, requested 20 agents / target_subtype=seat, on fiit-library-floor-0. Both gate-passed, exit 0, ~11 s wall, 7 artefacts each (sim://run/01KTPQC6D3AXNPHV6XDE71VGJQ, sim://run/01KTPQC7TPYFMQ94T7FPZJKHRS).
Criterion 1 — input contract (✓). Both runs consumed the host-staged floor_geometry.json and returned the full scalar floor (n_goals, n_seated, occupancy_rate, mean_time_to_seat_s); the container never touched PostGIS; n_outside_walkable=0. The path fix holds — no exit-2.
Criterion 2 — occupancy (✓). occupancy_rate=0.812 (13 of 16 reachable seats), ≥ 0.8.
Criterion 3 — ledger (✓). n_seated=13 ≤ n_goals=16; no double-occupancy. Group ledger: spawned 16, seated 13, turned_away 4, departed 0.
Honest caveats (not platform bugs). (a) Only 16 of the 24 authored seats registered as reachable n_goals — 8 seats fall outside the walls-subtracted walkable area at agent_clearance_cm=20 (the brief's interpretation-2 furniture-reachability case); this also clamped agents 20→16 (=reachable goals). The 3 unseated agents are seat-contention/timeout within duration_units=1200, not unreachability (0 agents outside walkable). (b) Seeds 0 and 1 produced byte-identical metrics — the seed axis perturbs only spawn jitter, so the two runs are replicas, not independent draws.
Verdict (brief scenario 1, with a scenario-2 note). The IP-092 bridge carries a real DB floor into a JuPedSim seek-and-occupy run via a portable artefact, all params sim-side — the plumbing is validated. Follow-on: audit why 8 of 24 seats are unreachable (seat placement vs clearance buffer) before occupancy-driven CSI coupling.