API Contracts & Stability¶
From v1.0.0 (2026-07-24) the project follows semantic versioning strictly. The frozen surfaces:
Surface |
What is frozen |
|---|---|
Python API |
The documented import surface of the core package (this reference):
|
Config enum values |
Serialized into specs and saved configs — e.g. |
Model spec keys |
The consumed-paths registry in |
Data formats |
The MFF long format (8 required columns, forgiving value parsing,
cadence rules) and the role-tagged |
Persisted models |
The |
Estimand schema |
|
REST API |
The (method, path) set of |
Modules flagged Experimental (mmm_extensions, continuous_learning,
garden/Atelier, dag_model_builder, non-MMM families) may still change
in minor releases — see the stability grid.
The CI gates¶
Every contract is enforced by a test — a breaking change fails the build rather than shipping silently:
tests/test_api_contracts.py— REST route snapshot (tests/contracts/rest_routes.json), public Python symbols, consumed spec/prior paths, frozen enum values, built-in estimand names, and the user-roster projection (auth columns never leak).tests/test_lean_imports.py— the lean-core invariant: the whole core import surface works with the web/LLM stacks import-blocked.tests/test_estimands.py— bit-stability of estimand arithmetic against the pre-1.0 legacy implementations.tests/test_docs_snippets.py— every Python snippet on the docs site references real APIs.
Full contract detail¶
The complete, field-by-field contract documentation lives on the docs site:
API Contracts (v1.0) — spec keys, prior paths, MFF/Dataset fields, persisted formats, sessions store, estimand schema.
REST API reference — every endpoint with parameters and response shapes (machine-readable openapi.json).