A linear process ships whatever the last step produced. If a review finds problems, the agent is left to remember to go back, and in a long session it often does not. A fix loop makes "go back and fix it" part of the structure: the check is a decision, one outcome is "passed", the other is "needs fixes", and the failure path leads back.
Good fix loops return to the right place. Sending failed work back to the very start wastes the steps that were fine. Sending it only to the fix step skips re-verification. The usual shape is: build, verify, review; if the review fails, run a fix, then return to verify, so the fixed work is checked again before it can reach review a second time.
Placing a gate after the loop turns it into an enforced definition of done. The work cannot move past the gate until the condition is met, so "only merge on a passing review" becomes a property of the process, not a hope about the agent.