The Loop Lab · Charlot Lab · Explorable 1 of 3
Strip the Senses
The controller below never changes. Only what it is allowed to know, and how stiff its pivot is. Watch which one holds it up.
The body
The senses
When to look
The world
What is actually holding the pole up?
At high pivot stiffness, the body is. Turn every sense off and walk the stiffness slider up: the region held climbs from nothing to most of it, and the controller never changes. A pole on a stiff pivot is a stable equilibrium, and gravity does the work a sensor was assumed to be doing.
The cart-pole runs the two vectors of the Agency Axis at once: protective, stay inside the upright box, and generative, track a moving target. The solid figure is the body. The faint one is the controller's estimate, carried forward on the efference copy between sensor reads. When they separate, the controller is flying on its own prediction.
The statistics are not the animation. They come from 128 seeded runs of 400 steps, recomputed every time you move a control, and every mean carries a two-standard-error band so you can see which differences are real.
Two things to try. Turn every sense off and walk the pivot stiffness from 0 upward, watching the region held. Then set stiffness back to 1.0, turn every sense on, and compare what the senses bought: the region was already high, and what moves is the task.
What can this run honestly claim?
Less than it measures. Every run emits a LOOP/1 record, and the fields this simulation cannot support are marked refused rather than estimated. A wall meter cannot separate compute from actuation; a fall count is not a certificate; an unweighted norm over metres and radians is an index, not a quantity. Each refusal names what would have to change to fill it.