Patch probes, swept across depth
Where in the encoder can the model see the cube and gripper?
gripper localisation error by layer · cube ±2px everywhere
Find where your robot model fails, see why inside it, and ship only the fixes that pass a held-out gate.
The side-view cube probe misreads a blue cube by 5–9 px, so the controller hovers and never closes the gripper. JEPA surprise does not notice.
How it works
No guardrails, nominal and drift.
Every failure joins the regression suite.
Probes, attribution, a failure detector.
Weights inside, guardrails outside.
Held-out seeds decide what ships.
Mechanistic interpretability
Where in the encoder can the model see the cube and gripper?
gripper localisation error by layer · cube ±2px everywhere
Which units drive the failing actions. Fine-tune only those.
round 1 · 637 failing steps fc1[24] ← gripper_closed, cube_v_agent fc1[15] ← cube_v_agent, gripper_closed fc1[31] ← eef_x, cube_v_agent, cube_v_side top inputs: eef_y, cube_u_agent, gripper_u_agent 6 of 32 units carry 40% of the attribution
Probe features plus JEPA surprise flag a failure before it lands.
top signal · eef_x, gripper_conf_agent, cube_conf_agent
Fix inside and outside
Probe recalibration, DAgger, circuit-restricted fine-tunes and Muse Spark weight edits.
Sandboxed, tested in sim, fails closed.
def check(state, masks, z_now, z_pred, action):
# predicted contact with the table: clip, don't stop
nxt = state["eef_pos"][2] + action[2]
if nxt < state["table_z"] + 0.012:
a = action.copy(); a[2] = max(a[2], 0.0)
return block("near_table", a)
if state["perception_conf"] < 0.3:
return block("cant_see_cube", retreat_up())
return ALLOWThe gate
Results so far
v0 failed 18 of 80 gate episodes. After two rounds the champion fails none: 50/50 nominal, 30/30 held-out drift.
| round 2 candidate (vs. champion: 98% nominal, 63% held-out) | nominal | held-out drift | tests fixed | gate |
|---|---|---|---|---|
| Probe recalibration + safety envelope | 100% | 100% | 11 | promoted |
| Probe recalibration | 96% | – | – | rejected: unsafe actions on nominal rose |
| DAgger fine-tune | 94% | – | – | rejected: nominal success fell |
| Muse Spark guardrail | 100% | – | – | rejected: blocks 36% of steps (max 5%) |
– : rejected on nominal, so the gate never ran its held-out and regression suites.
Bring your own compute
Your Baseten key and GPUs never touch our servers.
One command deploys to your workspace.
One script, served over a tunnel.
Agents run on Muse Spark.