///|
/// What a run reports while it happens. The stream modes of a graph engine are
/// one type here: the caller takes the variants it needs and ignores the rest.
pub(all) enum Event[S, U] {
  ///
  /// The whole state after a superstep.
  Values(S)
  ///
  /// One node's write, as it is folded in. Several arrive per superstep.
  Updates(node~ : String, U)
  ///
  /// Whatever a node passed to `Run::emit`.
  Custom(node~ : String, Json)
  ///
  /// A node has been handed to the executor.
  Started(node~ : String)
  ///
  /// A node finished and its steps are about to be applied.
  Finished(node~ : String)
  ///
  /// The run stopped and is waiting for `resume` with this value.
  Interrupted(Json)
}