move_to(x, y, z, open, steps) absolute world target · ≤ 8 mm per axis per step move_by(dx, dy, dz) relative move from the achieved pose rotate_down(yaw) point the gripper down at a yaw grip(open) 0 closed to 1 open hold(seconds) wait and let contact settle look() checkpoint · fresh images from the cameras program(code) a short bounded program over the same calls finish(note) a stop request, not a verdict


What every policy gets
Three RGB cameras, the measured gripper pose and the camera calibration. Primitives it can call one at a time or compose into a short bounded program. Underneath, one 20 Hz waypoint generator, inverse kinematics and joint servos. The controller is the same for every run, so differences belong to the policy. Today the harness drives the twin with GPT-6 Astra, Claude Fable 5 or Claude Fable 5.1 at the controls.
- No object positions and no hidden success signal. Cameras and proprioception only.
- Successive targets move at most 8 mm per axis per control step. Correction is capped so a lagging arm catches up without lunging.
- Optional ideal depth assistance: a depth reading at one chosen pixel, frozen and labelled per run.



