Just had another thought about this. Which might also solve ops/parts ordering.
Maybe generalize “pause” into something like “checkpoint”, which may or may not generate a pause.
The main idea would be that a “checkpoint” forces the end of a block of work to sort. So instead of exposing and adding controls for how K:M sorts work – especially in regard to running all ops for each part vs all parts for each op – only require that all the work to be generated by the ops before a checkpoint gets done before continuing beyond the checkpoint.
A checkpoint could have a switch to generate a pause/hold, or not. Or for greater generality: a free text field to inline into the output – which could default to {lift Z, pause, return Z}.