odcs 0.9.1

Reference implementation of the Open Data Contract Standard (ODCS)
Documentation
# Diagnostics Guide

Diagnostics mirror DTCS style.

Implemented Rust types in [`src/diagnostics/`](../../src/diagnostics/):

```rust
pub enum Severity {
    Error,
    Warning,
    Information,
}

pub enum DiagnosticStage {
    Parse,
    CanonicalObjectModel,
    Validation,
    Analysis,
    Planning,
    Compilation,
    Runtime,
}

pub enum DiagnosticCategory {
    Syntax,
    Structure,
    Type,
    Reference,
    Semantic,
    Compatibility,
    Capability,
    Runtime,
    Extension,
}

pub struct Diagnostic {
    pub id: String,
    pub severity: Severity,
    pub stage: DiagnosticStage,
    pub category: DiagnosticCategory,
    pub message: String,
    pub object_ref: Option<String>,
    pub remediation: Option<String>,
    pub validation_phase: Option<ValidationPhase>, // JSON: validationPhase
}
```

Validation-stage diagnostics are built with `validation_error(phase, id, category, message)`, which sets `stage: Validation` and `validation_phase: Some(phase)`. Parse-stage diagnostics omit `validationPhase`.

Standard diagnostic identifiers live in [`src/diagnostics/codes.rs`](../../src/diagnostics/codes.rs).

Diagnostics are stable enough for tests and CLI output. The Rust and Python CLIs include `object_ref` and `remediation` in text output when present.