Process lifecycle without flattening interactive input and termination.
Summary
Callbacks
@callback attach(ExecutionPlane.ExecutionRef.t(), pid(), keyword()) :: :ok | {:error, term()}
@callback cancel( ExecutionPlane.ExecutionRef.t(), keyword() ) :: :ok | {:error, term()}
@callback end_input( ExecutionPlane.ExecutionRef.t(), keyword() ) :: :ok | {:error, term()}
@callback send_input(ExecutionPlane.ExecutionRef.t(), iodata(), keyword()) :: :ok | {:error, term()}
@callback start( ExecutionPlane.Family.ProcessRequest.t(), keyword() ) :: {:ok, ExecutionPlane.ActiveExecution.t()} | {:error, term()}
@callback status( ExecutionPlane.ExecutionRef.t(), keyword() ) :: {:ok, ExecutionPlane.Runtime.Status.t()} | {:error, term()}
@callback terminate( ExecutionPlane.ExecutionRef.t(), keyword() ) :: :ok | {:error, term()}