Minimal workflow module DSL for the core slices.
@callback handle_query(String.t(), [term()], term()) :: {:reply, term()} | {:error, term()}
@callback run(term()) :: term()