I found the bug. As expected, it was something stupid, and right in the middle of a blueprint I looked at 1000 times: the PlayMontageAndWait node has a “Anim Root Motion Translation Scale” input, which was set to 2.0 (and I can’t remember why of course…).