The stage's scope (first argument, like decide()).
{ reason, expects? } — carried verbatim to the checkpoint.
The resume input, typed as T. The engine does not validate it
against expects — declare the shape you want and check it if the
answer comes from somewhere you do not control.
Pause the run and ask for an answer.
On the first pass there is no answer pending, so this THROWS an
InterruptSignal: the engine commits the stage's writes, builds the normalFlowchartCheckpointwithpauseData= your payload, andrun()returns{ paused: true, checkpoint }. Hand the checkpoint and the answer toexecutor.resume(checkpoint, answer)and the stage runs again from its top — this time the call returnsanswer.