Normalized status for long-running Imp work.
The artifact is ordinary immutable data suitable for terminal UIs, LiveViews,
telemetry consumers, and tests. completed and total are optional because
some providers expose a phase before they expose a work estimate.
Summary
Types
@type t() :: %Imp.Observability.Status{ completed: non_neg_integer() | nil, message: String.t(), metadata: map(), phase: atom() | String.t(), state: :pending | :running | :succeeded | :failed | :cancelled | :unknown, total: non_neg_integer() | nil }