V0.9 Release Readiness#

Release Target#

  • package version: 0.9.0

  • git tag: v0.9.0

  • package-index publication: deferred until v1.0 or later

v0.9.0 is a Git-tag-only release. Do not run TestPyPI or PyPI publishing for v0.9.

Done#

  • M0 is complete:

    • v0.9 was frozen as the stable normalized periodic KdV strong-path release

    • exact derivative, generator, residual, vertical-slice, and imported-parity scope was documented

  • M1 is complete:

    • compute_spectral_fd_derivatives(..., max_spatial_order=3) adds u_xxx

    • default max_spatial_order=2 behavior remains compatible with v0.8

  • M2 is complete:

    • pdelie.data.generate_kdv_1d_field_batch(...) is implemented

    • generated data is canonical scalar 1D uniform periodic FieldBatch data

  • M3 is complete:

    • pdelie.residuals.KdVResidualEvaluator is implemented

    • normalized residual form is u_t + 6*u*u_x + u_xxx = 0

  • M4 is complete:

    • KdV translation fitting and held-out verification pass the frozen vertical slice

    • python -m pdelie.examples.kdv_vertical_slice is available as a runtime smoke

  • M5 is complete:

    • mandatory from_numpy KdV imported parity passes

    • optional from_xarray KdV parity skips cleanly when xarray is unavailable

    • weak KdV, root KdV exports, and broad adapter expansion remain absent

  • M6 is complete:

    • compact v0_9-release-gate is implemented

    • CI visibility includes v0_9-release-gate

    • package metadata and release-facing docs are aligned with 0.9.0

    • wheel smoke includes a tiny KdV strong-path check

Observed KdV Release Fixture#

Frozen fixture:

  • generator seed: 9001

  • batch_size = 5

  • train_size = 2

  • split seed: 9002

  • all other generator settings default

Observed values:

  • max absolute residual: 0.0029755398453998883

  • RMS residual: 0.0005530662104030956

  • mass drift: 1.529348589458863e-16

  • relative L2 drift: 4.353026792731057e-14

  • translation span distance: 0.007441277120177836

  • first-epsilon held-out verification error: 3.7632323492784305e-06

  • verification classification: approximate

  • fit mode: svd

  • reference fallback used: False

The release gate requires non-failed verification, not exact classification. The observed approximate classification is acceptable under the frozen v0.9 criteria.

Explicitly Deferred#

  • weak KdV APIs

  • weak derivative APIs or broader weak-form expansion

  • root pdelie exports for KdV runtime APIs

  • custom KdV initial conditions

  • configurable KdV coefficients

  • general KdV stability guarantees outside the frozen short-horizon release fixtures

  • multidimensional, multivariable, nonuniform-grid, operator, or broad adapter expansion

  • PyPI and TestPyPI publication; package-index publishing is deferred to v1.0 or later

Final Release View#

The current repository is ready for the final 0.9.0 Git tag for the frozen v0.9 normalized periodic KdV strong path, subject to release-path checks passing on the release branch and CI passing on the release PR.

There are no known scientific-scope blockers inside the frozen v0.9 slice.

The stable v0.9 claim remains narrow:

  • normalized periodic short-horizon KdV generator

  • spectral_fd third spatial derivative support

  • normalized KdV strong-form residual evaluator

  • KdV translation fitting and held-out verification on the frozen fixture

  • mandatory from_numpy imported parity for representative KdV data

  • no weak KdV

  • no general KdV support

Packaging And Public API Notes#

  • pdelie.derivatives.compute_spectral_fd_derivatives(..., max_spatial_order=3) is stable for u_xxx

  • pdelie.data.generate_kdv_1d_field_batch is stable under the frozen v0.9 normalized periodic short-horizon regime

  • pdelie.residuals.KdVResidualEvaluator is stable for the normalized strong-form KdV residual

  • pdelie.examples.run_kdv_vertical_slice_example is a runtime smoke example, not a canonical report schema

  • KdV runtime APIs are exposed from submodules only, not root pdelie

  • pdelie.residuals.evaluate_weak_heat_residual and pdelie.residuals.evaluate_weak_burgers_residual remain stable runtime APIs from v0.8

  • pdelie.data.from_numpy and pdelie.data.from_xarray remain stable runtime public APIs from v0.7

  • the v0_4-release-gate, v0_5-release-gate, v0_6-release-gate, v0_7-release-gate, v0_8-release-gate, and v0_9-release-gate CI jobs are explicit visibility checks

  • post-v0.9 CI consolidation is a follow-up item and is not part of this release

Direct Final Tag Checklist#

Before tagging v0.9.0:

  • inspect consistency across:

    • pyproject.toml

    • README.md

    • CHANGELOG.md

    • docs/releases/V0_9_RELEASE_READINESS.md

    • docs/releases/PUBLISHING.md

    • docs/specs/API_STABILITY.md

  • run python -m pytest from the repo root

  • run python -m build --sdist --wheel

  • install the built wheel into a clean environment and verify:

    • stable root imports

    • weak residual runtime imports under pdelie.residuals

    • one tiny weak Heat report smoke

    • one tiny KdV strong-path smoke

  • run python -m pdelie.examples.heat_vertical_slice

  • run python -m pdelie.examples.kdv_vertical_slice

  • confirm GitHub Actions jobs v0_4-release-gate, v0_5-release-gate, v0_6-release-gate, v0_7-release-gate, v0_8-release-gate, v0_9-release-gate, editable-tests, and package-smoke pass on the release PR commit

  • merge the release PR into main

  • tag the merged main commit as v0.9.0

  • do not publish to TestPyPI

  • do not publish to PyPI

  • record package-index publishing as deferred until v1.0 or later