Data Contract Design
A data contract is a promise: schema, semantics, freshness, and ownership. Evolution needs compatibility rules, not silent field renames.
Workflow
- Producers, consumers, grain, keys, and sensitivity (PII).
- Schema: required fields, types, enums, nullability.
- Semantics: units, timezones, late data, idempotency keys.
- SLA: freshness, completeness, support channel.
- Compatibility mode (backward/forward/full) and versioning.
- Validation in CI/pipeline; quarantine bad events.
- Change process: RFC, dual-publish, deprecation window.
Output format
## Contract: <name>
**Owner:** …
**Grain / keys:** …
### Schema
### Semantics
### SLA
### Compatibility & versioning
### Validation
### Consumers
Rules
- Never silently remove/rename required fields.
- Document unknown/forward-compatible extension points.
- PII fields need retention and access notes.
- Consumers should not parse free-text as schema.
- Dual-write windows for breaking changes.
- Mark assumptions about registry tech.
Edge cases
- Fan-out many consumers: stricter stability.
- Stream vs batch: different lateness policies.
- Schema-less JSON: still define a contract envelope.