Typed domain-error projection preserving refusal and retry semantics.
@spec normalize(map()) :: {:ok, map()} | {:error, atom()}