Drag-back finally looks right.
Instead of the code guessing when the foot is near the ball, the animation now says exactly when the sole is on it. A notify state carries the ball back under the sole, the ball stops dead, then a second notify kicks it forward with real physics for the exit.
It took way longer than it should have. Passes and shots in my game already worked exactly this way, contact authored on the animation, and I never noticed I could reuse it for dribbling. "I had already solved this elsewhere in my own codebase" is a feeling every developer knows.
Up next: the same logic for normal dribbling, then more turns.
Shipped: animation-driven drag-back contact