# 1.0.0-beta.13 Diagnostic Catalog And Schema Policy

Status: release scope for `1.0.0-beta.13`.

`1.0.0-beta.13` is a docs/tooling-only policy slice for the existing
diagnostic surface. It keeps the `1.0.0-beta` source language, typed core,
runtime, standard library, compiler CLI, diagnostic output shape, ABI/layout,
and compiler-known runtime names unchanged.

## Scope

- Add `docs/language/DIAGNOSTICS.md` as the beta policy for
  `slovo.diagnostic` version `1`.
- Document the S-expression and JSON relationship.
- Document required and optional fields, severity/source/range/related-span
  semantics, JSON-line discipline, source-less diagnostics, and
  artifact-manifest diagnostic metadata.
- Define diagnostic compatibility and migration classes.
- Inventory the current diagnostic codes covered by
  `compiler/tests/diagnostics_contract.rs` and the matching `.diag` snapshots.
- Update README, language roadmap, language spec, release notes, migration
  policy, and post-beta roadmap to introduce beta13 and link the diagnostics
  policy.

## Acceptance

- `docs/language/DIAGNOSTICS.md` names schema `slovo.diagnostic` and version
  `1`.
- The document is clear that S-expression diagnostics and JSON diagnostics are
  encodings of the same data model.
- JSON diagnostics are documented as one object per line on stderr, without an
  array wrapper or pretty-printing requirement.
- Source-less diagnostics are documented without inventing fake source spans.
- Artifact manifests are documented as carrying diagnostic schema version,
  diagnostic encoding, and diagnostic stream metadata, not a second diagnostic
  schema.
- Human prose is documented as beta-flexible, while machine fields, codes,
  schema/version markers, ranges, JSON-line discipline, and golden fixture
  shape are compatibility-sensitive.
- The code catalog is concise and derived from the current golden diagnostics
  contract.

## Explicit Non-Scope

- no source-language syntax change
- no typed-core, lowering, runtime, stdlib, or ABI/layout change
- no diagnostic-output shape change
- no LSP server, watch mode, SARIF, daemon protocol, or debug adapter
- no stable Markdown schema
- no stable `1.0.0` diagnostics freeze
- no source-map, DWARF, or LLVM debug metadata contract
- no compiler-emitted diagnostic catalog artifact
- no release publication, tag, push, or version publication work

## Expected Controller Verification

- Review the policy for consistency with `compiler/src/diag.rs`,
  `compiler/src/main.rs`, `compiler/tests/diagnostics_contract.rs`, and the
  current `.diag` snapshots.
- Confirm the catalog count matches the current contract: 358 snapshots and
  114 unique diagnostic codes.
- Run lightweight docs checks:
  - `git diff --check -- README.md docs/POST_BETA_ROADMAP.md docs/language/DIAGNOSTICS.md docs/language/MIGRATION_POLICY.md docs/language/SPEC-v1.md docs/language/ROADMAP.md docs/language/RELEASE_NOTES.md .llm/BETA_13_DIAGNOSTIC_CATALOG_AND_SCHEMA_POLICY.md`
  - run an `rg` check for stale beta12-only current-stage phrasing across the
    same touched docs
- Do not commit, tag, push, or run release publication from this worker scope.
