# Stellar rotation and a conditional age scale

This package contains independently authored scientific Python, own synthetic surface observations and model-level aggregate coefficients. It contains no Lab executable, original author table/TeX/archive, observed-star scatter or row-wise transformed catalogue. Python 3.12.12 with NumPy 2.4.4/SciPy 1.17.1 is the verified environment. The pinned requirements are provided; equivalent environments need their own verification.

Run in a fresh extraction directory:

```sh
python verify_package.py
python fetch_sources.py --output inputs
python reproduce.py --inputs inputs --output results
python validate_science.py
```

The downloader requests exactly two immutable arXiv source archives, together 1,689,195 response-body bytes, verifies archive/member sizes and SHA256, then extracts only five named members. They remain local inputs. A corrupt cache fails; it is not replaced silently. Publicly accessible old AAS material has no automatically established CC-BY redistribution license. The origin papers retain their own rights and terms; the package license applies only to our code and synthetic/aggregate outputs.

`results/summary.json` rebuilds all 923 benchmark rows, 440 Ruprecht catalogue rows and the literal 35 Yes positive-period benchmark subset. It fits the actual temperature-only subset (not the 135 YY sample described elsewhere), compares the one/two-pattern saved-flux likelihood and conditional age density, and leaves whole clusters out. NGC6811 source-version/extinction assumptions remain explicit. Detailed source rows never enter the output summary. The local user can independently inspect the named upstream tables.

`validate_science.py` checks the original rigid model,108 new shear/lifetime states against a separate polar chart, weak/nonstationary/daily/harmonic injections,400 model-generated age draws, 96 extreme exposures against an independent GL41 surface/time integration, and actual JavaScript evolutionary snapshots against direct numerical wind evolution, exact source versions and reddening sensitivity. Every generated dataset in this package is our synthetic teaching model. Native/independent calculations use ordinary floating point; finite validation is not a formal continuum certificate.

It also independently recomputes 24 current-day absorption profiles from the actual native JavaScript exported settings and samples in `instantaneous-line-injections.json`. A separate positive polar chart directly sums the local Gaussian mixtures at 61 native velocity bins and checks flux, centroid and variance with order refinement. Native80m/s velocity-deposition error is bounded separately. Latitude, differential rotation and fading change the same current surface and line; pole-on rotation with no convective perturbation correctly preserves the continuum-normalized shape. These are instantaneous synthetic spectra, separate from the GL9 exposure-averaged saved light curve; they do not supply the period/age likelihood. The local Gaussian width is prescribed, with no instrument or temperature reconstruction. The public Python re-evaluates exported native targets; it does not rebuild or execute the protected Lab Engine that produced them.

The four commands above remain the complete tutorial sequence. For optional direct CLI use, `python inspect_cluster_samples.py --inputs inputs/curtis2020-source` and `python age_calibration_prototype.py --inputs inputs/curtis2020-source` now create their own `results/` outputs in this directory. Neither requires a repository `docs/` tree.

Observing times are days; evolutionary ages are Gyr. The empirical scale is fixed 0.67/1.0/2.7 Gyr, with actual common temperature support 4245.37–5832.12 K. Effective sequence width mixes physical dispersion and unknown measurement errors. Reported catalogue periods/temperatures condition exactly because homogeneous errors are absent. Boundary accumulation is retained; no absolute age accuracy, universal field-star coverage or independent stellar temperature reconstruction is claimed. The 0.5/0.62 separable-law failures and whole-cluster results are descriptive tests, conditional on the imported temperature/membership scale. Training-star bootstrap intervals do not include external cluster-age errors.

Read Curtis 2019 arXiv1905.06869v3; Curtis 2020 arXiv2010.02272v1; Matt 2015 arXiv1412.4786v1; Bouma 2023 arXiv2303.08830v1. The accompanying fixed-reading guide separately discusses Hall 2021, Metcalfe 2024 and Santos 2025. No original mission photometry, seismic spectrum or magnetic-map reduction is rerun here.
