V0.30.0 Release Readiness#
Decision#
v0.30.0 is ready as a Git-tag-only release.
Release conclusion:
nonperiodic_readiness_and_low_order_finite_difference_diagnostics
Package Metadata#
package version:
0.30.0git tag:
v0.30.0PyPI/TestPyPI: deferred until
v1.0or later
Do not publish to TestPyPI or PyPI for v0.30.0.
Public Surface#
New in v0.30#
Runtime additions (submodule-only, no root export):
pdelie.derivatives.compute_finite_difference_derivatives(field, *, max_spatial_order=2)— low-order finite-difference backend on scalar 1D nonperiodic uniform grids. Supportsu_t,u_x,u_xxonly.u_xxxandu_xxxxon nonperiodic data are not part of the stable surface.pdelie.derivatives.compute_derivatives(field, *, backend="auto", max_spatial_order=2)— dispatcher.backend="auto"routes periodic data tospectral_fdand nonperiodic data (Dirichlet, Neumann,open_unknown) tofinite_difference. Explicit-mismatch calls raiseScopeValidationError; there is no silent fallback. Backend selection is recorded inDerivativeBatch.config["backend_selected_by_boundary_condition"]andDerivativeBatch.config["backend_selection_reason"].FieldBatch.SCHEMA_VERSIONbumped from"0.1"to"0.2".FieldBatch.LEGACY_SCHEMA_VERSIONS = frozenset({"0.1"});from_dictaccepts both versions. Legacy stringboundary_conditions["x"]payloads normalize to the structured form and are recorded inpreprocess_logunder operation"schema_0_1_to_0_2_boundary_normalization".pdelie.reporting.summarize_field_batch_readinessandpdelie.reporting.summarize_xarray_dataset_readinessemitboundary_condition_warnings: list[str]; readiness downgrades from"ready"to"needs_attention"when warnings are present.pdelie.reporting.summarize_residual_batchrecords aresidual_domain_policyfield (default"not_configured"; auto-dispatched nonperiodic residuals emit"interior_only"; periodic residuals emit"full_grid").Heat, Burgers, advection-diffusion, and reaction-diffusion residual evaluators route through
compute_derivatives(backend="auto")when derivatives are omitted, and consume the interior-only residual-domain policy via a sharedbuild_residual_diagnostics_from_derivativeshelper. Heat and Burgers diagnostics gainrms_residualalongsidemax_abs_residual.
Internal (not public API):
pdelie._boundary— internalBoundaryFace,BoundaryConditionSpec,normalize_x_boundary_condition,get_x_boundary_type,is_x_periodic. The module is intentionally underscore-prefixed; no submodule re-export.
Retained from earlier v0.x#
Canonical
FieldBatch → DerivativeBatch → ResidualBatch → GeneratorFamily → VerificationReportpipeline (frozen sincev0.1.x).pdelie.data.from_numpy,pdelie.data.from_xarray,pdelie.data.from_xarray_dataset(unchanged; adapters now accept structured nonperiodic BCs and supported legacy nonperiodic strings; unsupported strings still raiseScopeValidationError).Existing PDE strong paths: Heat, Burgers, KdV (normalized short-horizon only), Fisher-KPP, advection-diffusion.
pdelie.derivatives.compute_spectral_fd_derivatives— periodic-only; unchanged.Weak Heat / Burgers residual report slice (v0.8, periodic-only).
Frozen invariant, closure, span, and confidence-report surfaces (v0.13–v0.22).
Xarray Dataset ingestion (v0.28).
Workflow recipes, support matrix, and rendered tutorials (v0.29).
Cross-Cutting Hygiene (Phase 1, non-blocking)#
v0.30 includes the hygiene phase 1 landed by v0.30e:
[tool.ruff]withtarget-version = "py311",line-length = 120,extend-select = ["E", "W", "F", "B", "I", "UP", "RUF", "NPY"].[tool.mypy]with astrict = trueoverride narrowed topdelie.contracts,pdelie._boundary,pdelie.derivatives.*. Broader modules run under lenient mypy.[tool.coverage.*]withsource = ["src/pdelie"],branch = true,fail_under = 80. Coverage baseline: 86% onsrc/pdelie/.CI jobs
lint,typecheck,coverageare advisory / non-blocking (continue-on-error: true). A red run reports findings but does not gate merges. Promotion to blocking is Phase 2 (post-v0.30).
Release-Gate Consolidation (Narrow)#
v0.30 includes the narrow declarative release-gate consolidation landed by v0.30f:
configs/release_gate_manifest.json— strict-JSON manifest that replays declarative content for every migrated release, including a newv0.30row for this release close. The manifest schema supports 11 assertion classes; files that use novel patterns (forbidden_phrases_in_*, CHANGELOG / README / ROADMAP_HISTORY phrase checks, disjunctive+forbidden per-page phrase rules,required_json_fields) are named inexcluded_functional_release_gate_fileswith a per-file reason and their declarative content stays in the source file.tests/test_release_gates.py— parameterized replay of the manifest.CI job
v0_30f-release-gateis renamed tov0_30-release-gatefor the finalv0.30release.Zero release-gate files deleted. All 26
tests/test_v0_NN_release_gate.pyfiles retained; functional smoke tests intentionally remain explicit Python tests.
Deferred Scope Confirmed#
The following remain deferred, per the frozen v0.30 scope and the v0.30a decision label:
no PDEBench support claim
no The Well support claim
no file loaders, broad adapters,
pdelie.data.load_field_batch,from_pdebench,from_the_well,from_netcdf,from_zarr, or dataset-adapter registriesno KdV nonperiodic (KdV remains periodic-only)
no KS nonperiodic (KS retains diagnostic/no-go status)
no public KS runtime API
no weak nonperiodic residuals or weak derivatives
no public weak derivative backend, WSINDy design matrices, or weak sparse recovery
no
u_xxx/u_xxxxon nonperiodic data in the stablev0.30surfaceno finite-transform verification on nonperiodic translations (
pdelie.verification.verify_translation_generatorand_apply_uniform_translationremain periodic-only; overlap-crop is av0.31.5topic)no
pdelie.symmetry.SymmetryMethodregistry (deferred tov0.30.1)no root
pdelie.discover_symmetries(deferred tov1.0scope decision)no external symmetry-method ports (LieGAN, LaLiGAN, Ko-style sparse — deferred to
v0.33+)no new root
pdelieexportsno neural or callable generator APIs
no train/test policy, split-management, or leakage-prevention enforcement (
summarize_split_leakage_provenanceremains report-only)no operator symmetry
no multi-generator fitting, finite multi-generator flows, BCH composition, or orbit charts
no multi-channel or 2D contract widening (scalar 1D remains the stable target; deferred to
v0.34scope decision)no lift of the
numpy<2cap (deferred to Phase 3,v0.32or later)no Python-matrix expansion (CI stays Python 3.11 only)
no promotion of the advisory
lint/typecheck/coverageCI jobs to blocking (deferred to Phase 2)no PyPI or TestPyPI publication; package-index publishing remains deferred to
v1.0or later
Validation Checklist#
Expected release validation:
python -m pytest tests/test_release_gates.py tests/test_current_release_gate.py tests/test_v0_30_scope_freeze.py tests/test_v0_30_hygiene_audit.py -q
python -m pytest
python -m ruff check .
python -m mypy src/pdelie/contracts.py src/pdelie/_boundary.py src/pdelie/derivatives/
python -m sphinx -b html -W --keep-going docs docs/_build/html
python -m build --sdist --wheel
git diff --check