Significant progress down this line of thinking. Enough that I see there is no good way to deal with exceptions. Exceptions will happen, and I will need a way to report them. So there have to be tasks at the high-level API, or something. Some way to report errors long after the user has fired and forgot an operation.

So likely back to the drawing board.