A loop maintaining a boolean flag to decide when to stop; the agent reasoning about termination must track the flag's state through every iteration.
The exit happens at the moment it's decided via break/return/continue; the agent reads the loop's termination as a direct statement.
Before the refactoring
let found = false;for (const p of people) {if (!found && p.name === target) {matched = p;found = true;}}
After the refactoring
for (const p of people) {if (p.name === target) {matched = p;break;}}
The agent must mentally simulate the flag's lifecycle across iterations; bugs hide where the flag isn't set when expected.
If the loop body is large, the break point becomes hidden inside the body and the agent must scan to find termination; extract a function around the body to keep the exit obvious.
The agent reads termination as a direct statement at the point of decision; the loop's intent becomes literal.
Replacing flags with breaks in large loop bodies buries the exit point — the agent must scan the body to find termination, which can be harder than tracking the flag.