Methodology · Frozen post-merge
How a score becomes evidence.
Every benchmark row that touches a Gaia badge carries a public commit a provenance lane. Self-attestation is rejected at the schema. Reported public claims can count after the human gate; rejected rows score zero.
01Provenance
Every benchmark-result evidence row carries a provenance lane. The
simplified #1419 model has three lanes, with legacy aliases accepted during
migration.
| Lane | Meaning | TM multiplier |
|---|---|---|
verified |
CI-reproduced or verifier-attested benchmark evidence. Legacy aliases: ci-reproduced, verifier-attested. |
2.0× |
reported |
Public claim or mirrored leaderboard evidence accepted by the human gate. Legacy alias: mirrored. |
1.0× |
rejected |
Blacklisted, disputed, pending, candidate, retired, unknown, or not approved. | 0× |
self-attested is intentionally absent and forever rejected — both at the
schema and in scripts/validate.py. A candidate source becomes
reported only after the human gate approves it, or rejected if the
source is disputed/blacklisted.
pending is a legacy no-scoring alias and remains a hard error under
--strict, which the validator auto-enables when the base ref is main.
New human-approved public claims should use reported; blacklisted or
disputed rows should use rejected.
Machines classify. Humans approve or reject.
02Reproducibility fingerprint
Two SHA-256 hashes are required for verified rows:
datasetHash— SHA-256 of the raw dataset. A revision produces a new hash and therefore a new row.benchmarkInputHash— SHA-256 of(dataset + prompt template + harness config). Same dataset, different config, different row.
Both are 64-character lowercase hex. Uppercase, short, or non-hex values
are rejected at both the CLI and schema layers for verified rows. Reported
rows do not need runAt, datasetHash, or
benchmarkInputHash; their attestor/source is the public claim accepted by
the human gate.
03Trust Magnitude contribution
The benchmark-result evidence type is one of the highest-weight signals in
the registry:
weight: 1.4gradeCeiling: SallowedLayers: [generic, named]inheritMultiplier: 0.15- Magnitude = normalized base score × lane multiplier. Base score uses
percentilewhen present; otherwisescoreis normalized byunit. - Freshness: 50%/year decay (half-life ≈ 1 year).
Trust Magnitude computes the final benchmark score internally; do not
persist a finalScore. Verified rows use a 2.0× lane multiplier, reported
rows use 1.0×, and rejected/pending/unknown/candidate/retired rows use 0×.
The existing benchmark cap applies after the lane multiplier.
Schema-valid does not automatically mean scoring-valid. Phase 2B of
/ev-pipeline checks each benchmark-result row against
registry/benchmark-sources.json: rejected or unknown catalog sources are
zero-score; verified rows need reproducibility fields; reported rows need
human approval and a public attestor/source.
reported after the human gate, or rejected if disputed. This is
pre TM Index V2; fusion scoring changes are tracked separately.
04Adding a new benchmark
-
Author the harness. Deterministic Python, pinned deps, emits results
JSON with
score,unit,runAt,datasetHash, andbenchmarkInputHash. Lands atscripts/benchmarks/<id>/run.py. -
Author the CI workflow.
.github/workflows/benchmark-<id>-ci.ymlrunsrun.pyon the submitted commit and, on success, writes an evidence row viagaia dev evidencewith--provenance verifiedand--attestor <workflow-url>@<sha>. -
Register the benchmark id. Add a landing document at
docs/benchmarks/<id>/(see humaneval-v1). -
Wire the leaderboard. Point at
docs/api/v1/benchmarks/<id>.json.
The benchmarkId field is semver-ish: <name>@<version> or
<name>/<subset>@<version>. Examples: [email protected],
humaneval/[email protected], [email protected],
mmlu-5shot@2024-03.
A rename is a major schema bump. Names in this document are load-bearing.
05Frozen invariants
- Field names and shape of
benchmark-resultare frozen — a rename or removal is a major schema bump (v7+). - The
provenancelanes areverified,reported, andrejected; legacy aliases remain accepted for migration. - The
unitenum (pct,pass@1,pass@10,bleu,f1,accuracy,elo,raw) is frozen. - Reported rows count at 1.0× after human gate approval; rejected rows score zero.
- Self-attested provenance is forever rejected.
Any change requires a Splurge-tier RFC.