219 lines
23 KiB
Markdown
219 lines
23 KiB
Markdown
# Legacy source map
|
||
|
||
This document is the static provenance record for Macrostep 00. It maps the decisions in the repository-local model contract and retained-options specification to the legacy tree without creating a runtime or build dependency on that tree.
|
||
|
||
## Scope, authority, and notation
|
||
|
||
Legacy root used for every source-relative path below:
|
||
|
||
```text
|
||
/home/fpasqua/Nextcloud/VecchiProgetti/SmoothLifeAll/
|
||
```
|
||
|
||
Line ranges are 1-based, inclusive physical lines. Every SHA-256 is for the complete file bytes, not only the cited range.
|
||
|
||
Decision labels used below:
|
||
|
||
- **SOURCE FACT** — behavior or data directly evidenced by a cited legacy file.
|
||
- **CORRECTED DEFAULT** — deterministic behavior selected by the rewrite instead of accidental or defective legacy behavior.
|
||
- **RETAINED HISTORICAL OPTION** — one of the three intentionally selectable historical behaviors.
|
||
- **REJECTED DEFECT** — observed legacy behavior that must not be reproduced.
|
||
- **PROVENANCE ONLY** — historical evidence that cannot control implementation or product behavior.
|
||
|
||
The implementation authority is the **local contract+spec set**: `docs/model-contract.md`, `docs/historical-options.md`, and this source map. The external `SMOOTHLIFE_SPECIFICATION.md` is a reviewed legacy specification and provenance source, identified by hash below; it is not an application, test, build, importer, or runtime dependency. If source and local authority differ, the explicit local decision wins.
|
||
|
||
This review was static. No legacy `.exe`, simulator, reference program, shader, build, or test executable was run. Hashing, line counting, and text inspection did not execute legacy code.
|
||
|
||
## Shared/base model
|
||
|
||
### Frozen interpretation
|
||
|
||
- **SOURCE FACT:** State is scalar; the FFT family supplies periodic 1-D, 2-D, and 3-D domains. The real and half-width complex buffers and default shapes are declared in `SmoothLife/main.cpp:52-79,2839-2902`.
|
||
- **SOURCE FACT:** The legacy constant named `PI`/`pi` is `6.283185...`, i.e. conventional `TAU = 2π`, not π (`SmoothLife/main.cpp:52`; `SmoothLife/shaders/snm2D.frag:6`).
|
||
- **SOURCE FACT:** `ri=ra/rr`, transition width `w=ra/rb`, Euclidean sampled disk/ring weights, periodic signed coordinates, and normalization sums are in `SmoothLife/main.cpp:1279-1427`. The log records the check `sum(KR)=279.216312`, `sum(KD)=35.524035` for `ra=10, rr=3, rb=10` at `SmoothLife/SmoothLifeLog.txt:303`.
|
||
- **SOURCE FACT:** Rising curves 0–7, complete windows 8–9, mixer curves 0–7, and the four rule constructions are in `SmoothLife/shaders/snm2D.frag:16-104`. Modes 0/1/2 produce replacement, `2S-1`, and `S-A` respectively at lines 105-119.
|
||
- **SOURCE FACT:** Euler replacement/update, AB3 coefficients, RK4 coefficients, final clamping, and the frame pipeline are in `SmoothLife/shaders/inteuler2D.frag:14-25`, `intab2D.frag:16-29`, `intrk2D.frag:18-31`, and `SmoothLife/main.cpp:2601-2991`.
|
||
- **SOURCE FACT:** The SDL branch is the same model with a one-pass clamped Euler update and no separate integration buffers (`SmoothLifeSDL/main.cpp:61-82,2534-2550`; `SmoothLifeSDL/shaders/snm2D.frag:108-130`). It is subsumed by the shared rewrite, not retained as a backend.
|
||
- **CORRECTED DEFAULT:** Generate complete sampled kernel support and warn when geometry is unsuitable. Do not retain the legacy `Ra=(int)(ra*2)` component cutoff (`SmoothLife/main.cpp:1317-1323`).
|
||
- **CORRECTED DEFAULT:** Discrete ignores `dt` and integrator; Euler, deterministic Euler→AB2→AB3 startup, and RK4 clamp at every intermediate and final commit are authoritative. Undefined legacy AB buffers are never used.
|
||
- **CORRECTED DEFAULT:** For relaxation+RK4, stages subtract their own stage state (`Rk4RelaxationReference::StageState`).
|
||
- **RETAINED HISTORICAL OPTION:** `Rk4RelaxationReference::StepOrigin` preserves the main program's stage-neighborhood/origin-subtraction mismatch: `deriv(aa,de)` computes from `aa` but passes global `AA` to `snm` (`SmoothLife/main.cpp:2603-2611`), while RK4 supplies `AA1` for stages 2–4 (`2968-2976`). This option exists only for relaxation+RK4.
|
||
- **REJECTED DEFECT:** Modes 3/4 in shader/keyboard remnants are not supported (`SmoothLife/shaders/snm2D.frag:111-117`; the SDL catalogue's mode-4 row is `SmoothLifeSDL/SmoothLifeConfig.txt:174`).
|
||
- **REJECTED DEFECT:** Uninitialized AB history, stale history after model changes, framebuffer feedback, working-directory shader loading, old OpenGL compatibility syntax, platform `rand()`, and implicit backend substitution are not compatibility requirements.
|
||
|
||
### Consulted shared/base files
|
||
|
||
| Source-relative path | Relevant lines | SHA-256 | Evidence |
|
||
| --- | ---: | --- | --- |
|
||
| `SMOOTHLIFE_SPECIFICATION.md` | 1-307 | `9f651e2697cf44a68cd29e835cb02b7c2e52e8f1de4353ae136254e760ef3d54` | Complete reviewed legacy specification. |
|
||
| `readme.txt` | 1-42 | `1194e6a53f8ae46131a60243cef296eef7ccd57bc832b0a88d1a147dbd5acc73` | Variant catalogue, config convention, dependencies, controls. |
|
||
| `SmoothLife/main.cpp` | 1-220, 1279-2041, 2601-3000 | `26b21bfa7fb262f02f5eec4c2615aa501639471ccebce33b2abeb4fb6ee02e58` | Controls/parser, buffers, kernels, packed FFT driver, convolution/rule pass, dynamics/integration/defaults. |
|
||
| `SmoothLife/shaders/snm1D.frag` | 1-119 | `35a0ba9092b48bcf56be03f392f528a78e0dc72112c5ad7e0c8914b47b272f36` | 1-D shared rule. |
|
||
| `SmoothLife/shaders/snm2D.frag` | 1-119 | `747c1d6ed3c0218af54479f685774fe3ab8586101bfaa89985c5f683d68c09a3` | Canonical reviewed rule curves, constructions, and dynamics. |
|
||
| `SmoothLife/shaders/snm3D.frag` | 1-119 | `b059270be6aab015a091152c77ec7f3ee4fa19d87981512b73f31f4ca1b11b37` | 3-D shared rule. |
|
||
| `SmoothLife/shaders/inteuler1D.frag` | 1-25 | `1496e49426db4a911bd704a431348512d0ddaf1f2aee7e012ea2e11cf7e808e9` | 1-D Euler/replacement and clamp. |
|
||
| `SmoothLife/shaders/inteuler2D.frag` | 1-25 | `c5c64d4bb44ae15c1681fa4109ed66e93429b73c0df922f6597023838868c8d9` | 2-D Euler/replacement and clamp. |
|
||
| `SmoothLife/shaders/inteuler3D.frag` | 1-25 | `dcb889521b935dd57f44f89df866484a922c1f314fb294385e90ddb5342276db` | 3-D Euler/replacement and clamp. |
|
||
| `SmoothLife/shaders/intab1D.frag` | 1-29 | `938854c65c8f2133fd5bba2ae2256282defe23e8a0de3b888ffc3477927ca978` | 1-D AB3 formula and clamp. |
|
||
| `SmoothLife/shaders/intab2D.frag` | 1-29 | `75c51d618061bbe453162ed62b6d9b86745bf689443044bec7343071c354ed1b` | 2-D AB3 formula and clamp. |
|
||
| `SmoothLife/shaders/intab3D.frag` | 1-29 | `68241b04768a22a28185dbaee994ffc5efac8b80110faeb9d793041e036bc915` | 3-D AB3 formula and clamp. |
|
||
| `SmoothLife/shaders/intrk1D.frag` | 1-31 | `9da9e4a012731ca6c2ce4106c1fdd973b4ed2e6cea918fc4f04fbb9f409001ef` | 1-D RK4 formula and final clamp. |
|
||
| `SmoothLife/shaders/intrk2D.frag` | 1-31 | `e8a46cf4e6f92597facbbb2d10172eadd64d228f4dae49d4ae7483fe45d564bc` | 2-D RK4 formula and final clamp. |
|
||
| `SmoothLife/shaders/intrk3D.frag` | 1-31 | `da0553727cc8be65e669fb5873d98e942971a38cc3965145ce3ba1016a8bfc5e` | 3-D RK4 formula and final clamp. |
|
||
| `SmoothLifeSDL/main.cpp` | 1-230, 1230-1389, 2370-2631 | `7e0536e7a89cb12aecbc1f181ec736269ba0a83c58170b761812932b727f3787` | SDL buffers/parser/kernel and one-pass frame loop. |
|
||
| `SmoothLifeSDL/shaders/snm2D.frag` | 1-130 | `a148bdccbce861babd85b3af1f96854be0b5dfde9fda62957b7b30d66f394342` | One-pass Euler behavior and mode remnants. |
|
||
| `SmoothLifeSDL/readme_sdl.txt` | 1-3 | `fb7d3b6447893d8e3b43acd7a0de696b3bf4c974c62c84147fb155501ae0feb0` | Portability/dependency limitations; no separate model semantics. |
|
||
|
||
## Packed FFT
|
||
|
||
### Frozen interpretation
|
||
|
||
- **SOURCE FACT:** Adjacent real x samples are packed into complex `.rg`, spectra have `NX/2+1` x entries, and inverse conversion selects real/imaginary components by x parity (`SmoothLife/main.cpp:1610-1752`; copy shaders below).
|
||
- **SOURCE FACT:** x/y/z plans encode bit-reversed inputs and twiddles; each butterfly is scaled by `1/sqrt(2)`, with special real/complex tangle/untangle scaling (`SmoothLife/main.cpp:1442-1909`; FFT shaders below).
|
||
- **SOURCE FACT:** Spectral multiplication uses complex multiplication and scale `sqrt(NX*NY*NZ)/kernel_sum` (`SmoothLife/main.cpp:1912-1967,2603-2610`; kernel shaders below).
|
||
- **CORRECTED DEFAULT:** `FftAlgorithm::Standard` is the default: conventional unscaled forward transform, inverse scaled by sample count, then sampled-kernel normalization.
|
||
- **RETAINED HISTORICAL OPTION:** `FftAlgorithm::LegacyPackedUnitary` retains packing, half-width x spectra, plan stages, unitary scaling, conversion, and the `sqrt(sample_count)/kernel_sum` correction for supported power-of-two GPU 1-D/2-D/3-D paths.
|
||
- **REJECTED DEFECT:** The option does not retain legacy framebuffer/resource hazards, compatibility-profile syntax, relative shader discovery, incomplete kernels, or silent CPU/unsupported-GPU fallback. An unsupported explicit request fails clearly.
|
||
|
||
### Consulted packed-FFT shaders
|
||
|
||
| Source-relative path | Relevant lines | SHA-256 |
|
||
| --- | ---: | --- |
|
||
| `SmoothLife/shaders/fft1D.frag` | 1-41 | `b0810a5b89e9f8146a754c072360686573950c5a0010700d259d4726e3d8b238` |
|
||
| `SmoothLife/shaders/fft2D.frag` | 1-53 | `da1d4af18e4b6340a936a036ed010e7e03b3d548d4925f386c26f3fa310af99f` |
|
||
| `SmoothLife/shaders/fft3D.frag` | 1-61 | `7f0d58d93cacdfff249a277503b017dee371a1b1547a932d6b5305d2b973fae1` |
|
||
| `SmoothLife/shaders/copybufferrc1D.frag` | 1-13 | `f4869822b5e7b42abd3b05745e9802a27b00ba27f77c6c01271bfc5eaab28bcc` |
|
||
| `SmoothLife/shaders/copybufferrc2D.frag` | 1-13 | `5c325aaf44b5dfb6dd2f2cc1f831596cae1d61f1259bbafbdc5ddb55050e6914` |
|
||
| `SmoothLife/shaders/copybufferrc3D.frag` | 1-13 | `587f0fc491c7e887ab056136b164299cf6c7f508bd9f66f68584e8e8d3aeec2b` |
|
||
| `SmoothLife/shaders/copybuffercr1D.frag` | 1-22 | `eb436194b7e8db3db1ba825d0172db9f70069add9058cf85036ea88562d37249` |
|
||
| `SmoothLife/shaders/copybuffercr2D.frag` | 1-22 | `fb26244b12c6bad90fa84c9e784e72d409d024d1e66360fa7d0209c99059ab00` |
|
||
| `SmoothLife/shaders/copybuffercr3D.frag` | 1-22 | `54e93affdca4cb160ca8163615de5a1a8c272d3b3faf015258f9631daf404f90` |
|
||
| `SmoothLife/shaders/kernelmul1D.frag` | 1-19 | `426e730aaf723fb1ddc0b843f8ba3553add8e701e8bb3372e1b5cbb430f6caaf` |
|
||
| `SmoothLife/shaders/kernelmul2D.frag` | 1-19 | `3a7f923cbd689738e9c1c9337b75b675f39703d973b07b35010e56c68766acf4` |
|
||
| `SmoothLife/shaders/kernelmul3D.frag` | 1-19 | `fbe642d3bf78092d2d86ffcd02d6471fc6745e9c0dc97abbdf50f620ed4481b2` |
|
||
|
||
## Multiscale
|
||
|
||
### Frozen interpretation
|
||
|
||
- **SOURCE FACT:** Three parameter records and three disk/ring spectrum pairs are stored separately (`SmoothLifeMultiscale/main.cpp:64-177`). Startup consumes catalogue rows in consecutive triples and defaults to composition method 0 and kernel method 1 (`2760-2894`).
|
||
- **SOURCE FACT:** Independent inputs are `(ring_i(A),disk_i(A))`; chained inputs are `(ring_0,ring_1)`, `(ring_1,ring_2)`, `(ring_2,disk_2)` (`2926-3023`).
|
||
- **SOURCE FACT:** Sequential recomputes after each clamped update. Ordered clamped sum and arithmetic-mean increment evaluate one shared snapshot; their exact legacy accumulation is in `integrate2D.frag:17-51`.
|
||
- **CORRECTED DEFAULT:** The rewrite supports all six 2×3 combinations in 2-D with explicit current/snapshot references and corrected growth/relaxation increments. Sequential always recomputes; shared-snapshot methods never consume updated or stale fields.
|
||
- **CORRECTED DEFAULT:** Standard FFT, `512²`, independent inputs, sequential composition, deterministic seed/initializer, and palette 7 are migration-era defaults only if a future local preset is deliberately authored; the retired catalogue itself supplies none of those product dependencies.
|
||
- **REJECTED DEFECT:** Multiscale discrete dynamics is rejected until a target-aggregation enum exists. Also rejected: additive mode-0 targets, stale chained fields, undefined mode-2 source/reference, texture feedback, and empty 1-D/3-D integration branches (`SmoothLifeMultiscale/main.cpp:2038-2134`).
|
||
|
||
### Consulted multiscale files
|
||
|
||
| Source-relative path | Relevant lines | SHA-256 | Evidence |
|
||
| --- | ---: | --- | --- |
|
||
| `SmoothLifeMultiscale/main.cpp` | 1-240, 2030-2149, 2740-3112 | `8481ed79b68efb9b824c95d5707477e3d60d213b0ee2ff6cb99a7d2f2484e07e` | Controls/parser/storage, 2-D-only integration dispatch, defaults, six pipelines. |
|
||
| `SmoothLifeMultiscale/shaders/snm2D.frag` | 1-129 | `ecf572a8f4262e3cebdca2e086059c63d2cf553a3c195a679792757a3c9a507e` | Per-scale target/increment and missing clamp. |
|
||
| `SmoothLifeMultiscale/shaders/integrate2D.frag` | 1-51 | `3276fe14b814e48883dc3eec735e7bd68e06c12ef96acfb1d8ed32fdc924e0ee` | Sequential one-response update, ordered clamped sum, mean increment. |
|
||
|
||
## Sphere
|
||
|
||
### Frozen interpretation
|
||
|
||
- **SOURCE FACT:** Six active `K×K` faces use `K=128`, internal `R=K/2`, and a `3*K*6` by `3*K` atlas (`SmoothLifeSphere/main.cpp:62-76,351-397`).
|
||
- **SOURCE FACT:** Face directions use normalized face bases plus tangent coordinates; alpha stores spherical cell area (`512-564`). The original side table and gutter copies are at `765-858`.
|
||
- **SOURCE FACT:** Distance is `R*acos(dot(a,b))`; `ri=ra/3`, widths are one, planar radii are converted geodesically, cap areas provide analytic normalization, and updates are replacement or fixed `A+0.1(2S-1)` (`SmoothLifeSphere/main.cpp:1368-1392`; `program.frag:110-162`).
|
||
- **CORRECTED DEFAULT:** `SphereModel::Corrected` completes edge/corner mapping, clamps dot products, uses explicit initialized ping-pong resources, and normalizes each center by actual `cell_area*kernel_weight` sums so a constant field remains constant.
|
||
- **RETAINED HISTORICAL OPTION:** `SphereModel::Legacy` retains the six-face atlas, side gutters with masked corner sectors, tangent cube-sphere geometry, original radius conversion/search stencil, analytic cap normalization, and the original replacement/fixed-0.1 dynamics.
|
||
- **REJECTED DEFECT:** Both models reject unclamped `acos`, undefined atlas contents, and texture feedback. The legacy option is geometrical/numerical, not unsafe-resource compatibility.
|
||
|
||
### Consulted sphere files
|
||
|
||
| Source-relative path | Relevant lines | SHA-256 | Evidence |
|
||
| --- | ---: | --- | --- |
|
||
| `SmoothLifeSphere/main.cpp` | 1-180, 351-960, 1220-1506 | `c770fb36c562135d4bc65aeae36d71ae725286b05aa0ee37f92b6e6f0ddf8b1e` | Config/defaults, atlas allocation, directions/areas, face mapping, rendering, radius conversion, initialization, frame loop. |
|
||
| `SmoothLifeSphere/program.frag` | 1-162 | `037da34db6a050422c372bb458c78553df5ca00e22a26e1ced455f0007c6ce21` | Direct geodesic stencil, analytic normalization, common rule, fixed update. |
|
||
| `SmoothLifeSphere/SmoothLifeLog.txt` | 1-62 | `535680b9f1669e98ff8ac49882951bc0fa13112607d086d965bc40841f626cdd` | Recorded K/R, planar/geodesic radii, analytic areas, historical environment; evidence only. |
|
||
|
||
## Delayed time
|
||
|
||
### Frozen interpretation
|
||
|
||
- **SOURCE FACT:** The field is periodic in x/y and history is a repeat-wrapped 3-D texture of exactly 16 layers (`SmoothLifeDT/main.cpp:330-394`).
|
||
- **SOURCE FACT:** `ri=ra/3`, both widths are one, and the discrete stencil is numerically normalized (`SmoothLifeDT/main.cpp:709-740`).
|
||
- **SOURCE FACT:** Spatial radius selects a history coordinate offset by `-distance/16`; smooth mode reads one layer behind and adds fixed `0.1(2S-1)` (`SmoothLifeDT/program.frag:105-137`). The main loop writes output into `layer`, then increments modulo 16 (`SmoothLifeDT/main.cpp:932-1027`).
|
||
- **CORRECTED DEFAULT:** `head` means next layer to overwrite, `latest=wrap(head-1,16)`, and each radial sample uses `wrap(latest-floor(distance+0.5),16)`. Delay zero therefore reads the latest committed state. All layers are initialized from one deterministic seeded field.
|
||
- **CORRECTED DEFAULT:** A future local preset may deliberately choose `512²`, seed 1, 1,000 deterministic 10–19 boxes, and palette 7; these are modern choices, not facts obtained from the retired catalogue.
|
||
- **REJECTED DEFECT:** The historical head anomaly—distance zero reading the layer currently being produced/uninitialized—is not selectable. Window-sized shape, gradual history filling, undefined layers, and platform-random boxes are also rejected.
|
||
|
||
### Consulted delayed-time files
|
||
|
||
| Source-relative path | Relevant lines | SHA-256 | Evidence |
|
||
| --- | ---: | --- | --- |
|
||
| `SmoothLifeDT/main.cpp` | 1-160, 330-419, 690-1069 | `0595a283ce29a42ff7e1afc5dc835488feb22e52b85d9ee2e73fdcd75ec767a4` | Config, periodic 16-layer allocation, sampled normalization, window-sized setup, head loop, random boxes. |
|
||
| `SmoothLifeDT/program.frag` | 1-137 | `ec5b83df80d39996e99603c5195a43c3ccd0facc22106ab5359e81c8ca318f8e` | Radius-dependent temporal lookup, common rule, fixed smooth update. |
|
||
| `SmoothLifeDT/SmoothLifeLog.txt` | 1-64 | `9e14a8712c71900d10787c8b057b18dfe260a4c694ba843da08bc95b50d9654e` | Recorded analytic/sampled sums, shape, and historical environment; evidence only. |
|
||
|
||
## CPU references
|
||
|
||
### Role and interpretation
|
||
|
||
- **SOURCE FACT:** `SmoothLifeFB.bas` is a double-precision, threaded packed-unitary 2-D reference. It contains sampled kernels, packed FFT stages, `sqrt(N)/kernel_sum`, growth derivative, and deterministic mathematical AB startup formulas (`1-300,500-809,870-908`).
|
||
- **SOURCE FACT:** `SmoothLifeFB_old.bas` is the earlier discrete packed-FFT reference; it directly commits the target and is useful as an independent data-flow check, not as a supported backend definition (`1-260,570-589`).
|
||
- **SOURCE FACT:** Matlab constructs periodic sampled kernels and standard FFT convolution and explicitly compares Euler, improved Euler, AB3 startup, and RK4 with intermediate clamps (`SmoothLifeMatlab/smoothlife.m:1-199`). `result.txt` is historical numerical evidence, not a golden generated by this rewrite.
|
||
- **SOURCE FACT:** `GliderConstructor.bas` is an inverse-design/lookup-table experiment with collision reporting, not a general simulator (`1-254`).
|
||
- **CORRECTED DEFAULT:** CPU code serves as an oracle for formulas and fixtures. Its platform RNG, drawing, fixed sizes, commented alternatives, and UI behavior are not implementation requirements.
|
||
- **REJECTED DEFECT:** AB4, improved Euler, the glider constructor, and old direct-discrete implementation do not expand the mandatory option set. Exactly three historical options remain: RK4 step-origin reference, packed-unitary FFT, and legacy sphere model.
|
||
|
||
### Consulted CPU/reference files
|
||
|
||
| Source-relative path | Relevant lines | SHA-256 |
|
||
| --- | ---: | --- |
|
||
| `SmoothLifeFreeBasic/SmoothLifeFB.bas` | 1-300, 500-909 | `e652379593823fee31cd1a9cf7acc779803aaf04d8efe3f1c0d2f3bf67acd1cb` |
|
||
| `SmoothLifeFreeBasic/SmoothLifeFB_old.bas` | 1-260, 570-589 | `0cf2f0eebeaf250209bccaf418dccbe99641ede080bb3930fe54d733b281dbd5` |
|
||
| `SmoothLifeFreeBasic/GliderConstructor.bas` | 1-254 | `3afe897aeb2b2ae24e0cc3c8f7371b4ab89ef033ad4524b3f6ef3320f8f5cd26` |
|
||
| `SmoothLifeMatlab/smoothlife.m` | 1-199 | `5de29b0fa2d46a9e53d8744f1eeb410bb6c8f7f490ec69be724f4c19a00b4643` |
|
||
| `SmoothLifeMatlab/result.txt` | 1-69 | `405c8b43beb77bf883bb00e2471abb88dd50497292162fb709539cd62de2fcf8` |
|
||
|
||
## Retired catalogues and logs
|
||
|
||
### Non-import policy
|
||
|
||
The legacy catalogues are **PROVENANCE ONLY**.
|
||
|
||
- There is **no JSONL capture** in this task.
|
||
- There is **no catalogue migration** in this task.
|
||
- There is **no product preset dependency** on any legacy config, catalogue, log, path, row order, or description.
|
||
- Application code, tests, builds, and future import outputs must not open the legacy root.
|
||
- A future local preset may quote a row only through a separate, explicit, reviewed decision that records its provenance and fills every modern field. It must not revive a live importer or hidden dependency.
|
||
|
||
Static reconciliation of the files actually present:
|
||
|
||
| Catalogue | Static contents and parser fact | Status |
|
||
| --- | --- | --- |
|
||
| Main | 188 lines begin with `1`, `2`, or `3`; `read_config` accepts exactly that first-byte condition. The historical log independently records 188. | Provenance only; no capture or migration. |
|
||
| SDL | 187 lines begin with `1`, `2`, or `3`. It is largely duplicate/drifted main data and includes a mode-4 row at line 174. | Provenance only; no SDL product backend. |
|
||
| Multiscale | 12 accepted rows, interpreted by startup as four consecutive triplets; the first triplet is duplicated in the `old` section. | Provenance only; grouping evidence only. |
|
||
| Sphere | Two numeric candidate rows are physically present at lines 1-2, but `read_config` performs one fixed sequence of `fscanf` calls and therefore loads only the first tuple at startup. | Runtime-accepted count is one; both physical rows remain provenance only. |
|
||
| Delayed time | 38 numeric candidate rows are physically present at lines 1-42, but `read_config` likewise loads only the first tuple. This does **not** reconcile with the obsolete Macrostep-00 draft expectation of 29 rows. | Record the discrepancy; do not normalize, capture, or migrate it. Runtime-accepted count is one. |
|
||
|
||
### Consulted catalogue/config/log files
|
||
|
||
| Source-relative path | Relevant lines | SHA-256 | Evidence |
|
||
| --- | ---: | --- | --- |
|
||
| `SmoothLife/SmoothLifeConfig.txt` | 1-219 | `7085be7825a98df0fc3c68d6e9b4da3558955d77dc9f11861d6b1575a0b618a7` | Main raw catalogue and comments. |
|
||
| `SmoothLife/SmoothLifeLog.txt` | 1-321 | `295c29ed08d3f9028128fbee49be4de614bf5c4b6778585335b72fe7f1601877` | Historical row count, environment, shader/resource trace, kernel sums; evidence only. |
|
||
| `SmoothLifeSDL/SmoothLifeConfig.txt` | 1-219 | `bc86b688f61d325d8b0eed56367dcd0e3eaf16d78bffa90611678f8d614d1c75` | SDL raw catalogue and drift. |
|
||
| `SmoothLifeMultiscale/SmoothLifeConfig.txt` | 1-37 | `fd8749d8557e0b927932796a4dcebdb881898fac77503f263b363320f8185985` | Twelve rows/four triplets. |
|
||
| `SmoothLifeMultiscale/SmoothLifeLog.txt` | 1-314 | `9f8deb473f9a3e110291537705f2dfdce1a202ffa3cfccf6267c335441ac471c` | Historical 12-row count and environment/resource trace; evidence only. |
|
||
| `SmoothLifeSphere/SmoothLifeConfig.txt` | 1-11 | `6aa28438e4a53cab66e0229192235c4699bc518ec8a41e5f6bf6650efa36afa6` | Two physical candidate rows; fixed parser consumes first only. |
|
||
| `SmoothLifeDT/SmoothLifeConfig.txt` | 1-50 | `717bf025c67c3bfc8fd266ba8c7b5c871813e3c0030455daa8f5ea87a6b93cb4` | Thirty-eight physical numeric rows; fixed parser consumes first only. |
|
||
|
||
## Future legacy-consultation protocol
|
||
|
||
Normal implementation must proceed from the local contract+spec set without reopening the legacy root. Future consultation is allowed only when all of the following hold:
|
||
|
||
1. A concrete discrepancy is stated: local authority is ambiguous, a fixture disagrees, or two local claims conflict.
|
||
2. The exact legacy source-relative path and 1-based line range are recorded.
|
||
3. The complete consulted file is SHA-256 hashed and added or updated here.
|
||
4. The finding is classified as **SOURCE FACT**, **CORRECTED DEFAULT**, **RETAINED HISTORICAL OPTION**, or **REJECTED DEFECT**.
|
||
5. Any implementation-relevant conclusion is copied into the local contract/spec and covered by a local fixture or test; a link to the legacy path is never sufficient.
|
||
6. No legacy executable is run. If static evidence cannot resolve the discrepancy, stop and request an explicit new decision rather than infer behavior from an unsafe run.
|
||
|
||
After that copy-back, the local contract+spec remains the implementation authority and the legacy tree returns to provenance-only status.
|