Acceptance checklist

Use this page as the canonical local acceptance checklist for the current repository state. The acceptance gate is local and command-driven, and it uses the same script as CI.

Acceptance gate

Run the following commands from the repository root:

python -m pip install -c constraints/dev.txt -e ".[dev]"
python scripts/verify_release.py

The canonical acceptance-gate result for the full test step in the current constrained environment is:

485 passed, 2 skipped

That result is the pass or fail line for the default local acceptance gate. The recorded warning profile belongs to the release baseline, not to the acceptance-gate definition itself.

What each command proves

python -m pip check proves that the active constrained environment has no broken package requirements.

python -m compileall src tests scripts runme.py proves that the checked-in Python files parse cleanly. If this step fails, you are dealing with a syntax or import-time parse issue and you should stop there.

python -m meridian_tools.cli --help and python runme.py --help prove that the installed CLI and source-tree launcher surfaces still import cleanly.

ruff check src tests scripts runme.py proves that the repository still satisfies the pinned lint rules. If this step fails, fix the reported lint violations before moving on.

ruff format --check src tests scripts runme.py proves that the checked-in files still match the agreed formatting contract. If this step fails, run the formatter and then rerun the verification sequence.

mypy src proves that the configured static typing baseline still runs cleanly. If this step fails, either fix the reported type issue or update the documented ratchet intentionally.

python docs-site/build_content.py, git diff --exit-code -- docs-site/content, and hugo --source docs-site prove that canonical Markdown, generated Hugo content, and the static site build stay aligned.

pytest --cov=src/meridian_tools --cov-report=term-missing proves the behavioural contract of the repository. This is the broadest local validation step. If it fails, use the failing test names to identify which package contract regressed.

How to interpret failure

If the compile step fails, fix syntax or parse problems first. The later steps will not give you useful signal until that is resolved.

If lint, format, or type checks fail, treat that as a source-tree quality issue, not as an optional clean-up item. Bring the tree back to the pinned Ruff and mypy state before trusting the rest of the loop.

If CLI help fails, assume the published command surface is broken even if the Python modules still import manually.

If the docs drift check fails, update the canonical files under docs/ first, then regenerate docs-site/content.

If the pytest coverage step fails, the acceptance gate is not met. A partial pass is not enough. Fix the failing behavioural contract and rerun the full command sequence.

Optional extra confidence

The repository also carries one opt-in live Meridian verification command for extra technical confidence:

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

This command is not part of the default blocking acceptance gate. It exists to provide one bounded live Meridian route that proves:

  • real pipeline execution over bundled demo data
  • manifest-backed stored-run refresh after the original YAML is removed
  • the lower-level live log-likelihood reconstruction seam

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 this extra-confidence command.