Morten Magnusson · Symbiose Research, Sandnes, Norway · ORCID: 0009-0002-4860-5095 · April 2026 · CC-BY-4.0
Status: This ledger closes the Dataset → Likelihood gap identified in the 2026-04-23 system audit. Every empirical test in the Validation Ledger must declare here which likelihood, which covariance, which priors, which code. Tests without a Likelihood Ledger row are not eligible for inclusion in the Evaluation Ledger global score. Scope today: schema frozen, worked example included, bulk population pending pipeline declaration by maintainer.
The Validation Ledger records what was tested and how it scored. The Likelihood Ledger records how the score was computed. Without this layer, two identically-named tests in different pipelines (e.g. direct chi² vs full Cobaya posterior) can produce different verdicts — the system becomes non-reproducible.
Every row here binds a test_id from the Validation Ledger to a
fully declared pipeline: likelihood type, covariance source, parameter priors,
code, entry point, inputs, outputs, and execution status.
| Field | Meaning | Required |
|---|---|---|
test_id | Foreign key into validation-ledger/data/tests.json | yes |
likelihood_type | gaussian · gaussian_cov · binned_chi2 · mcmc_posterior · analytic · external | yes |
covariance | Path or DOI of covariance matrix; diagonal if independent errors | yes |
parameter_priors | dict of parameter → {type, range / mean ± sigma / ref} | yes |
code | cobaya · mgcamb · cosmoSIS · direct_python · external | yes |
code_version | Git SHA / package version / external tag | recommended |
entry_point | Repo-relative script or external URL | yes when code is not external |
inputs | Dataset DOIs / repo refs | yes |
outputs | Subset of: chi2, best_fit, posterior_summary, evidence, log_likelihood, predictive_samples | yes |
status | declared runnable executed frozen | yes |
Full JSON Schema: docs/likelihood-ledger/schema.json.
Status as of ledger creation. Entries marked GAP have no pipeline declared and block their Validation Ledger counterparts from the Evaluation Ledger.
| Category | Likelihood type | Code | Entry point | Status |
|---|---|---|---|---|
| BAO (DESI, eBOSS) | gaussian_cov | direct_python | reproduce_bao.py | runnable |
| CMB sanity | gaussian | direct_python | reproduce_cmb_sanity.py | runnable |
| SPARC rotation curves | binned_chi2 | direct_python | reproduce_sparc.py | runnable |
| EFC integration (background) | analytic | direct_python | reproduce_efc.py | runnable |
| fσ8 / S8 (growth) | gaussian_cov | TBD (Cobaya likely) | TBD | GAP |
| Cosmic shear (DES, KiDS, Euclid) | mcmc_posterior | cobaya + mgcamb | TBD | GAP |
| ISW cross-correlation | gaussian | direct_python | TBD | GAP |
| GW propagation (KC6) | gaussian | direct_python | TBD | GAP |
| Full CMB likelihood (plik_lite TTTEEE) | mcmc_posterior | cobaya | TBD | GAP |
{
"test_id": "s8_growth_fsigma8_2026",
"likelihood_type": "gaussian_cov",
"covariance": "data/cov/fsigma8_compilation_2026.json",
"parameter_priors": {
"Omega_m": {"type": "uniform", "range": [0.20, 0.40]},
"sigma8": {"type": "uniform", "range": [0.70, 0.90]},
"mu_efc": {"type": "uniform", "range": [0.80, 1.20]}
},
"code": "direct_python",
"code_version": "efc@<git-sha>",
"entry_point": "pipelines/fsigma8_runner.py",
"inputs": [
"doi:10.xxxx/desi-y3-fsigma8",
"doi:10.xxxx/des-y6-3x2pt"
],
"outputs": ["chi2", "best_fit", "posterior_summary"],
"status": "declared"
}
Once a run produces numbers, status advances to executed
and the result is recorded in the Validation Ledger. If the declaration is then
frozen for publication, it advances to frozen.
| Ledger | Role | Direction |
|---|---|---|
| Validation Ledger | Defines test_id vocabulary | Likelihood Ledger references it (FK) |
| Evaluation Ledger | Global score function, falsification verdict | Consumes Likelihood Ledger rows with status ∈ {executed, frozen} |
| Model Comparison | EFC vs ΛCDM vs MG on identical likelihood | Consumes Likelihood Ledger row via likelihood_id |
| Gap Analysis | Tracks missing pipelines | Every GAP row here should appear as a gap row there |
| Stage-IV Roadmap | Maps survey releases to tests | Each roadmap test should eventually gain a Likelihood Ledger row |
scripts/maintenance/efc_likelihood_sync.py mirrors the pattern of
efc_ledger_impact_sync.py:
test_id from validation-ledger/data/tests.json.vl_category ∈ {physics_test, phenomenological} without a likelihood row, emits a warning.inputs DOIs exist in validation-ledger/data/evidence-register.json.data/likelihoods.json? Proposal: single-array file, mirroring tests.json.code_version; conda env export as supplementary artefact.parameter_priors inline ranges, or reference validation-ledger/data/parameters.json? Proposal: reference by default, allow inline only when a test uses a non-standard prior with documented rationale.| What this ledger fixes | Makes every empirical score reproducible by declaring its pipeline explicitly. No test enters the global score without a row here. |
| Hard dependency | Validation Ledger — provides the test_id vocabulary every row references. |
| Hard consumers | Evaluation Ledger and Model Comparison — neither can fire without executed likelihood rows. |
| Current gaps | fσ8 / S8, cosmic shear, ISW, GW propagation, full CMB likelihood. All marked GAP until a pipeline is wired. |
| Status | Schema frozen; pipeline registry populated with all current reproduce_*.py scripts; bulk population of new pipelines follows maintainer review. |
© 2026 Energy-Flow Cosmology Initiative · Likelihood Ledger — pipeline declarations for reproducible scoring