Release checklist¶
The next prepared version is 0.2.0. Creating release artifacts is separate from publishing them; no tag or package upload happens during the checks below.
Open release blocker¶
Adaptive ODE reverse differentiation fails for a basic parameterized decay example. The custom VJP stores a Python controller in dynamic residuals; removing that reveals additional filtered-state handling failures. Resolve and test the adjoint path before publishing 0.2.0. Fixed-grid RK4 and its gradients are covered by the release regression tests. This candidate is not yet publication-ready.
Check the candidate¶
- Review
CHANGELOG.mdand the migration guide. Describe implemented behavior, including compatibility breaks and unverified backends. - Match the version in
pyproject.tomlandprobjax/__init__.py. - Run the required Python 3.11, 3.12 and 3.13 CI checks on the release commit. Run accelerator/mesh suites on the hardware being claimed as validated.
- Generate tutorials, execute documentation examples and build the site:
python -m pip install -e ".[dev]"
python -m pip install -r docs/requirements.txt matplotlib
python docs/scripts/convert_notebooks.py
python docs/scripts/convert_notebooks.py --check
JAX_PLATFORMS=cpu pytest tests/test_docs.py --benchmark-disable
zensical build --strict
Tutorial conversion reuses notebook outputs. CI executes generated Python blocks, but does not update stored plots or compare them to regenerated output. Refresh notebook outputs explicitly when their presentation changes.
Build and inspect distributions¶
Use a clean checkout of the candidate and a fresh output directory:
python -m pip install build twine
python -m build --outdir /tmp/probjax-release-dist
python -m twine check /tmp/probjax-release-dist/*
Inspect both the wheel and source archive: package files, license and README must
be present; caches, local environments and retired kernel packages must not be
included. Install the wheel into a fresh environment, from outside the checkout,
and check that probjax.__version__ equals
importlib.metadata.version("probjax"). Smoke-test distributions and an ODE solve.
Publish the reviewed candidate¶
After checks and release review, replace the Unreleased heading with the chosen
version and actual release date, add a new empty Unreleased section, and update
changelog comparison links. Commit that metadata before tagging. Create the
matching v0.2.0 tag and GitHub release with the migration notes, then upload the
reviewed artifacts to PyPI using the maintainer's configured publishing method.
This repository currently has no package-publishing workflow.
Finally verify installation from the index and the documentation deployment.
The public site follows main, not a versioned documentation snapshot; the tag
retains the matching documentation source.
Codecov repository setup is a separate integration issue: uploads currently fail
with Repository not found. CI preserves coverage.xml as an artifact. Confirm
the coverage test step passed independently of that upload failure.