Diagnostics have a stable code, severity, origin, source span, and recovery flag. Origins separate syntax, template, semantic, resource-limit, and unhandled-node failures.
Representative codes:
query.bytes,query.tokens,query.nodes, andquery.depth;query.literal-bytesandquery.regex-bytes;template.unclosedandtemplate.empty-name;promql.syntax,logql.syntax, andtraceql.syntax;promql.unknown-function;ast.invalid-span.
Consumers should branch on code, not English text. Diagnostics never include
credentials, backend queries, or resolved Grafana variable values.