Skip to content

Results schema

A results bundle is one JSON file that carries a run and its provenance. You make one with lasagna results bundle, and check it with lasagna results validate. The schema is generated from the same constants the bundler uses, so a hub that validates against it cannot require different fields from the ones Lasagna writes.

Print it, or write it to a file:

lasagna results schema
lasagna results schema -o run-schema.json

The bundle schema version is 1.0. Readers accept 1.0 up to, not including, 2.0.

Top-level fields

Field Required What it holds
schema_version yes The schema version, "1.0".
metrics_version yes The metric definitions. Numbers under different values are not comparable.
run_id yes A hash of the bundle contents. Validation recomputes it, so an edited number no longer matches.
submitter no An object with name and affiliation.
experiment yes The environment and run-level facts. See below.
configs yes One entry per benchmark and arm. See below.
results yes One entry per benchmark and arm with its metrics and per-query scores.
integrity yes warnings and blocking, both lists of strings.

experiment

Field What it holds
environment Required: lasagna_version, python and platform. It has no paths, host names or credential names, because bundles are published.
components The paper and claimed metrics of each component the run named, keyed by the name the run used.
nothing_samples True when only retrieval ran and no task called an LLM. One run is then the whole answer, and SINGLE_RUN is not raised.
determinism One of seeded_per_task, seeded_global_concurrent or seeded. Never "reproducible", because LLM judges and GPU kernels defeat that claim.

configs

Each entry describes one arm on one benchmark.

Field What it holds
name The arm's name.
benchmark The benchmark the entry's key covers.
comparability_key A hash of held_fixed. Validation recomputes it.
held_fixed The configuration held fixed. See below.
varied_dimensions What this arm changed: component slots such as reranker, or config flags. Excluded from the key.
varied_levels The value each varied dimension took, so the cells of a factorial are distinguishable.

held_fixed

These fields feed the comparability key:

metrics_version, benchmark, split, n_samples, sampling_seed, sample_id_digest, corpus_fingerprint, corpus_provenance, resolved_mode, embedder_model, embedder_dim, chunker, retriever_top_k, vector_backend, judge_model, bm25_stemming, fixed_stages, similarity_model and corpus_ingest_gap.

corpus_provenance defaults to native. A field a metrics version did not have yet is not required from older bundles. See comparability and provenance.

results

Each entry has benchmark_name, config_name and metrics, and usually per_sample_scores: one row per query. A retrieval row carries _retrieved_ids, the ranked list the metrics were computed on, and _retrieved with the document id, score and rank of each result. The rank is authoritative. Scores can tie, so sorting by score does not rebuild the ranking.

Integrity messages

blocking problems make lasagna results validate fail. warnings do not, unless you pass --strict. The codes you will meet include SINGLE_RUN, UNRESOLVED_JUDGE_ALIAS and PARTIAL_CORPUS. See read and publish results.