Yep. The fundamental problem that requires loops is that opus et al are lazy AF. They do not "implement the plan, make no mistakes". They'll do a subset of {A..M} phases in a plan (90% of A, 70% B, 30% L, 0% M, etc.) and then say "all done!" when it compiles. So, you've got to loop it "do this until it's done". It's fundamentally brute forcing the problem, because the models aren't designed for completeness, just complete-enough, and then lies to you.
The harness exacerbates the problem. People have implemented some privately which do this correctly, but aside from the one I just made available on gh, I'm not aware of any that are public which do so natively/by core design. (And even then, it's sometimes iffy...)