EXPERIMENT_013 // SPATIAL.TELEMETRY.PLAYGROUND
A simulated gallery floor where twelve-plus autonomous synthetic visitors move under distinct `wander`, `cluster`, and `queue` behaviours, streaming structured spatial events — zone entry/exit, dwell, crowding — to a rule-based agent loop that adjusts lighting, display content, and routing in real time. Zero LLM cost by default; deterministic seeded runs make the whole loop testable.
LOADING EXPERIMENT...
Gartner, *Top Predictions for Data and Analytics in 2026* (March 2026), forecasts that by 2029, AI agents operating in physical environments will generate ten times more data than all digital use cases combined. This experiment makes that claim tangible: a simulated gallery floor streams structured spatial telemetry — zone entry and exit, dwell time, crowding — to a rule-based agent loop that reads the stream and visibly reconfigures the space. No camera, no LLM call, and no server round-trip are required to prove the mechanism.
HOW IT WORKS
Twelve or more synthetic visitors move under three distinct steering behaviours — `wander` (random-walk heading changes), `cluster` (steering toward the centroid of other cluster visitors in the same zone), and `queue` (single-file drift with minimum following distance). A seeded `mulberry32` PRNG drives every random choice — spawn position, heading, jitter — so the same seed always produces the same run.
Every tick, `deriveEvents()` compares each visitor's current zone against its previous zone and emits structured JSON: `zone_entry`, `zone_exit`, `dwell_threshold` once a visitor lingers past four simulated seconds, and `crowding` when a zone's occupancy crosses a threshold. The inspector panel renders this stream live — the venue-as-data-layer thesis made literally readable.
A zero-LLM-cost `decide()` function consumes the event stream and makes three distinct environment adjustments: lighting brightens with crowding level, display content escalates on sustained dwell, and routing suggests the least-crowded open zone once crowding turns critical or a zone is manually blocked. Every decision in the log carries a `triggeringEventId` linking it back to the exact event that caused it.
Add or remove visitors, block a zone, or type a new seed to reset the whole floor deterministically. Blocking a zone fires an immediate routing decision — no waiting for the next tick. A live status region below the canvas gives a plain-English text alternative of the current floor state for screen reader users, updated alongside the visual simulation.
WHAT THIS PROVES
Physical space can be treated as a first-class data layer without any camera or sensor hardware — a simulated visitor stream is enough to demonstrate the shape of the problem Gartner's 10x-by-2029 forecast describes: structured spatial events feeding a decision loop that acts on the physical environment in real time.
An agent loop does not need an LLM call to be an agent loop. The rule-based decision engine here is fully deterministic and unit-tested in isolation from rendering — two engines seeded identically and driven through an identical script of ticks and perturbations produce byte-identical decision logs, which is a stronger reproducibility guarantee than most LLM-backed agent demos can offer.