Diagnostics: spans, severities, and the structured form every message is built as.
Design: spec/03-architecture.md. Layer rank 1, see spec/18-package-layout.md.
A diagnostic is a value, not a string. It is rendered to a terminal, to JSON for editors,
or not at all when a caller is only counting errors, and building it as a value is what
makes those three the same code path. spec/03-architecture.md makes the JSON form a
tier 2 stability promise because editors consume it.
Status
The severity, span and diagnostic types are real. Rendering, source maps and the
-fdiagnostics-format= plumbing land in M0 and M1.
This crate is tier 3 in spec/18-package-layout.md section 18.5: its Rust API is
explicitly unstable and will change without a major version bump.