1.3 KiB
1.3 KiB
DRP2 Versioning
This document defines how the DRP2 contract evolves.
Principles
- Version the contract explicitly from day one.
- Prefer additive evolution.
- Reject ambiguous compatibility rules.
- Keep schema, fixtures, and human-readable contract in lockstep.
Version Shape
Use semantic fields at the protocol level:
majorminor- optional
patchfor documentation and fixtures
Compatibility rules:
- major changes may break compatibility,
- minor changes may add commands, fields, or capabilities in a backward-compatible way,
- patch changes must not change semantics.
Producer and Runtime Rules
- Every command stream declares its protocol version.
- Handshake commands use the same
{major, minor, patch?}version object as fixtures. - Runtimes declare the versions they accept.
- Unknown major versions fail immediately.
- Unknown optional fields in the same major version may be ignored only when the schema says so.
- The schema and fixture set for a given version must be frozen together.
Freeze Strategy
Before implementation work starts in earnest:
- freeze a minimal
2.0command set, - freeze the validation error codes used by first conformance tests,
- freeze the first fixture corpus,
- defer large feature additions to
2.1+rather than churning2.0.