ADR-0016: Keep public contracts versioned and integrations optional

  • Status: Accepted — retrospective baseline.
  • Recorded: 2026-09-29. This is the recording date, not an invented original approval date.
  • Authority and implementation boundaries: see Evidence below and the register conventions.

Context

Internal refactors and dependency updates can change external behavior without changing command names. Users should not install every integration to use deterministic CSV/JSON workflows.

Decision

Document supported top-level Python exports, CLI/MCP schemas, artifact layouts and DatasetSpec versions. Protect them with reviewed golden catalogs and immutable prior-release fixtures; do not regenerate fixtures merely to hide a regression.

Keep base deterministic CSV/JSON installation separate from optional Parquet, MCP, database and provider extras. Test installed wheels and minimum/latest dependency profiles on supported CPython versions. A declared version range alone is not support evidence; provider adapter maturity is separate from the stability of its neutral contract.

Alternatives and consequences

Treating every internal module as public prevents refactoring. Bundling all SDKs enlarges installation/security cost. A lockfile is tested-environment evidence, not a future-version guarantee. Speculative dependency caps are not justified without a reproduced incompatibility.

Evidence

Sources: stability, runtime support, dependency compatibility. Executable anchors: contract fixtures, previous release, installed package.

Revisit when

Removing an extra/runtime/export or changing defaults requires the documented compatibility/migration process.