The label that lies
A cart-pole with a spring at the pivot: the spring is the substrate, the body's own mechanics, holding the pole with no sensor and no delay. Two policies were cloned from the same demonstrations. One learned from the actions the demonstrator actually logged. The other learned from actions an observer reconstructed from the motion, the way video pipelines reconstruct hand pose. The observer's physics has no spring in it, so everything the spring did ends up inside the labels. This instrument runs both policies, live, from the exact coefficients the bench trained.
Predict first
The reconstructed labels are provably wrong: at this stiffness they absorb the spring's whole restoring torque. In calm air, both clones survive every episode anyway. Now a steady 1.5 N side-load is switched on, for training and for testing alike, so the spring holds a displacement the way an arm holds gravity. What does the reconstructed-label clone do?
The labels
Reconstruction inverts the textbook cart-pole, no spring, no damper, no knowledge of the wind, on each observed transition. From outside, the spring's torque and the motor's are indistinguishable, so the label credits the motor with the spring's work. That is what an inverse-dynamics or hand-pose pipeline does to every video frame.
The air
Each clone was trained on demonstrations recorded in the condition it is tested in, 128 episodes, the bench's own seeds. The wind is not a distribution shift. It is a load the substrate holds, and the question is who the labels say was holding it.
The body
Pivot stiffness is fixed at kp = 1.00 N·m/rad, above the
critical 0.5264, so the pole is passively stable: this body balances with the
motor unplugged. What it cannot do alone is follow the moving target, which is the policy's
whole job.
Run the score
The live view runs one episode at a time. This button runs 64 more without drawing, so the region column converges while you watch. The bench's number is 256 episodes on disjoint seeds.
Where these numbers come from
| Quantity | Value | Status |
|---|---|---|
| Bench | TWO-OS/1, ARM 2 and ARM 3 (TR-2026-43) | measured · ours |
| Region, calm, true labels | 1.000 ±0.000 | measured, 256 seeds |
| Region, calm, reconstructed | 1.000 ±0.000 | measured, 256 seeds |
| Region, loaded, true labels | 1.000 ±0.000 | measured, 256 seeds |
| Region, loaded, reconstructed | 0.000 ±0.000 | measured, 256 seeds |
| Policy coefficients | 4 × 257, RFF-256 ridge | exported from the bench, not re-fit |
| Browser port vs bench | max state deviation 2.4e-14 over 12 replayed episodes | measured in node, this file |
The four policies here are the bench's own: random-Fourier-feature ridge
regressions trained at kp=1.00, sigma=0.10 on seeds 5000 (calm) and 9000 (loaded),
exported to 9 significant digits. The aggregates above were re-measured with the exported,
rounded coefficients before this page was allowed to quote them. The plant is SENSE/1's,
the same source the bench executes by AST extraction. Verification: the node check replays
12 bench episodes through this file's own physics with the bench's exact noise
sequences. Result: 12 of 12 episode outcomes match, maximum state deviation 2.4×10−14, and rerunning all four 256-seed aggregates with this page's own random numbers lands on the bench values exactly: 1.000, 1.000, 1.000, 0.000.
Both toggles retrain nothing: every coefficient on this page came out of the bench. What changes is only which of the four cloned policies drives, and whether the load is on. The lie in the labels is invisible until the substrate has steady work to do, and then it is the whole outcome.