A robot description is source code you did not write, in a format whose conventions you did not choose, and the failures it causes are silent. Not wrong-looking. Silent. Take the joint limit. In UsdPhysics a revolute limit is in DEGREES. Write ninety, mean a quarter turn. A consumer that assumes radians gets ninety radians, which is fourteen full turns, which is no limit at all - off by a factor of fifty-seven point three. Now here is the part that catches the person who fixes it: the prismatic joint on the next line has a limit in the identically-named field, and that one is a LENGTH. Convert it and you have destroyed it. The same field name means two different things two lines apart, so there is no global fix, only a per-joint-type one. Take metersPerUnit. A stage authored in centimetres and read as metres is not merely small. Lengths enter dynamics through the moment arm and through the inertia, and they enter differently, so the gravity torque changes by a factor that is NOT the length ratio. In the Bench it moves by about zero point four three while the lengths moved by a hundred. That matters because it means you cannot rescue it downstream: there is no number you can multiply your torque by to undo a units mistake made at load time. Take upAxis. It defaults to Y. Roboticists assume Z. Gravity is ninety degrees from where you think it is, the file parses, and the robot falls sideways in a way that looks like a controller bug. And then the thing that is really about measurement rather than about file formats. In the default pose this arm's first joint rotates about Z and gravity points along Z, so the gravity torque is EXACTLY zero. Not small - zero. Which means the hundred-fold length error contributes nothing you can detect, because zero times anything is zero. Flip the up axis and the same error is worth almost five newton-metres. The bug did not change. Your ability to see it did. That is the general lesson: a test that does not load the thing you are testing cannot fail.