Test Builds:
The fix:
Avoid the evaluation of constraints when computing the parent-inverse matrix.
Constraints are meant to be evaluated last; object transforms are computed this order:
- parent->obmat (the parent object's world matrix)
- ob->parentinv (the object's parent-inverse matrix)
- Object's loc/rot/scale
- Object's constraint evaluation
When the constraints are used to compute the parent-inverse matrix, their effect is moved from step 4 to step 2 in this list, potentially rotating or scaling the object's local transform. This causes unwanted movement as reported in T82156.
This behaviour (erroneously taking the constraints into account) has been in Blender since the first commit, so historically I can only find "Initial revision" as context.