"It respects the constraint dates if the task has no progress."
You answered the question in the question.
"No progress" means no actuals. That is, no actual start, no actual duration, finish, work or cost.
A task in progress can have an actual start and nothing else actual, but an actual start is the minimum that a task in progress can have.
Actuals trump everything. If there is an actual start, and perhaps also whatever else actual, no date constraints or predecessors have any effect.
Also, resource leveling cannot delay a task (which has over-allocated resources) if the task has an actual start.
Marking a task as actually started and actually finished can lock in over-allocation and leave you with a person (resource) with apparently 10 hours work on a day on which she only had 8 hours availability.
Why are you trying to move a task which has progress?
If you are trying to change the actual start, you need the tracking table.