The IK solver is called with a twist in tool frame and generates a velocity vector in joint space, which is then integrated to positions. That's why the velocity is not zero in the end: one should probably add another field to the message with the last position (is discarded now) and zero velocity.
Maybe the hardware plugin should be improved in a future PR using both position+velocity fields.
_Originally posted by @christophfroehlich in https://github.com/ros-controls/ros2_control_demos/issues/430#issuecomment-1893268115_