The goal is a production-quality v0.4.0 release. Four feature/hygiene PRs are queued (Tiers 0.1, 0.2, 1.1, + the notebook-fidelity fix). Before tagging we needed to know what's drifted, what's gated, and what the release checklist actually looks like. This audit makes that explicit.
| Issue | Before | After |
|---|---|---|
docs/conf.py Sphinx release | 0.3.1 (one version behind pyproject.toml) | 0.3.2 (matches) |
AGENT_GUIDE.md Package version | 0.3.1 | 0.3.2 (matches) |
test_version_sync.py coverage | pyproject + CITATION only | + docs/conf.py + AGENT_GUIDE.md |
| GitHub Releases gap | v0.3.0 latest; v0.3.2 tagged but unpublished | Documented in checklist — publish at v0.4.0 cut |
5 local make test failures | scipy _lazywhere ↔ statsmodels/nemos env mismatch | Documented as not release-blocking (CI clean) |
The version bump is minor, not patch: the public API
gains the EM trainer family (fit_point_process_em,
fit_hybrid_em, fit_linear_gaussian_em + the
predictive-LL diagnostic) and the core
population_time_rescale /
PopulationTimeRescaleResult.
Full per-PR breakdown and the step-by-step release checklist live
in RELEASE_READINESS.md.
$ pytest tests/test_version_sync.py -v
test_pyproject_and_citation_versions_agree PASSED
test_pyproject_version_is_pep440 PASSED
test_docs_conf_release_matches_pyproject PASSED # new
test_agent_guide_version_matches_pyproject PASSED # new
test_release_notes_mentions_current_version PASSED
Both new assertions fail loudly on the same kind of drift caught
here — a future bump to v0.4.0 (or any future version) cannot silently
miss docs/conf.py or AGENT_GUIDE.md.
docs/conf.py — release = "0.3.1" → "0.3.2".AGENT_GUIDE.md — Package version: 0.3.1 → 0.3.2.tests/test_version_sync.py — two new drift-guard tests + regex helpers.RELEASE_READINESS.md — new working doc: audit + v0.4.0 plan + tag checklist.docs/changes/whats_new.html, docs/conf.py — wires the per-iteration HTML tree (from #114) on this branch.