I've been tinkering with building some orchestrator code and what i've found is that if you have a block of logic running at each boundary, you can just keep all the messages in a queue
then you can have a fast/cheap classifier like Haiku (or something even cheaper) iterate (but not gatekeep) the queue and distinguish whether each message is a correction or additional work, and corrections get pulled out to a separate queue.
then at each boundary, the corrections can be used to edit the current prompt or adjust the current work however you want to manage that, and the primary queue stays a queue.