# Galactic bar orbits independent scientific reader v1

Use an existing Python environment with NumPy, SciPy and Matplotlib. No installer, browser, network request, original paper, observation, interactive Lab, Engine, Worker or completed trajectory is included.

```sh
python3 -W error replay.py --output /absolute/new/empty/run
```

The six commands really integrate one 256-tracer population at two KDK resolutions, compare the ten original test states with independent polar DOP853, measure circular/epicycle limits and the work of prescribed bar growth, shoot six periodic parents at new roots and complete periods, read the saved arrays for diagnostics, and draw three own figures. Every command has a 120-second ceiling and runs strictly after the previous one. The output directory must be new. A manifest checks exact bytes before any calculation; this integrity check is separate from the numerical work.

The shared field is the flat logarithm plus the Dehnen quadrupole with bar radius 0.5, amplitude 0.01 and pattern speed 1. Distances, velocities and time use R0, v0 and R0/v0. Energy and angular momentum are per unit mass. Positions and velocities of the population are inertial; periodic-parent arrays use the rotating bar frame and its noncanonical velocities u,v. The six parents are recomputed from brackets, not supplied roots. Only their two base representatives have a new linear-flow classification. Neighboring parents inherit no stability label.

Eight equally weighted rings with sixteen azimuths and paired radial signs give 256 tracers. The cold pairs coincide, so there are 128 distinct cold positions. This prescribed release is not an equilibrium distribution function, stellar surface brightness or self-consistent N-body disk. The angle statistic Q2 weights each tracer by 1/256. It is not a mass or light measurement.

The complete population has 257 saved times over 8pi. The 5120/10240-step difference divided by three is a conditional second-order error estimate and must stay below 2e-4, with every actual drift outside R=0.5. Ten independent trajectories, potential derivatives and original analytic gates provide additional checks. These finite cases are not a continuous parameter-domain theorem.

Expected failures are printed as such: a wide shooting bracket has same-sign endpoints; a fast warm population leaves the admitted radial branch; and a growing amplitude changes E-Omega*L until its explicit work is included. Successful replay of these negative examples does not make their rejected hypotheses pass.

`population/population-record.npz` is the saved fine history. `saved-analysis.json` and all SVGs consume saved files. The radial parent plot shows the small actual change in radius in a separate diagnostic; it does not exaggerate an ellipse. The main Lab default uses amplitude 0.04. To compare this reader's amplitude 0.01 population, choose either periodic-parent preset and keep pattern speed 1.

Sources: Dehnen, astro-ph/9911161v1, equation 3 and section 3; Sellwood & Binney, astro-ph/0203510v2, section 2 and transient-wave experiments. Chiba et al., arXiv:2604.01294v1, is a separate self-consistent live/static-halo study discussed in the reading guide. Its action-angle maps, evolution and tree-ring inference are not recalculated by this package. Original papers and figures remain on their provider terms and are excluded here.

`input-lineage.json` preserves source paths and hashes of copied own scientific modules. `manifest.json` lists all package members except itself. The package has no optional download path and no application code. The own scientific code and synthetic figures use the enclosed MIT license; dependencies retain their own licenses.
