Freeze SmoothLife model contract and fixtures
This commit is contained in:
@@ -13,7 +13,6 @@ None.
|
||||
- `docs/model-contract.md`: exact mathematics and update semantics.
|
||||
- `docs/historical-options.md`: the three retained options, their exact semantics, constraints, and rejected historical behavior.
|
||||
- `docs/legacy-source-map.md`: provenance with source file, line range, and source-file hash.
|
||||
- `tests/fixtures/legacy/preset_rows.jsonl`: schema-neutral bootstrap capture of every accepted legacy row.
|
||||
- `tests/fixtures/contract/`: small deterministic scalar/field fixtures.
|
||||
|
||||
## Phase 0.1 — Freeze the shared mathematical contract
|
||||
@@ -178,31 +177,31 @@ Freeze:
|
||||
|
||||
The historical head anomaly is discarded and has no configuration option.
|
||||
|
||||
## Phase 0.4 — Preset and fixture capture
|
||||
## Phase 0.4 — Preset baseline and fixture capture
|
||||
|
||||
### Substep 0.4.1 — Schema-neutral bootstrap capture
|
||||
### Substep 0.4.1 — Freeze product preset authoring policy
|
||||
|
||||
Before the Rust schema exists, use a tiny reviewed extraction script to copy accepted source rows verbatim into JSONL with source path, line number, parsed columns, description, and source hash. This is evidence capture, not the final application importer. Expected counts are:
|
||||
All bundled product presets are newly authored directly in the versioned product schema established by Macrostep 01. Do not extract, convert, deduplicate, or migrate legacy preset rows, and do not require a product-preset count, grouping, or value correspondence with any legacy catalogue.
|
||||
|
||||
- main catalogue: 188 valid rows;
|
||||
- SDL catalogue: 187 rows, largely duplicate and containing drift;
|
||||
- multiscale catalogue: 12 rows = 4 triplets;
|
||||
- sphere catalogue: 1 row;
|
||||
- DT catalogue: 29 rows.
|
||||
Each bundled preset must be a complete deterministic run definition with:
|
||||
|
||||
Do not deduplicate the evidence and do not run legacy executables. Macrostep 01 converts this frozen capture into the versioned schema and performs deliberate deduplication.
|
||||
- a stable ID, name, description, tags, and authoring provenance;
|
||||
- explicit variant, rules, dynamics, shape, backend, and presentation recommendations;
|
||||
- an explicit seed and deterministic initializer;
|
||||
- only the localized historical-option fields applicable to that run, with modern defaults otherwise.
|
||||
|
||||
### Substep 0.4.2 — Freeze migration defaults absent from rows
|
||||
Preset reviews validate schema completeness, unique identity, deterministic reproduction, and intentional coverage of supported variants and dynamics. Legacy sources remain documented provenance for the mathematical contract and retained option semantics, not input data for product presets.
|
||||
|
||||
Commit a mapping table so every imported row becomes a complete run:
|
||||
### Substep 0.4.2 — Freeze deterministic preset baselines
|
||||
|
||||
- Base: shape `1024`/`512²`/`64³` by dimension, Euler, standard FFT, seed `1`, cleared C++-inspired periodic splats, palette 2, and 3-D volume style 2. Because Euler is selected, no RK4-reference field is stored; creating relaxation+RK4 later defaults that newly applicable field to `StageState`.
|
||||
- SDL rows: same model mapping, source-tagged and deduplicated against main rows; no separate backend.
|
||||
Use these modern baselines when authoring bundled presets; an individual preset may intentionally override them, but every override is explicit in that preset rather than inferred by migration:
|
||||
|
||||
- Base: recommended shape `1024`/`512²`/`64³` by dimension, Euler, standard FFT, seed `1`, cleared C++-inspired periodic splats, palette 2, and 3-D volume style 2. Because Euler is selected, no RK4-reference field is stored; a newly authored relaxation+RK4 preset defaults its applicable field to `StageState`.
|
||||
- Multiscale: `512²`, sequential composition, independent kernels, growth/relaxation only, standard FFT, seed `1`, cleared base-style splats, and palette 7.
|
||||
- Sphere: `K=128`, `R=K/2`, seed `1`, cleared then seeded overlays, and palette 1. Generate a corrected-default preset and a separately named `SphereModel::Legacy` preset from the historical row.
|
||||
- DT: no historical fixed shape existed because it followed the window; choose and record `512²`, depth 16, causal delay, seed `1`, a seeded box field replicated into all layers, and palette 7. Record this initializer/shape as an intentional modern replacement.
|
||||
- Sphere: `K=128`, `R=K/2`, `SphereModel::Corrected`, seed `1`, cleared then seeded overlays, and palette 1. Any newly authored preset selecting `SphereModel::Legacy` is separately named and explicitly selects only that local option.
|
||||
- DT: `512²`, depth 16, causal delay, seed `1`, a seeded box field replicated into all layers, and palette 7. The fixed model shape and all-layer initializer are intentional modern choices because the historical implementation followed the window.
|
||||
|
||||
The table must distinguish source facts from chosen deterministic replacements.
|
||||
These baselines are product-authoring policy, not legacy-row defaults.
|
||||
|
||||
### Substep 0.4.3 — Freeze initializer algorithms
|
||||
|
||||
@@ -234,11 +233,11 @@ Use explicit arrays for essential goldens, not only PRNG seeds.
|
||||
2. Record source paths and relevant line ranges.
|
||||
3. Mark the specification plus the new contract as the implementation authority.
|
||||
4. Future legacy consultation requires a concrete discrepancy, and its finding must be copied back into the contract with provenance.
|
||||
5. The application, build, tests, and importer outputs must not require the legacy path.
|
||||
5. The application, build, tests, and bundled preset assets must not require the legacy path.
|
||||
|
||||
## Exit gate
|
||||
|
||||
- Every formula, constant, mode, topology, retained historical option, and discarded defect has a local documented decision.
|
||||
- Preset counts/grouping reconcile with the source catalogues.
|
||||
- The newly authored bundled-preset policy and deterministic baselines are frozen independently of legacy catalogue rows.
|
||||
- Fixtures are readable without legacy tools.
|
||||
- A new implementer can build any mandatory backend using only this repository.
|
||||
|
||||
Reference in New Issue
Block a user