Release baseline

This page records the 0.4.0 release-candidate baseline for the repository. Treat it as a validated project state, not as an automated release system. The baseline uses the canonical constrained verification script and records the observed warning profile, the direct runtime dependency bounds, and the accepted trade-offs that still shape the package.

Release-ready definition in this repository

The repository is release-ready only when the documented local acceptance command set passes, the coverage test step returns the recorded pass/skip count below, the same validated run is recorded with the observed warning profile, the warning categories match the accepted ones below, and the accepted trade-offs remain explicit rather than hidden.

Validated baseline record

The current verified local baseline is:

python -m pip install -c constraints/dev.txt -e ".[dev]"
python scripts/verify_release.py
-> 485 passed, 2 skipped, 83 warnings, 91% coverage
-> pytest runtime 65.27s (0:01:05); command elapsed 1:12.27

The optional extra-confidence live path remains separate:

MERIDIAN_TOOLS_ENABLE_REAL_FIT=1 pytest tests/test_demo_integration.py::test_real_pipeline_refresh_smoke tests/test_log_likelihood.py::test_compute_log_likelihood_dataset_real_posterior_smoke -m real_fit -v
-> 2 passed, 161 warnings in 135.42s (0:02:15); command elapsed 2:24.03

That command remains opt-in local confidence, not the default developer loop or silent CI policy. On the reference development environment, the recorded run finished in 135.42 seconds (0:02:15), with command elapsed time of 2:24.03; keep a budget of roughly six minutes or less for ordinary local execution.

Certified environment

  • Python 3.12.11
  • meridian-tools==0.4.0
  • google-meridian==1.5.3
  • arviz==0.19.0
  • matplotlib==3.9.4
  • protobuf==6.33.6
  • ruff==0.14.0
  • mypy==1.18.2
  • pytest==8.4.2
  • Hugo 0.164.0

Runtime dependency boundary

The current runtime boundary recorded from pyproject.toml is:

  • requires-python >=3.11
  • google-meridian==1.5.3
  • arviz>=0.18.0,<0.20.0
  • constrained release gate uses arviz==0.19.0 and matplotlib==3.9.4
  • protobuf>=5.28.0,<7
  • constrained release gate uses protobuf==6.33.6
  • pandas>=2.2.0,<3
  • pydantic>=2.8.0,<3
  • PyYAML>=6.0.0,<7

These are the direct runtime dependency bounds for the milestone baseline. This page does not imply broader environment reproducibility than the constrained gate currently implements.

Accepted warning profile

The recorded warning profile is accepted in the current milestone baseline. The warnings fall into these pinned categories:

  • Meridian model / prior warnings
  • ArviZ model-selection warnings
  • Matplotlib/Pyparsing deprecation warnings from the constrained ArviZ compatibility line
  • Meridian schema/protobuf deprecation warnings caused by Meridian 1.5.3 serialising boolean TensorFlow Probability parameters through an int proto path; protobuf 7 rejects that path, so this release candidate constrains protobuf below 7
  • Hugo Relearn theme deprecation warnings during static-site build

This baseline does not pretend the repository is warning-free. It records the current observed warning profile honestly and treats those warning categories as accepted for the present milestone.

Accepted trade-offs

The current release baseline also depends on several explicit trade-offs.

The package takes a no-fork Meridian approach. We keep Meridian as the modelling engine and add workflow and compatibility tooling around it rather than modifying Meridian source.

Bayesian model selection remains intentionally limited to fitted Meridian models where holdout_id is None. Validation-fit and authored-holdout runs are not treated as compatible LOO or WAIC candidates.

Lifecycle tooling remains Python-first. The repository does not currently ship a broader lifecycle CLI.

Version bumping remains a manual edit rather than a fully automated release pipeline.

Boundary of this record

This page records one validated milestone state. It does not introduce CI as the source of truth. It does not define publish automation. It does not promise zero warnings. It does not claim a broader release process than the repository actually supports today.