"Diagnostic taxonomy (compiler)"

Diagnostic taxonomy

Structured diagnostics (vox_compiler::typeck::Diagnostic) carry a category (DiagnosticCategory) for filtering, metrics, and documentation. Definitions live in crates/vox-compiler/src/typeck/diagnostics.rs.

CategoryWhen used
parseReserved for parse-stage diagnostics when surfaced through the same struct (primary parse errors today use ParseError until unified). ParseErrorClass includes ReactiveComponentMember for unknown tokens inside a Path C / @island reactive body (stable for metrics and doc extraction).
loweringAST → HIR lowering shape issues (future unified messages).
typecheckDefault: inference, unification, undefined names, arity, match exhaustiveness, etc.
hir_invariantStructural checks from validate_module after lowering (empty names, empty route paths, …).
runtime_contractHost / deploy / embedding guards (when reported via the same pipeline).
lintAST-level declaration lints (@index / @search_index), hook style warnings, and policy diagnostics. Severity can be warning or error (for example, db.Table.query(clause) now reports a lint-category error).

CLI JSON diagnostics (vox check --json, shared pipeline) include a category field per row when using the structured diagnostic path.