pendingInterrupts

The interrupts the thread is waiting on: those of the last run that ended cleanly, when it stopped to ask. Empty on a thread that is not waiting; while it is not empty, run and send throw unless a failed resume left its answers owed, in which case they retry it.

The same list RunState.Finished.interrupts carries, held here because the transcript stops carrying it the moment a run fails -- RunState.Failed names no interrupts -- while the thread is still waiting on them. A StateFlow for the same reason transcript is: a UI that gates its composer on this, rather than on the transcript's run, keeps it closed through a failed resume and can still draw the questions to retry from.