Structured diagnostics for render failures.
The pipeline wraps stage failures in this struct so callers receive actionable context (what/where/why/next) plus correlation metadata.
what/where/why/next
@type t() :: %Rendro.Error{ details: map(), next: String.t(), reason: term() | nil, render_id: String.t() | nil, stage: atom(), what: String.t(), where: String.t(), why: String.t() }
@spec from_stage(atom(), term(), map()) :: t()