Why are Rigid Body Constraints so loose?

I’ve been playing around with Rigid Body constraints (mainly Hinge) for a while, and I’ve noticed that Limit > Angular > Z Angle doesn’t completely lock the other two rotational axes.

I’ve also noticed that rigid bodies drift beyond their constraint if moved or collided with significant momentum.

It does say in the documentation (specifically the Fixed Constraint page that:

Since the physics system does have a tiny bit of slop in it, the objects do not move as rigidly as they would if they were part of the same mesh.>

Is there a rationale behind building uncontrollable behavior into RB Constraints?

Example project:
StickDoll_RigidBody_001.blend (1.4 MB)

I’ve set up a series of sticks like a doll, using instances of a brass rod to house constraints.

Everything is hinged together, and the base plate jumps between animated and dynamic to control the puppet.

Playing the simulation, the sticks drift away from their original configuration, though they eventually come back together. Parts also Pitch and Yaw unexpectedly.

I’m controlling the Y direction of the empty constraint-holders with an empty who’s Y axis never changes, but I’ve tried numerous methods of locking the rivets down (Parenting, “Child Of”, “Copy Location/Rotation”) to corresponding sticks to no avail. Am I missing something?

EDIT: I’ve also tried the “Generic” constraint in place of Hinge, since it has more explicit controls for rotatinal and linear movements. The doll became even less predictable that way.

Here you see the doll at frame 0, with all of the sticks aligned ramrod straight.

A hundred or so frames later, everything is now way out of alignment.

I believe I’ve solved my issue by cranking up the “Solver Iterations” value to something north of 100. Properties → Scene Properties → Rigid Body World → Solver Iterations

I only just happened to mouse over that field, or I wouldn’t have realized it had anything to do with Constraints specifically. I expect you could fiddle with the “Substeps Per Frame” as well, but the RB objects themselves in my project are behaving predictably, thus far.