Sessions

No sessions yet — this campaign has a brief but no execution.

Brief

Question

Can a real floor from the indoor GIS DB — its envelope, walls and occupiable seats — drive a JuPedSim seek-and-occupy run end-to-end, with the structure supplied as a portable artifact and all simulation params on the sim side?

This is the first exercise of the IP-092 structure→simulation bridge. The library floor (fiit-library-floor-0) is exported to a raw-structure floor_geometry.json by gis export-floor; the from_floor runner (floor_walk.py) derives the walkable area (envelope − buffered walls − obstacles) using its own agent_clearance_cm, spawns N agents, and each navigates to the nearest unclaimed seat and loiters. The GIS DB never learns anything about the run.

Prerequisites (before this can dispatch)

  1. A furnished floor. fiit-library-floor-0 must carry cell_type='occupiable' seats (≥ n_agents). Author them in QGIS (digitise points/footprints → gis_create_occupiable) or via a computed "one seat per desk" pass, tagged provenance accordingly. Until seats exist, n_goals = 0 and the run is a no-op (criterion 2 fails by construction).
  2. The structure artifact. Host-side pre-step: monad-knowledge gis export-floor fiit-library-floor-0 --out floor_geometry.json, staged as the run's /work/inputs/floor_geometry.json (IP-085 input; plural — the staging location written by scene_stage.py, matching the sim_params.floor_bundle above. The session 01KTGV7KJD… failure was a singular/plural path mismatch, now reconciled).
  3. The walk-notebook image with floor_walk.py on the entrypoint path (sibling to corridor_walk_fast.py). Until it publishes, treat this brief as a design spec — /campaign-curious fails at sim_run_launch with simulator_not_registered.

What the supervisor does

Two runs (seeds=[0,1]) at the base scenario — no parameter sweep. The analysis-writer:

  1. Confirms the input contract — each run consumed floor_geometry.json (no DB call in the container) and returned the scalar floor.
  2. Reads the occupancy floorn_goals / n_seated / occupancy_rate / mean_time_to_seat_s from walk-notebook.metrics.json via sim_read_run.
  3. Names any structural gap — if occupancy_rate is low, distinguish not enough seats (n_goals < n_agents), unreachable seats (seat points outside the walls-subtracted walkable area — a furniture-placement/clearance issue), or integrator timeout (duration_units too small).

Out of scope

  • Calibration against any published crowd-flow band. This validates the structure→walkable→goals plumbing on a real floor, not pedestrian-dynamics physics.
  • flow / multi-leg journeys, multi-seat capacity. Only seek_and_occupy, one agent per seat (IP-092 Stage B scope).
  • BLE / CSI coupling. Pure pedestrian sim; the EXP-S1 coupling is a follow-on once occupancy trajectories exist.
  • Editing the DB from the run. Occupancy is a run artifact; nothing is written back to PostGIS.

Expected interpretation

  1. All criteria met → "The IP-092 bridge carries a real DB floor into a JuPedSim seek-and-occupy run via a portable structure artifact; agents reach DB-defined seats with all params sim-side." Unlocks occupancy-driven studies (→ EXP-S1 CSI coupling) on any floor in the DB.
  2. Criteria 1 + 3 met, criterion 2 low → "Plumbing works; occupancy is gated by furniture data — <n_goals> seats vs <n_agents> agents / <k> seats unreachable after wall buffering." A data/clearance finding, not a platform bug.
  3. Criterion 1 fails → "The structure artifact didn't round-trip — <missing field / runner couldn't read bundle>." A platform finding on the export/adapter surface.

Notes (for future sessions)

  • The walkable derivation in floor_walk.py inlines monad_knowledge.sim.floorgeom.walkable_from_floor (the runner can't import monad_knowledge, per IP-087). floorgeom is the tested reference (tests/sim/test_floorgeom.py); keep the two in sync.
  • Natural follow-ons (separate briefs): c-fiit-occupancy-to-csi (couple the trajectory to EXP-S1 BLE/CSI synthesis), and a flow scenario once entrances are tagged (transition subtype main_entry).