
Two SO-101 arms face each other across a dinner table. Given "bring the cup across the table and set it on the plate", the right arm grasps and lifts a 130 mm cup, sets it mid-table, and the left arm places it on the plate. "Slide the cup to the middle of the table" is the single-arm half. A language-conditioned policy must do the right one. What we built: • Physics-honest simulation in MuJoCo 3 (Menagerie SO-101, 200 Hz physics / 50 Hz control). Our early scripted demos were not grasping at all — they rewrote object pose. We replaced that with real jaw contact and a holding() check; the scripted controller passes 7/10 and 14/20 with no predicate loosened. • Dataset: 749 attempts → 400 success-only episodes, 323,442 frames at 50 fps, 3 cameras, 12-D bimanual state/action, 2 task strings, DART noise. Every failure is counted and the fault taxonomy is published. • SmolVLA (450M) fine-tuned with LeRobot 0.6.1. Run 1: Tesla T4, 1.0 epoch. Run 3: RTX 5090, bf16, 2.5 epochs. • OpenVINO export: FP32 1,586 MB → FP16 800 MB → INT8 409 MB (NNCF). The full flow-matching loop is inside the IR. • A torch-free closed-loop evaluator run on Intel's bare-metal Core Ultra X7 358H: FP16 on CPU 1,991 ms, on the Arc B390 iGPU 124.6 ms per 50-step action chunk — 8× real time, 16× faster than CPU. INT8 is 35% slower on CPU (dequantisation cost); the NPU compiler rejected the dynamic-shape graph. Results, stated plainly: both runs score 0/20 closed-loop. Best cup-to-plate error 105 mm (run 1) and 96 mm (run 3). Replaying training observations through the IR gives 0.66–0.85 correlation, so the pipeline is correct and the shortfall is structural to the imitation budget, not undertraining. We would rather submit a measured 0/20 with the cause isolated than an unmeasured claim. Every number has an evidence file in the repo. Limitations: simulation only; fixed cup size; NPU unexercised.
16 Sep 2026