Architecture Decision Records (ADRs) — dag-ml-data

dag-ml-data carries copies of the five Phase-0 ADRs where the data layer is the primary enforcement site. The full set of 18 decisions lives in the sibling dag-ml repo (dag-ml/docs/adr/); only the data-relevant ones are mirrored here.

#

Title

Status

Why it lives here

01

Compatibility ledger semantics

accepted

Tolerance ledger drives schema/representation parity

02

Schema evolution SLA

accepted

The coordinator envelope is this repo’s wire shape

05

Repetition-aware CV invariant

accepted

This repo enforces itRepetitionLeakageValidator in relation.rs

06

Signal-type ownership

accepted

RepresentationSpec.signal_type + materialize/predict validation live here

07

Aggregation reducers in contract

accepted

Canonical reducers are defined in aggregation.rs + conformance pack

Byte-identical contract

These five files must stay byte-identical to their copies in dag-ml/docs/adr/. They are cross-repo contracts: a decision that binds both layers must read the same in both places. scripts/validate_contracts.py (run with DAG_ML_REPO=../dag-ml) validates this drift in CI — editing one copy without the other fails the build.

To change a shared ADR: edit it in dag-ml, copy verbatim here, run the contract check in both repos, and land the paired PR. Decisions are amended by a superseding ADR, never by silent edit.

ADRs not mirrored here

ADRs 03, 04, 08–18 govern the execution coordinator, bridge, packaging, CI, and governance — they live only in dag-ml/docs/adr/. Read them there when a dag-ml-data change touches the runtime, the C ABI lifecycle, or the release train (ADR-10).