Versioning & Changelog

The MMM Framework is at version 0.2.0 — a pre-1.0 release, published on PyPI (pip install mmm-framework). The mathematical foundations and core API are intentionally stable, but the surface area is still evolving. This page tracks where we are and what to expect.

Pre-1.0: read before depending

Public API may have backwards-incompatible changes between minor versions until 1.0. Pin an exact version for production use (pip install mmm-framework==0.2.0) and review the release notes before upgrading — 0.2.0 itself moved the core dependency stack to PyMC 6 / PyTensor 3 / ArviZ 1.x. Once 1.0 ships, the framework will follow semantic versioning strictly.

API Stability by Module

Different parts of the framework have matured at different rates. Use this as a guide for what to depend on:

Stable

Core modeling

  • BayesianMMM
  • MMMResults / PredictionResults
  • Builders (ModelConfigBuilder, etc.)
  • config (Pydantic dataclasses)
  • Adstock, saturation, seasonality, trend transforms
  • MFFLoader / data loading
Beta

Active surface

  • reporting (charts, extractors, generator; Augur client readout)
  • analysis (counterfactual, marginal)
  • estimands (declarative, named, serializable estimand registry)
  • serialization (MMMSerializer)
  • FastAPI endpoints (api/) and org/tenant auth (auth/)
  • React web UI — the Augur frontend (Orrery, Auspices, Sextant, Chronicle, Almanac, Constellation, Oracle, Atelier, Codex, College, Curia, Sanctum)
  • Agent workspace (LLM providers: Anthropic, OpenAI, Google Gemini, Vertex AI, LM Studio)
  • Measurement-loop planning engine (EIG/EVOI priorities, experiment lifecycle, design studio, experiment economics, Pareto-front optimizer, calibration)
  • eda + Data Studio (pre-fit data quality: validation, EDA, outlier detection and treatment, cleaning pipelines)
  • diagnostics (convergence gate, prior→posterior learning, Simulation-Based Calibration)
  • validation (rolling-origin backtests, SBC + LOO-PIT interval checks)
Experimental

Subject to change

  • mmm_extensions (NestedMMM, MultivariateMMM, CombinedMMM)
  • continuous_learning (model-free geo response-surface learning loop)
  • garden / Atelier (bespoke-model authoring, compatibility suite, Model Garden)
  • Non-MMM model families (CFA / latent-class garden examples)
  • dag_model_builder
  • Excel config workflow
  • Streamlit UI (legacy)

Versioning Policy

Until 1.0:

After 1.0, the project will follow SemVer strictly: patches are bug fixes only, minors add backward-compatible features, and majors are reserved for breaking changes.

Release Notes

For ongoing release tracking, see the GitHub Releases page. The history below summarises each version.

0.2.0 (Beta) 2026-07-06 Current

Everything shipped since the 0.1.0 PyPI release (June 24), headlined by a core-stack upgrade. Full test suite green at release: 3,587 fast + 164 slow tests.

Breaking (dependencies): the core Bayesian stack moved to PyMC 6 / PyTensor 3 / ArviZ 1.x (they move in lockstep). ArviZ containers are now xarray DataTrees; models saved under 0.1.0 (PyMC 5) reload cleanly. Pathfinder variational inference now works out of the box (pymc-extras is a declared dependency), and the netcdf engines (h5netcdf/h5py) trace persistence needs are declared explicitly. If you extend the framework with raw arviz calls, route them through mmm_framework.utils.arviz_compat — several arviz 1.x changes fail silently (notably az.summary returning formatted strings).
  • Continuous sequential learning (continuous_learning, experimental): a model-free geo response-surface engine that learns spend→outcome directly from designed experiments — central-composite designs, Thompson sampling, funding-line and ENBS stopping rules, Laplace knowledge-gradient design scoring, information discounting and P-spline shrinkage for drifting media behaviour, and the Sextant UI to run the loop.
  • Approximate fits from the Oracle: MAP / ADVI / full-rank ADVI / Pathfinder selectable end-to-end (spec registry, agent tool, spec-editor UI), for seconds-fast model checking before paying for NUTS. Loading a saved model now restores the exact settings it was fit with.
  • Impression-/click-measured media: per-channel measurement descriptors drive honest ROI vs efficiency-per-unit metrics across reports, estimands, and the UI.
  • Simulation-Based Calibration in diagnostics, plus SBC + LOO-PIT machine-verification of interval calibration in validation; out-of-time backtests extended to spline/GP/piecewise trends and geo panels.
  • Augur client deliverables: the Media Performance Readout is the default client report, with posterior-predictive fit sections, AI insights, slide-deck deep-dives, and marginal-ROI break-even spend zones; the Almanac budget planner returned with an allocation section.
  • Data Studio: upload → interactive EDA → replayable cleaning pipeline → commit as the working dataset, with no LLM round-trip; also exposed as agent tools.
  • Experiments: structural-identification design panel, off-panel calibration (experiments from windows the model was not fit on), one-click calibration handoff, and a CombinedMMM starter template in the DAG planner.
  • Estimands on the Performance page (grouped by estimand × KPI across fitted models), per-geo channel effectiveness (vary_media_by_geo), call-time estimand selection, and full spec-path validation on every agent setting write.
  • Model validation surface: a first-class validation battery (PPC, residuals, channel diagnostics, causal refutation, cross-validation) as agent tools, a one-click Validation tab, and a persona review panel.
  • Platform: real IV/2SLS and front-door estimators, S3 object store, content-addressed dataset lineage, run-comparison deltas, SaaS security and governance foundation, CI with lint + fast tests + coverage + dependency audit, and a React test harness.
  • Docs: site-wide modern refresh (dark mode, Cmd-K search, quizzes, deep-dives), mobile-safe rendering, and analyst-focused continuous-learning guides with recorded animations.
  • Research blog: a new Modern Measurement Research section — 15 essays on causal inference, geo experiments, Bayesian MMM, and experimental design, written from the primary literature.
0.1.0 (Beta) 2026-06-24 — first PyPI release; in development since December 2025

The first published release of the MMM Framework. Includes:

Behavioral change (June 2026, within the 0.1.0 development line): ModelConfig.use_parametric_adstock now defaults to True — new fits estimate a continuous in-graph adstock kernel per channel (geometric by default; delayed/Weibull per MediaChannelConfig.adstock) instead of the legacy fixed-alpha blend. Motivation: the pressure-testing series measured the legacy blend at ~28% attribution error vs ~7% parametric on carryover-sensitive worlds. To reproduce older fits, set use_parametric_adstock=False (or ModelConfigBuilder().with_legacy_blend_adstock()); models serialized before the change keep their original behavior on load. Validator cross-validation now routes out-of-sample prediction through the backtest forecaster, which supports both adstock paths and fails loudly on panel models instead of silently mispredicting. All notebooks and documentation were re-baked/updated under the new default.
  • Standalone PyMC-based Bayesian MMM core (BayesianMMM) with hierarchical specs, configurable adstock/saturation, and reproducible model serialization (plus optional PyMC-Marketing interop for reporting)
  • Fluent builders for model, channel, and variable configuration
  • MFF (Master Flat File) data loader with validation
  • Counterfactual and marginal analysis utilities
  • HTML report generator with Plotly charts and design-token theming
  • Extension models (NestedMMM, MultivariateMMM, CombinedMMM) — experimental
  • FastAPI service + ARQ worker for async job execution
  • React (TypeScript) web UI as the modern frontend — the Augur application (Beta); Streamlit UI retained as a legacy surface
  • AI agent workspace: an analyst-assistant with tools for data validation and EDA, model configuration and fitting, ROI and decomposition analysis, experiment planning, sandboxed Python execution, knowledge-base search, and branded client reports — with LLM providers Anthropic, OpenAI, Google (Gemini), Vertex AI (Anthropic & Gemini via ADC), and local LM Studio
  • Measurement-loop planning engine: EIG/EVOI experiment priorities, an experiment lifecycle (draft → pre-registered → running → completed → calibrated), and calibration of experiment readouts into the next model fit
  • EDA / data-quality module for pre-fit validation, exploratory checks, and outlier detection and treatment
  • Sphinx-generated API reference + this static documentation site

Development highlights (within the 0.1.0 line)

The largest additions since the initial feature set, newest first:

July 2026 2026-07
  • Continuous sequential learning (continuous_learning, experimental) — a model-free geo response-surface learning loop that estimates channel response and synergies directly from designed geo experiments, with central-composite designs, Thompson-sampling allocation, a marginal-ROAS funding line, expected-net-benefit stopping, and Laplace knowledge-gradient design selection. Wired end to end: agent tools, /learning-programs API, and the Sextant page in the web UI. Supports NegBinomial likelihoods for count KPIs, an optional national time effect, and stratified geo assignment. See the analyst guide and the math companion.
  • Experiment-registry hardening — lifecycle state-machine enforcement (illegal transitions are rejected), a full audit trail on every experiment write, and additive calibration staging so applying one experiment no longer silently un-stages others.
  • Sub-channel (breakout) calibration — a share-based likelihood for calibrating sub-channel splits inside a parent channel, plus a partial-pooled breakout-weighted MMM in the Model Garden.
Late June 2026 2026-06
  • Impression- and click-measured media — per-channel measurement descriptors (spend / impressions / clicks with optional spend column, CPM, or CPC) so ROI, marginal ROAS, and report labels are computed on the right cost basis, or degrade honestly to efficiency-per-unit metrics.
  • Data Studio — upload a raw file, explore it with interactive EDA (distributions, correlation, missingness, outliers), build a replayable cleaning pipeline, and commit the result as the session’s working dataset without a chat round-trip.
  • Simulation-Based Calibration (SBC) — a Talts-style posterior-calibration check with rank-histogram and ECDF-difference diagnostics, available as an agent tool and a one-click validation job; joins SBC + LOO-PIT interval checks in the validation module.
  • Almanac budget planner — persistent budget plans with optimal allocation, geo/DMA splits, a forward flighting calendar, CSV export, and an allocation section in client reports.
  • Augur client report — the default client deliverable is now an editorial, evidence-coded “Media Performance Readout” with posterior-predictive fit sections and AI-drafted planner insights; the classic technical readout remains available. MMM reports also gained estimand credible-interval tables and posterior-predictive goodness-of-fit sections.
  • Model validation surface — first-class validation/verification/plotting agent tools, a one-click Validation tab in the Oracle workspace, and a persona review panel (statistician / planner / CMO) for adversarial readouts.
  • Per-geo channel effectiveness (vary_media_by_geo) — opt-in partial-pooled per-geo channel betas, plus geo-panel and spline/GP-trend out-of-time backtests.
  • Estimands on the Performance page — fitted models grouped by estimand × KPI with fit-time persistence, alongside the existing trajectory, agreement, and model-health views.
  • SaaS foundations — a dependency-free org/tenant auth layer (built-in JWT, IdP-ready), S3-capable object storage, content-addressed dataset lineage, CI (lint, fast tests, coverage, dependency audit, mypy baseline), and a convergence gate on core and extended fits.
Mid-June 2026 2026-06
  • Model Garden & Atelier (experimental) — author bespoke Bayesian models in an in-app studio (editor, docs, Jupyter-like notebook, modeling copilot), prove them against a nine-tier compatibility suite on synthetic ground truth, and publish immutable versions any analyst can fit through the agent. The contract is family-aware: per-model config schemas, pluggable likelihoods, and non-MMM families (confirmatory factor analysis, latent-class analysis) ride the same fit → estimand → report rails.
  • Declarative estimands — a named, serializable estimand registry (contribution ROI, counterfactual ROI, marginal ROAS, contribution, latent quantities) evaluated post-hoc or in-graph, unifying the framework’s previously scattered ROI notions while keeping every legacy number bit-stable.
  • Experiment design engine — the design studio gained model-anchored economics (incremental-ROAS expectations, opportunity cost, powered/underpowered verdicts), A/A & A/B methodology simulation with an empirical false-positive-rate check, a Pareto-front optimizer over MDE × power × cost × duration, off-panel calibration for experiments run outside the training window, and multi-level flighting designs that identify saturation and adstock parameters.
  • Parametric adstock by default — see the behavioral-change note above.

Contributing

Bug reports, feature requests, and pull requests are welcome on GitHub. Please open an issue before submitting a substantial PR so we can discuss scope.

For questions about the methodology, the FAQ is a good starting point; for the underlying math, the Bayesian Workflow and Causal Inference guides cover most of the foundations.