Transform position differs between update/lateupdate when using IK/Root Motion

I have a rigidbody (dynamic) based character controller, it reads the animator velocity from root motion animations from an animator.

I have IK running for feet, etc.

I have noticed that reading any position value in Update gives wildly incorrect positions, but reading transform values in LateUpdate will produce correct values.

This image shows my character root (transform handle in middle of character), but you can clearly see IK helpers/hints and root misplaced at the floor?

This creates tons of problems as positions gets mismatched, you can see the Cinemachine tracking the “wrong” position, and the Ogre is looking at the floor instead of at the player.

How can I solve this?