Behaviour for progress tracking and log destination selection.
@callback last_completed(term()) :: String.t() | nil
@callback log_paths(term(), String.t(), String.t()) :: %{ log_file: String.t() | nil, events_file: String.t() | nil }
@callback mark_completed(term(), String.t(), term()) :: :ok
@callback mark_failed(term(), String.t()) :: :ok
@callback setup(map()) :: {:ok, term()} | {:error, term()}
@callback statuses(term()) :: map()