Implementation Phases¶
All reference-implementation phases through Phase 15 (local registry) are complete as of 0.9.0. See ROADMAP.md and SPEC.md spec parity policy.
Phase 1 — Skeleton¶
Status: Complete (0.1.0).
- Create Rust crate.
- Add
srcmodule layout (including stubs for future modules). - Add CLI entry point.
- Add examples and tests folders.
Phase 2 — Canonical Object Model¶
Status: Complete (0.3.0).
Model ODCS sections:
- fundamentals
- schema
- quality
- SLA
- stakeholders
- team
- roles
- servers
- pricing
- custom properties
Phase 3 — Parsing¶
Status: Complete (0.3.0).
- Parse YAML.
- Parse JSON.
- Reject unknown fields at root and nested document objects.
- Return structured errors and diagnostics.
Phase 4 — Diagnostics¶
Status: Complete (0.4.0).
Mirror DTCS diagnostic style:
- identifier
- severity
- category
- stage
- message
- object reference
- remediation
- stable
odcs:codes including JSON Schema violations (odcs:json-schema-violation)
Phase 5 — Validation¶
Status: Complete (0.4.0). Default validation includes JSON Schema conformance.
Implemented validation phases:
- Document validation
- Structural validation
- Schema validation
- Quality validation
- Reference validation
- Extension validation
- JSON Schema validation (default since 0.4.0)
Phase 6 — CLI¶
Status: Complete (0.4.0).
Commands:
odcs validate <path>
odcs inspect <path>
odcs diagnostics <path>
odcs schema
odcs version
Since 0.4.0, JSON Schema validation always runs in default validate(). The deprecated --strict flag was removed in 1.0. odcs schema exports the pinned schema.
Phase 7 — JSON Schema parity¶
Status: Complete (0.4.0). JSON Schema validation runs in default validate().
Conformance tests in tests/json_schema_conformance.rs validate fixtures against schema/odcs-v3.1.0.json. Upstream examples are synced via scripts/sync-upstream-examples.sh.
Phase 8 — Python bindings¶
Status: Complete (0.4.0).
PyO3 bindings and the pyodcs package expose parse, validate, inspect, schema export, and CLI helpers with parity to the Rust odcs CLI.
Phase 9 — Parser hardening¶
Status: Complete (0.5.0).
- Nested YAML duplicate-key detection via
unsafe-libyamlevent walk - Path-aware
object_reffor nested JSON and YAML duplicate keys - Fail-closed behavior on libyaml scan errors
Phase 10 — Diagnostics metadata¶
Status: Complete (0.6.0).
validationPhaseon every validation-stage diagnostic (JSON + CLI text)ValidationPhaseenum aligned with validator modules- Compile-time phase wiring in
validation_errorbuilder
Phase 11 — Structural validation¶
Status: Complete (0.7.0).
Cross-field rules in structural.rs:
- Unique non-empty
schema[].nameandservers[].servervalues slaProperties[].elementandslaDefaultElementmust reference existing schema object names (comma-separated tokens supported)- Documented in SPEC.md structural validation (0.7.0) policy
Phase 12 — Section semantics¶
Status: Complete (0.8.0).
Business rules in sections.rs: unique roles[].id, support URL requirements, SLA scheduler/schedule pairing, pricing currency and amount rules.
Phase 13 — Cross-file references¶
Status: Complete (0.8.0).
Multi-document FQN resolution via ContractSet, CLI --dep / --include, and library load_set.
Phase 14 — Compatibility analysis¶
Status: Complete (0.8.0).
compatibility::diff, CLI odcs diff, and Python pyodcs.diff().
Phase 15 — Local registry¶
Status: Complete (0.9.0).
Recursive directory index to .odcs/registry.json, lookup APIs, CLI odcs registry subcommands, validate --registry, and Python registry bindings. See registry.md.