A portable RelayMark validation diagnostic.
Diagnostics use JSON string keys so they can be compared directly with the canonical conformance fixtures and serialized without adapter-specific conversion.
@type level() :: String.t()
@type t() :: %{required(String.t()) => term()}
@spec error(String.t(), String.t(), keyword()) :: t()