# V0.15 Scope Freeze ## Summary `v0.15` is the materialized uniform translation orbit batch release. Stable release theme: > promote the first conservative user-facing data utility for materializing finite uniform translation orbits from canonical `FieldBatch` inputs. Stable path: `canonical scalar 1D periodic FieldBatch + finite uniform x-shifts -> materialized orbit FieldBatch + JSON-compatible provenance report` This release turns the `v0.13` and `v0.14` diagnostic evidence into one narrow data utility. It remains paper-agnostic and does not add train/test policy, split management, time translation, new PDEs, KS promotion, weak KS, broad adapters, operator APIs, or root exports. --- ## Stable Scope `v0.15` adds one runtime public API and one runtime-only structured return under `pdelie.invariants`: ```python pdelie.invariants.build_uniform_translation_orbit_batch( field, *, shifts, keep_source_index=True, keep_shift_index=True, source_field_id=None, copy=True, ) -> OrbitBatchResult pdelie.invariants.OrbitBatchResult( field: FieldBatch, report: dict[str, Any], ) ``` `OrbitBatchResult` is not a canonical object. It has no schema migration policy and no `.to_dict()` / `.from_dict()` contract. The helper: - supports canonical scalar 1D uniform periodic `FieldBatch` inputs only - uses existing `InvariantApplier` uniform `x` translation - returns a materialized `FieldBatch` plus a JSON-compatible provenance report - mutates no inputs - has no root `pdelie` export --- ## Materialization Semantics Shift semantics: - `shifts` must be a non-empty sequence of finite floats - raw shift order is preserved - duplicate shifts are preserved - normalized shifts are recorded modulo the inferred periodic domain length Batch semantics: - materialization appends along the `batch` dimension - output ordering is `shift_major` - for each raw shift in input order, all source batch rows appear in original source-batch order - output batch size is `source_batch_size * len(shifts)` Provenance semantics: - optional `source_field_id` is JSON-compatible provenance metadata only - `source_field_id` is not a canonical identity system - source batch indices are included when `keep_source_index=True` - shift indices are included when `keep_shift_index=True` - duplicate shifts remain traceable through shift indices and batch records - output metadata records an `orbit_materialization` entry - output preprocess log appends one aggregate `materialize_uniform_translation_orbit_batch` entry Mask and copy semantics: - `mask=None` remains `None` - non-`None` masks are taken from transformed fields and concatenated along batch - transformed values are always newly computed through `InvariantApplier` - `copy=True` is the conservative default - `copy=False` may avoid extra coordinate or mask copies where safe, but the helper still mutates no inputs --- ## Non-goals `v0.15` explicitly does not include: - train/test policy - train/heldout split management - heldout-leakage detection - sparse-discovery branch policy - private-paper augmentation recipes - time-translation APIs - no time-translation APIs are included in this release - `axis="time"` support in `InvariantApplier` - new PDE support - stable KS generator promotion - stable KS residual evaluator promotion - weak KS - broad dataset adapters - PDEBench or The Well support - multidimensional grids - nonuniform grids - multivariable systems - operator-facing symmetry APIs - root `pdelie` export expansion --- ## Milestones ### Milestone 0 - Scope Freeze Freeze `v0.15` as materialized uniform translation orbit batches. ### Milestone 1 - API Semantics Freeze Freeze API name, `OrbitBatchResult` status, batch ordering, provenance fields, mask behavior, metadata/preprocess composition, and copy semantics. ### Milestone 2 - Orbit Batch Implementation Implement `pdelie.invariants.build_uniform_translation_orbit_batch(...)` and `pdelie.invariants.OrbitBatchResult`. Document both in `API_STABILITY.md`. ### Milestone 3 - Compatibility And Diagnostics Verify materialized Heat and KdV orbit batches remain valid `FieldBatch` objects and remain compatible with derivatives, residual evaluators, and reporting helpers. ### Milestone 4 - Example Add `python -m pdelie.examples.translation_orbit_batch` and `pdelie.examples.run_translation_orbit_batch_example(...)`. ### Milestone 5 - API / Public-surface Audit Confirm the new API remains submodule-only and no train/test policy, time translation, KS runtime, weak KS, broad adapter, or operator API landed. ### Milestone 6 - Release Gate and Readiness Add `tests/test_v0_15_release_gate.py`, update CI, bump package metadata to `0.15.0`, and align release-facing docs. --- ## Release-gate Expectations Expected gate coverage: - `build_uniform_translation_orbit_batch(...)` is documented and submodule-only - `OrbitBatchResult` is documented and submodule-only - representative Heat and KdV orbit batches validate as `FieldBatch` objects - output batch shape follows shift-major ordering - duplicate shifts are preserved - source/shift provenance is traceable - residual diagnostics remain finite on representative materialized batches - root `pdelie` remains unchanged - no train/test policy, time translation, KS runtime, weak KS, broad adapter, or operator API lands - current CI uses `v0_15-release-gate` plus full editable tests and package smoke --- ## Status - Milestone 0: COMPLETE - Milestone 1: COMPLETE - Milestone 2: COMPLETE - Milestone 3: COMPLETE - Milestone 4: COMPLETE - Milestone 5: COMPLETE - Milestone 6: COMPLETE