What I've learned in last week is that a harness is basically a while loop.
In each iteration you make an LLM call, perform some work (e.g. tool call), augment the prompt (append or compact etc.)- not necessarily in that other- and continue.
Until an end condition is satisfied. Then you break out.