Changelog

All notable changes to CosmoForge will be documented here.

Version 1.0.1 (2026-05-21)

Documentation-only patch release. Refreshes the long descriptions on PyPI for cosmocore, qube-qml, and picslike so they reflect the published companion paper and the current install path.

Documentation:

  • Paper I (Galloni & Pagano 2026, arXiv:2605.21149) cited in all READMEs and in CITATION.cff. BibTeX entries gained eprint/archivePrefix/primaryClass fields; the legacy "in preparation" notes are removed.

  • CITATION.cff url: field migrated from the retired GitHub Pages location to the canonical Read the Docs URL.

  • cosmocore, qube-qml, and picslike READMEs gained proper PyPI installation instructions (previously instructed users to clone the repository and run pip install -e); the MPI extra is now documented as pip install <package>[mpi] instead of a bare pip install mpi4py.

Version 1.0.0 (2026-05-20)

First stable release. CosmoForge is now a public, paper-validated framework covering QML power spectrum estimation and pixel-space Gaussian likelihood evaluation for spin-0 and spin-2 fields on the sphere.

API stabilisation:

  • SpectrumKey type system replaces the legacy (comp_i, comp_j, mode) tuple-based keying across cosmocore, qube, and picslike. SpectrumKind enumerates ordered slot pairs (SS, GG/CC/GC, SG/SC); CMB aliases (TT, EE, BB, EB, BE, TE, …) and the to_cmb_canonical re-keying helper live in cosmocore.conventions.cmb.

  • Label-keyed user-facing accessors on Fisher and Spectra; legacy tuple-keyed inputs and tuple-rewrap shims removed.

  • SymmetryMode flag on Fisher and Spectra (SYMMETRIC default, DIRECTIONAL for calibration diagnostics) controls how cross-component spin-2 GC / CG blocks are handled; the directional path uses separate Lambda and derivative E matrices (ADR-0011).

Architecture:

  • ComputationBasis polymorphism convention closed (ADR-0002): prepare_for_basis/BasisPrepared contract, quadratic_form abstract method, basis-seam leak in qube/spectra.py closed, single SMW-cross quadratic-form path.

  • PixelBasis class-model cleanup: use_direct flag dropped (pixel-direct is the natural default when no epsilon/mode_fraction is passed); basis kwarg renamed to compression_target; apply_compression internalised.

  • Top-level harmonic.py/pixel.py renamed to remove name collision with the basis/ subpackage.

Numerical stability:

  • Stable SMW rewrite in qube/spectra.py (replaced the catastrophically-cancellation-prone M - M K^{-1} M form with M (I + Lambda M)^{-1}); fixes high-SNR negative VCVT and yields a ~5x speed-up in the multi-spectrum harmonic path.

Packaging:

  • mpi4py is now an optional dependency (cosmocore[mpi], qube-qml[mpi], picslike[mpi]). CI runs the test matrix on both branches of cosmocore._mpi.

  • All remaining np.linalg / scipy.linalg call sites routed through cosmocore.basics for consistency.

Validation:

  • End-to-end reproduction of the Planck low-\(\ell\) Fortran reference for both the QML and pixel-space likelihood pipelines, consistent with double-precision arithmetic.

Documentation:

  • Hosting migrated from GitHub Pages to Read the Docs.

  • Doc-drift sweep policy: at the end of every feature touching public surface, grep for renamed symbols, rebuild the Sphinx tree, and verify CONTEXT.md and per-package READMEs.

  • Tutorials refreshed for the SpectrumKey/SymmetryMode API and re-executed end-to-end at tier-A.

  • Installation guide reworked (developer install opt-in, pymaster/namaster trap documented).

  • CONTEXT.md updated with Slot, SpectrumKind, SpectrumKey, SymmetryMode.

Distribution:

  • Three independently pip-installable packages — cosmocore (foundation), qube-qml (Fisher and QML estimation), picslike (pixel-space Gaussian likelihood) — plus the cosmoforge umbrella metapackage that installs all three.