The problem is that movement in games is not continuous, but kind of calculate the position each frame. So the body may never really be on 168. Could you update the position manually after surpased 168? Something like:
if global_position.y >= pos_ini_y + 8 and (!Input.is_action_pressed(action) or !held):
held = false
velocity.y = -500
else:
velocity.y = 0
global_position.y = 168
Yoy may also use a invisible static body, and disable the collision after it collided with the object so it does not collide with others. Or use different layer/masks so it does only affects the body you want. IDK how your game is thought.