# Independent stellar-stream reader

Tested existing environment: Python 3.12.12, NumPy 2.3.5, SciPy 1.17.1, Matplotlib 3.10.8. Optional method: Astropy 7.1.1 and galpy 1.11.0 with a genuinely loaded C extension. This package installs nothing.

Download the ZIP and unpack helper, then compare the whole-ZIP SHA below with the published materials manifest.

```sh
python -B unpack_reader.py stellar-streams-reader-science-v1.zip --sha256 00ed185ef35f81f3432b95e93fa2a904b6b8011f1cb5a4f9d46aca50330908dd --output /absolute/new-reader
cd /absolute/new-reader
python -B replay.py --output /absolute/new-science-output
```

Both paths must not already exist. Tested on POSIX systems (macOS/Linux); the producer timeout uses SIGALRM. Default makes zero requests. Every finite case is genuinely integrated, strictly serially, with an external 120 s timeout per producer; allow several minutes for all 25. Only compact full state/work/torque and host-only full state are persisted. Other successful histories are validated in memory. The cold count figures read newly saved records. No completed tracks are shipped.

Optional real exercise, with existing galpy/Astropy:

```sh
python -B optional_reader.py --acquire --output /absolute/new-private-real-output
```

This fetches exactly 737348 response-body bytes from three pinned objects and verifies their full SHA. It does not fetch a paper or install Gala. To reuse verified source bytes, replace `--acquire` with `--inputs /absolute/existing-source-directory`; this explicitly is not fresh acquisition. Root verification has one separately reserved acquisition; the author does not execute it for root. Original and real-derived observations/plots stay private. Upstream Gaia conditions remain relevant.

Read `optional-replay-receipt.json` together with stage results: the no-coverage second start remains FAIL;400-call nonconvergence remains nonconvergence; baseline held-out working loss~.608 is worse than same-fold cubic~.445. Successful numerical replay is not successful stream/potential/dark-matter inference. Working scales are not observed errors and no calibrated posterior is produced.

Author cold-one: all 25 physical cases freshly computed, last plotting/receipt failed on NumPy bool JSON serialization. The retained follow-up exposed an accidentally circular epicycle input: its roundoff turning events failed the frequency gate. A separately approved genuinely noncircular input then passed unchanged frequency/energy/angular-momentum gates. Cold-two: all 25 and corrected independent limits freshly recomputed, complete PASS. Earlier failures and source-era resource/frame failures remain documented, not retrospectively relabelled.

Model:192 imposed warm test particles, logarithmic spherical host and prescribed Plummer trajectory, no self-gravity, tidal release, observation selection or feedback. Finite25-case validation is not a continuous-domain error theorem. All energies/angular momenta are specific. Fixed observer/projection fitting is a separate exercise.
