Question
Every walk campaign in this project so far — c-coverage-meets-crowds, c-placement-oracle, c-crowd-motion-mix — routed its crowd through empty geometry: JuPedSim saw walls and doors, never a desk or a shelf. The footfall demand surface those campaigns produced, and that the placement oracle then used to rank counting-optimal APs, is furniture-blind. IP-113 and the theme-aware placer now put a real furniture catalogue into
resplan-2605as obstaclecell_spaces. So ask the foundational movement question directly, on the one floor that can answer it: does furniture change where the crowd goes — does forcing agents to route around desks, tables and shelves reshape the footfall surface, and by how much?
Framing discipline. Self-authored through-traffic crowd on ONE procedurally furnished ResPlan
floor (the only floor currently carrying obstacle furniture). RANKS how much furniture matters to
the footfall demand surface; a demand-side design diagnostic, not a measured occupancy trace, and
not yet cross-floor. The radio-side companion (does furniture reshape the CSI the crowd generates)
is the already-run scene-diversity arm of c-operanet-sim2real-fingerprint and Arc-A1
c-furniture-csi-sensitivity. No hardware claim.
Why now — the furniture unlock, and the blind spot it exposes
Furniture is finally in a floor as obstacles: live PostGIS carries 35 obstacle cell_spaces on
resplan-2605 (procedural theme-aware placer, arrangement layer computed-resplan-2605-floor-0).
And the downstream campaigns already assume a footfall surface computed without it —
c-placement-oracle ranks counting-optimal APs against a persona footfall surface; if furniture
moves that surface, the oracle's placements move with it. c-coverage-estimator-factorial
declared a {furniture: on/off} axis but never isolated it. This campaign is that isolation, at the
demand-surface level, on the floor that has the obstacles.
Substrate reality (from the 2026-07-14 scoping pass). Only resplan-2605 carries obstacle
furniture. The other "furnished" floors (resplan-12439/12419/16157/7421) carry occupiable seats
only — and seats are goals, not obstacles, so their furnished and empty walkable areas are
identical by construction (verified: resplan-12439 -> 0.00% walkable change). They are excluded:
running them would manufacture a guaranteed TV distance of 0, not a finding. Generalising beyond one
floor requires the placer run to emit obstacle furniture on more geometry — the natural follow-on.
The formal object
Two staged geometries of resplan-2605 that differ ONLY in furniture — include_furniture ∈ {true, false} — and the same east→west through-traffic crowd (14 agents, paired by seed). The
estimand: TV(F_furnished, F_empty), the total-variation distance between the two seed-paired,
area-normalised footfall heatmaps. Zero ⇒ the 6.9% walkable pinch is decorative to room-scale flow;
large ⇒ the demand surface every downstream campaign uses is materially wrong when computed empty.
What the supervisor does — walk-notebook only (cheap)
- Furnished-bundle gate — already verified (execution log below). The
include_furniture: falsearm re-stages the same floor with obstacles stripped, goals kept. - Paired A/B walk (
sim-runnerfan-out, ~6 s/run) — through-traffic groups, seeds {0..9}, both furniture arms = 20 runs. Honour walkable QC; a wedged/jammed furnished run is a geometry finding, reported and dropped. Bounded-influence footfall estimator (c-coverage-estimator-factorial) wired in from run 1. - Footfall redistribution (
furniture_walkability.py, pure numpy over the trajectory parquets) — seed-paired TV distance + bootstrap CI + the signed difference map. - Seat reachability (secondary) — a small
seek_and_occupy/seatarm (3 seats), furnished vs empty; report reached-seat count. Descriptive only (weak at 3 seats). - Synthesise + replay — the furnished-vs-empty footfall overlay + delta map, the reachability
note, and a
/map/replay of agents routing around furniture on resplan-2605 (analysis-writerunder the sim-storytelling-contract).
Figure render request
furniture_walkability — (a) furnished×empty through-traffic footfall overlay + the signed delta
map; (b) the seed-paired TV-distance point + bootstrap CI against min_effect_size; (c) a small
reached-seat furnished-vs-empty bar.
Out of scope
- Cross-floor generalisation — one floor has obstacle furniture today. Emitting obstacle furniture on more ResPlan floors via the theme-aware placer, then re-running, is the follow-on that turns this into a cross-geometry claim (the c-csi-cross-geometry-scaleout pattern).
- Arrangement swap — resplan-2605 has a single FURNITURE layer (
computed-resplan-2605-floor-0); the "does which layout matter" arm needs a SECOND arrangement authored via the placer first (thearrangement:param is already wired for it, this session). Optional follow-on, not a launch criterion. - A strong FIIT-blocker reachability claim — 3 seats on resplan-2605 is too few; that needs a
densely-seated obstacle floor.
fiit-library-floor-0is the known geometry blocker (fiit-library-floor-not-sim-ready); it is the motivation for the reachability probe, not a result here. - Radio / CSI — the movement side only; the coupled furnished CSI/placement re-run is Arc B1.
Expected interpretation
- TV distance CI clears 0.10 → furniture reshapes the demand surface; the empty-floor footfall the placement oracle used is biased on furnished floors, and the furnished placement re-run (Arc B1) plus the placer-on-more-floors follow-on are warranted.
- TV distance ≈ 0 → the 6.9% walkable pinch does not move a room-scale through-crowd; downstream empty-floor footfall surfaces are safe at this catalogue density, and the expensive furnished CSI/placement re-runs deprioritise.
- Furnished run fails walkable QC → the placer over-blocks navigation; a placer/geometry finding that generalises the FIIT 0/80 pattern.
Risks / honest limits
- Single floor — the obstacle-furniture substrate exists on exactly one floor; no cross-geometry claim until the placer emits obstacles on more floors. Stated up front.
- Furniture footprint fidelity — box footprints at standing height; low/under-desk clearance approximated as solid (conservative, over-blocks).
- Self-authored crowd — a through-traffic persona, not measured trajectories; ranks furniture's effect on a generative demand surface, consistent with the sim programme (campaign-rigor-audit).
- Weak reachability arm — 3 seats; directional only.
Execution log — Stage-0 verified + staging wired (2026-07-14)
Ran locally against live PostGIS (pure read + a bounded staging-code change; no pipeline):
- Furniture-as-obstacle is wired for the walker.
gis.export.floor_structure_bundleemitsobstaclesfromcell_type='obstacle'furniture filtered by active IP-113 FURNITURE arrangement layers;sim.floorgeom.walkable_from_floorsubtracts them (walkable = envelope − buffer(walls) − obstacles; occupiable seats are goals, kept). - Measured manipulation.
resplan-2605active furniture (35 obstacles) → walkable 364.25 → 339.03 m² (−6.92%) atagent_clearance_cm=2.0. Seat-onlyresplan-12439(0 obstacles) → 0.00% — confirming the seat-only floors are null and excluded. - Empty + swap arms wired this session.
stage_floor_bundlenow threadsarrangement(IP-113 layer select) andinclude_furniture(False ⇒ drop obstacles, keep goals) from the resolved config;ParamsSchemadeclares both (defaults preserve prior behaviour;extra="forbid"still holds). Files:monad_knowledge/sim/runtime/scene_stage.py,monad_knowledge/sim/walk_notebook/schema.py.
Smoke + reduction (2026-07-14)
- Reduction authored + selftest-validated.
monad_knowledge/notebooks/python/furniture_walkability.py(monad-free, IP-087): seed-paired TV distance between area-normalised footfall heatmaps, paired bootstrap CI, signed delta map + overlay + TV/CI figures.--selftest(planted furnished-detour vs empty-straight) recovers TV 0.48, clears the 0.10 threshold. Single-run config:sim/walk_notebook/config/furniture-walkability-resplan2605.yaml. - End-to-end smoke PASSED — and exposed a jam. Two
walk-notebookruns on resplan-2605, seed 0, furnished (01KXEVTBXTYJWJSS426ZJ5B9Z8: 35 obstacles, gate_passed, 7.4 s) vs empty (01KXEVTVKY42K89539FEKGXP0V: 0 obstacles, gate_passed, 6.5 s). Theinclude_furnituretoggle drives obstacles 35↔0 exactly as wired. But the furnished through-crowd JAMMED at a pinch point (~x=6 m doorway): furnished trajectory 22 079 frames vs empty 4 035, and the top-3 agents held 50.7% of furnished footfall (one agent 17.5%) vs empty's near-uniform 28%. Raw-footfall TV = 0.85 was a jam artefact, not rerouting. - Reduction hardened in response. Added the bounded-influence estimator (
footfall_mode: bounded, default — per-agent unique-cell uniform weighting, the Stage-1 gate) + ajam_warningflag from the max single-agent frame share. Re-run: bounded TV = 0.55 withjam_warning: true, and the verdict tells the operator to detune. This is exactly the Stage-1 discipline working. - Detune to
n_agents: 8did NOT clear the jam — through-traffic is the wrong probe for this floor. Re-smoke (01KXFWHFKPY3DEWPA1NVZH5RXDfurnished /01KXFWHZ83QSYC9H5P56WWMBKJempty, both gate_passed): furnished 26 824 frames vs empty 2 380 → traversal_inflation 11.3× (agents spend ~168 s of the 200 s window on the floor and mostly never complete the east→west crossing). Fewer agents made the frame-ratio worse, not better. - Door widths are NOT the cause. All 14 doors on resplan-2605 are 0.90–1.49 m; the three at the ~x=6 m pinch (y=6.0/7.9/12.3) are 1.09/0.90/1.01 m — far above the ~0.34 m an agent needs. The jam is the furniture constricting the single east→west through-path, not a narrow doorway. On a corridor-constrained floor, furniture doesn't just reshape the demand surface — it can block through-flow entirely.
- Jam detector corrected. The Stage-1 ">10% single-agent share" gate is meaningless at n<10
(uniform share is 1/n ≥ 12.5%); replaced the primary jam signal with traversal_inflation
(furnished/empty total frames; >2.0 ⇒ jam), which is agent-count-robust. Selftest 1.0 (no jam), n=8
re-smoke 11.3× (jam).
max_agent_frame_sharekept as a secondary diagnostic. - NOT launched. The through-traffic estimand is jam-contaminated on this floor. Before any fan-out,
the scenario must change to one that does NOT force a full-width crossing through the furniture —
candidates: (a)
seek_and_occupy/seat(3 seats; short localised approaches), (b) same-wing spawn→goal so agents don't all funnel through x=6, or (c) reframe the campaign around the blocking finding itself (furniture makes this floor's through-corridor impassable — interpretation #3) plus a placer sanity-check that the 35 obstacles aren't unrealistically dropped across the only corridor. Decision pending with the operator. - Placement diagnosis (2026-07-14): the placer is fine — the scenario is wrong. All 35 obstacles
sit inside sensible container rooms (0 in circulation): fixtures→bathrooms, desks/beds/wardrobes/
nightstands→bedrooms, sofas/tv_stands/reading_tables→living rooms, kitchen_counter→kitchen. Only one
obstacle is at the pinch — a
tv_standat (6.5,8.0) in living-1, 0.35 m from the door at (6.14,7.9). resplan-2605 is a fully-partitioned apartment, not an open floor; east→west through-traffic across every room is an unrealistic crossing that congests at furniture-narrowed room doorways. The furniture is realistic; the through-traffic scenario is the defect. Fix = a realistic apartment scenario (residents entering → a target room → dwell → leave), NOT a full-width crossing. Note resplan-2605 has only 3 seats, soseek_and_occupy/seatis thin; a room-targeted movement scenario (goal = a room, not a seat) uses the whole apartment with short room-to-room paths and is the better probe. Scenario redesign pending operator confirmation (it changes the primary estimand from through-traffic to intra-apartment room-approach footfall). - Room-targeted scenario re-smoke (2026-07-14): the catastrophic jam is gone, but furniture TRAPS a
fraction of agents at egress. Switched to
kind: agendas— 6 personas / 14 agents, each entering from a different edge to a distinct furnished room (bedroom-0/2/3, living-0/1, kitchen-0), dwell, leave. No agent is motionless (span<1 m = 0), and movement is distributed across the whole apartment (vs the 2-cell pileup before). BUT:traversal_inflation2.06× at a 200 s window, rising to 3.00× at 300 s — extending time made it worse, and the same 4/14 furnished agents stay present for the full sim (empty: 0/14 all complete). They enter their room and cannot egress through the furniture-narrowed doorway. Runs: rooms01KXFX6ZGJAZVQHG69RFM7QPER/01KXFX7AD78EKN05A09TDHS0JD, rooms2(300 s)01KXFXCRBHEG1Z3TWJN6K2QZ8H/01KXFXD2P03ARVBVASW2AKKYWW. TV(bounded)=0.60. - Interpretation. This is a genuine furniture-blocks-egress effect, not a scenario artifact —
the placer sat a
desk0.52 m from bedroom-0's door and atv_stand0.35 m from living-1's door, and a 0.15 m-radius (0.30 m-diameter) agent cannot reliably pass the residual gap on the way out (empty agents pass the bare 0.9-1.5 m doors fine). Two untried levers before declaring the floor unsuitable: (a)agent_radius_m0.15 → 0.10 (the repo's 2026-06-04 fidelity standard; a 0.20 m-diameter agent may clear the furniture-narrowed gap) — the single most likely fix; (b) accept it as the campaign's reachability / over-block finding (interpretation #3) and report the trapped-fraction as the result rather than the footfall-redistribution TV. NOT launched pending this decision.
Literature-grounding pass (2026-07-14) — supersedes the "try radius 0.10" lever
Two literature-verification passes (crowd + CSI simulators) were run against the vault + fresh acquisitions before any further parameter tuning, on the operator's instruction to stop ad-hoc tuning and rely on established knowledge. Verdict:
Crowd sim (jupedsim-runner / CFSM). Params are grounded; the trap is a scene problem, not physics.
agent_radius_mstays at the validated 0.20 m (hard-core radius, 0.40 m diameter, personal-space inclusive) — corroborated bycordes2024_05a8(0.2 m hard disk / 0.4 m social),echeverrahuarte2023_fcc4(~0.225 m),moussad2011_fa42. The drift toward 0.10 m was the geometry-cheat thejupedsim-runnernote explicitly warns against.desired_speed_m_sset to 1.34 (Weidmann/empirical mean;seyfried2006_f4dbN(1.24,0.05),hoogendoorn2015_13e11.34,echeverrahuarte20231.4 ± 0.2 floored ≥1.0). Runner takes a scalar; the ideal is a truncated distribution.- The 11× inflation + trapped agents are scene-geometry pathologies. At apartment occupancy
(≪0.5 ped/m²) the fundamental diagram predicts free-flow (
corbetta2023_bcb7,helbing2015_d0b0,hoogendoorn2015), so a slowdown cannot be congestion. A 0.35–0.52 m furniture-to-door gap is below the frictionless-disk passability limit (echeverrahuarte2023;aleksandrov2021_6897empirical min passable gap ≈ 1.1 m). The literature fix is door F-Space clearance (IndoorGMLdiakite2020_1b54: furniture must leave ≥0.6–1.0 m at doorways) + largest-connected-component pruning (floor_walkalready does the pruning). - The room-targeted scenario is confirmed correct — it is the literature's strategic→tactical→
operational activity model (
feng2021_f56d,duives2013_3924,hoogendoorn2015); through-traffic had no strategic layer. - Acquired:
Collision-Free Speed Model for Pedestrian Dynamics(Tordeux/Chraibi/Seyfried 2016, the primary method we run) +Generalized collision-free velocity model(Xu 2019). Standing gaps the open indices don't serve: activity-based residential occupancy movement, furnished-egress-as-phenomenon, residential occupant densities.
CSI sim (sionna-csi-runner) — verification vs literature. Method is accepted; two correctives + one weak axis.
- Grounded: Sionna RT as method (
hoydis2023_7aa4); the strongest axis is Doppler/temporal CFR (wang2015_48cfCARM — motion lives in CFR time-evolution, freq×λ = path-change speed, indoor <300 Hz); lossy-primitive body defensible (rampa2022_ca57TAP screen model). The over-coding symptom (sim floor-ID 0.98 vs real 0.83) is predicted by WiSegRT's furniture ablation (zhang2024_df4a): scene/ material diversity drives CSI variance, not mean power — so under-furnished specular scenes over-fit. - Correctives:
max_depth=3is the low end (WiSegRT uses 4 bounces); antenna count ≫ bandwidth for discriminability (cominelli2023_e6ee: 4-antenna 802.11ax = +30–40%, 20→160 MHz marginal) — the antenna knob, not bandwidth, is the sweep lever; default analyses to 5 GHz (huang2025_060dWiMANS);body_radius 0.20may be too narrow vs rampa's 0.55 m width. - Weak axis: the hand-rolled impairment magnitudes (CFO ~200 Hz, phase-noise ~1° RMS, SNR 20–30 dB) have zero vault validation (CARM measured CFO 80 kHz = 400× our residual) — physically-motivated but uncalibrated. Critical standing gap: no published Sionna-synthesized-vs-measured indoor CSI comparison exists (confirmed by search) — the exact evidence a fidelity claim most needs.
- Acquired: Vishwakarma 2021 (GAN sim↔measured WiFi-radar augmentation, SimHumalator group).
Decision status: the agent_radius 0.10 re-smoke is now MOOT (under-grounded). At the validated 0.20 m,
the furnished arm re-exposes the door-passability issue → launch is PAUSED on the door-F-Space fork
(A: fix IP-113 arrangement · B: stage-time furniture_door_clearance_m filter · C: accept 0.10 as the
repo's documented residential value). Recommendation: B — a stage-time F-Space filter operationalizes
IndoorGML directly, keeps radius at 0.20 and IP-113 data pristine, and dropping door-blocking furniture is
exactly what F-Space says shouldn't be there.
Door-F-Space fix APPLIED + validated (2026-07-14) — fork resolved (option A)
Operator chose fix the IP-113 arrangement (not the stage-time filter or the 0.10 cheat). Implemented a
door-aware placer: gis/furnish/geometry.door_fspace() reserves an IndoorGML F-Space at every threshold,
placer.furnish_room() + pipeline.furnish_arrangement() subtract it, validate_placement() now reports
door_blocking_obstacles, and pipeline.refurnish_floor() re-materialises a floor reversibly.
Re-materialised computed-resplan-2605-floor-0 (door_clearance_m=0.6, seed 7): 35 → 27 obstacles
(the 8 door-blockers dropped), door_blocking_obstacles = 0 across all 14 rooms/14 doors. Old layer
preserved inactive as computed-resplan-2605-floor-0-preDC (35 obstacles/3 seats) for rollback.
Re-smoke at the validated 0.20 m CFSM radius (v0 1.34):
- furnished
01KXFZCC1GZ0M9XT62T4XHZCN6/ empty01KXFZCPJG3AWYQA6NZRVR972A traversal_inflation0.91 (was 3.00× @ r0.15, 1.48× @ the r0.10 cheat) → no jam, no trapped agentsjam_warning=false,max_agent_frame_share=0.15, noimpassable-riskQC warningstv_mean0.36 — a clean footfall-redistribution signal, uncontaminated by the jam artifact
Exactly the literature's prediction: at apartment occupancy the FD gives free-flow, so fixing the door F-Space (geometry) lets the validated 0.20 m agent pass freely. The campaign is now on grounded footing — ready to launch the multi-seed run for a real TV CI.
RESULT — multi-seed TV confidence interval (2026-07-14)
Ran the door-aware arrangement furnished-vs-empty across 8 seeds at the validated 0.20 m CFSM radius
(v0 1.34), n_boot=2000 over the 8 pairs. Furnished run_ids seed0..7:
01KXFZM531MD9XJX6MVX2XG7SQ 01KXFZMJEJ9XMET4MSMB3KY1G8 01KXFZN27ZW965237M8Y4Q2A7C 01KXFZNFAD01YKNPZN253SM18Z 01KXFZNW1RZJQKWBB7RRDVY2SM 01KXFZPA2MEEPH4HF6R7EAQJ5A 01KXFZPN6SZVV407QTY1CD14ZZ 01KXFZQ3S0XFRX8GMBCHH7QH2Q ; empty: 01KXFZS13E5JSH8C6B9Z306W0C 01KXFZSCDNG1WEHH0FKABCB05C 01KXFZSRDW1VH6MEWP69JX6F68 01KXFZT314WA27G5FY8V68NVA9 01KXFZTDTR5VXNJDQ5YDT8WH27 01KXFZTQN1SWZ7Q4CRBDST58TW 01KXFZV43RAMSF09RVZ0ASNTY6 01KXFZVFA9NYYXRFGAH7DM7WVQ .
| metric | value |
|---|---|
| TV (footfall redistribution) | 0.540, 95% CI [0.485, 0.577] |
| traversal_inflation | 0.96 (no jam — furnished≈empty) |
| jam_warning | false |
| max_agent_frame_share | 0.15 |
| min_effect_size | 0.10 (CI clears it → significant) |
Headline: in a furnished apartment, in-room furniture significantly redistributes pedestrian footfall (TV ≈ 0.54) relative to the bare floor, and — crucially — it does so without inducing any traversal jam (0.96× vs empty). The redistribution is a genuine routing-around-furniture effect, not a congestion or egress-trap artifact. This is only credible because (a) the CFSM params are literature-validated (radius 0.20, v0 1.34) and (b) the IP-113 placer now respects door F-Space (door_blocking=0), so the measured signal is the furniture's spatial effect, not a passability defect. Campaign COMPLETE.