Releases: dmobius3/lambda-cos
v2.0.0
Reproducibility-audited release of the Λcos analysis pipeline, data, and paper source.
Changes since v1.2.1
- Reproducibility audit. Full pipeline re-run and verified: deterministic scripts reproduce byte-identically; MCMC fits reproduce within posterior thickness; χ² and Δχ² reproduce to ~0.001.
- Data/paper sync. The Ω_Λ = 0.715 Δχ² was corrected to match the deposited chain (+2.34 → +2.38, three locations); the stale Appendix A curated table (
clock_exponent_appendix_A_fits.csv) was regenerated. - Seed scope documented.
fit_clock_exponents.pypins walker initialization only; the README reproducibility note now states this, and the model-D chain argmax is reported as a bound (s₀ ≲ 0.01). - Two related-work citations added (Nesseris, Akrami & Starkman; Dinda, Maartens & Saito).
- Editorial revision of the manuscript: tightened phrasing, trimmed internal cross-references, moved anticipatory defenses out of the construction sections.
- Fig. 5. ELG2 tracer label repositioned below its marker.
- Build/metadata. Makefile
FIGSlist corrected so figure-only changes trigger a rebuild; added.zenodo.jsonandCITATION.cff.
Archived at Zenodo under concept DOI 10.5281/zenodo.19798852.
v1.2.1
Pre-submission polish release. The numerical content of every claim in paper/paper.pdf is now reproducible from the deposited scripts in scripts/. The science is unchanged from v1.2.0; this release closes the reproducibility gaps that a referee could find.
Paper text fixes
- TABLE II (template-bias mock at
$s_0=0.389$ ): values were hand-typed from a never-committed run; now match the deterministic output ofscripts/template_bias.pyexactly. - TABLE V (prior sensitivity): non-baseline rows now match
scripts/prior_sensitivity.pyoutput. - TABLE III (
$s_0=0.06$ row): off-by-one$w_a$ value corrected (+0.021 → +0.030). -
$s_0$ bound: the actual posterior 95th percentile is 0.1849; abstract and body now report$s_0 < 0.19$ (conservative rounding-up rather than rounding-down). All dependent quantities updated:$|\beta| < 0.012$ , fractional H² contribution$< 0.8%$ at$z=1$ ,$w_a \approx +0.29$ at the upper limit, factor-$\sim$10 amplitude gap to the DESI best fit. - Bayes-factor stability: actual is
$\pm 0.03$ across bandwidths, not$\pm 0.02$ .
New scripts (close two reproducibility gaps)
-
scripts/prior_sensitivity.py— reweights the baselinelcos_chain.npyfor the flat-in-$s_0^2$ and flat-in-$\log_{10}(s_0)$ priors and prints the TABLE V values. -
scripts/bayes_factor.py— computes the Savage-Dickey ratio$B_{01}$ at the$s_0=0.001$ prior boundary using a boundary-reflected KDE with a bandwidth scan. Reproduces the §V.G$B_{01} \approx 7.1$ claim.
Editorial
- §III: consolidated split-dependence discussion (the diagnostic
$w_{\rm eff}$ classification is convention-dependent; both fiducial and dressed splits are valid; the convention-dependence is itself part of the template-bias finding). - §V.G: explicit bridge from the wCDM result back to the §IV template-bias mechanism.
- §IV.B: polynomial
$\chi^2 \approx 0$ (3 free parameters on 13 BAO points) called out as the strongest single piece of evidence that the apparent crossing in two-parameter forms is purely a basis-restriction artifact. - Title finalized as "Apparent Phantom Crossing as Template Bias: A Bounded Test Case with Λcos" across paper, READMEs, and references.bib.
- Layout: 9 pages, two-column REVTeX 4.2, all 10 tables and 4 figures placed cleanly.
Reproducibility map (paper/README.md)
Now lists prior_sensitivity.py (§5.3) and bayes_factor.py (§5.5) alongside the existing fit scripts, so a referee starting from this archive can regenerate every numeric claim.
No analysis-code changes
Fit scripts (fit_lcdm.py, fit_lcos.py, fit_wcdm.py, fit_lcdm_cmb.py, fit_lcos_cmb.py, fit_clock_exponents.py), data files, and chain outputs are unchanged from v1.2.0. The paper-text numbers now match what those scripts deterministically produce.
v1.2.0
First release that includes the LaTeX source for the manuscript alongside the analysis code, matching the structure used by the companion a0z repository.
New: paper/ subdirectory
The full PRD-format LaTeX source is now part of this repository:
paper/paper.tex— REVTeX 4.2 wrapper (preamble, title, authors, abstract,\input{body},\bibliography)paper/body.tex— cleaned body (sections 1–8 + Appendix A)paper/body-raw.tex— pandoc snapshot from the upstream markdown sourcepaper/cleanup_body.py— reproducible markdown→LaTeX transformations (heading bump, citation/figure conversion, unicode→math-mode, table polish, etc.)paper/references.bib— 17 entries, APSapsrev4-2stylepaper/figures/— self-contained copies of the four paper figurespaper/paper.pdf— compiled 10-page two-column outputpaper/Makefile— full build pipeline (pandoc → cleanup → pdflatex+bibtex)paper/README.md— build instructions
Build is decoupled from upstream
body-raw.tex is committed, so make in paper/ produces paper.pdf from a fresh clone without needing the upstream markdown. make pandoc regenerates body-raw.tex from the markdown when it is available alongside.
No code changes
The analysis pipeline (scripts/, data/, results/, tables/, figures/) is unchanged from v1.1.0. The numerical content of paper.pdf is fully reproducible from those scripts.
v1.1.0
End-to-end reproducibility update. Every number in the companion paper is now reproducible from the deposited scripts.
M_B bug fix in primary fits
fit_lcos.py, fit_lcdm.py, fit_wcdm.py previously profiled M_B internally in the SN likelihood and ignored the chain-sampled value, leaving the chain M_B column meaningless. Now M_B is passed through correctly. After the fix, M_B posteriors match the paper's reported medians exactly and tau_max drops below 50 for all primary fits.
Reproducibility scripts for §5.4 and §5.5
fit_lcos.pyaccepts--omega_lambda;omega_lambda_scan.pyaggregates the §5.4 Ω_Λ sensitivity table across {0.680, 0.685, 0.690, 0.700, 0.715}.fit_lcdm_cmb.pyandfit_lcos_cmb.pyreproduce the §5.5 CMB-priors fits (compressed Planck distance priors R, ℓ_A), with--non_flatand--free_omega_lambdaflags for the four §5.5 model variants.
Harmonized summary JSON schema
scripts/_summary.py shared helper enforces a common schema across all five MCMC fit scripts: {model, fixed, param_names, best_fit, posterior_quantiles, extras, chi2, tau_per_param, tau_max, acceptance}.
Convergence reporting
All MCMC fit scripts compute and save integrated autocorrelation time τ per parameter plus acceptance fraction. The paper's "τ < 50 for all parameters in both models" claim is reproducible from the deposit.
Repo↔paper lockstep
- README rewritten to describe the actual scripts and outputs.
figures/fig1–fig4are bit-identical toresults/source outputs.tables/clock_exponent_appendix_A_fits.csvcomplete with all 5 rows.- Stale
chains/directory removed.
v1.0.0 — Phantom Crossing as Template Artifact (EPJ Plus submission)
Reproducibility package for the manuscript:
B. Shatto, "Phantom Crossing as Template Artifact: The Λcos Distance-Redshift Model from Bounded Topology" — submitted to European Physical Journal Plus, 2026.
Contents
- Data (
data/): Pantheon+ SNe Ia (1701 entries) and DESI DR2 BAO (13 observables) with full covariance matrices. - Scripts (
scripts/): seven Python files reproducing every quantitative claim:fit_lcdm.py— flat ΛCDM baseline (§5.2)fit_lcos.py— Λcos primary fit at Ω_Λ = 0.685 (§5.2)fit_wcdm.py— wCDM model comparison with ΔAIC/ΔBIC (§5.7)fit_clock_exponents.py— Appendix A clock-exponent fits (Models A–D)template_bias.py— Fig. 1 mock fits (CPL/BA/JBP/Polynomial)threshold_scan.py— Fig. 2 CPL recovered (w₀, wₐ) vs s₀make_plots.py— Fig. 3 corner + Fig. 4 residuals
- Chains and posteriors (
results/): bit-for-bit script outputs, 79 MB. Every figure and table in the paper regenerates from these. - Figures (
figures/): four published PDFs. - Tables (
tables/): Appendix A canonical fit values.
Reproducibility
git clone https://github.com/dmobius3/lambdacos.git
cd lambdacos
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cd scripts
python fit_lcdm.py && python fit_lcos.py && python fit_wcdm.py
python fit_clock_exponents.py
python template_bias.py && python threshold_scan.py
python make_plots.py