HumanEval.org

Data downloads

Nightly anonymized dumps of every ratings-eligible battle and vote — the exact inputs the official leaderboards are computed from. Stable URLs: /downloads/files/latest/* always points at the newest dump. Prefer machine access? See the public JSON API.

Available dumps

2026-11-07latest

generated 2026-11-07T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Be033b87dcef091bdf1beab6834296985241f477331bf9ba7c3aefa7c1c8e2811
votes.jsonl079 B788b7e1f3e34b340ff1f6f3eea4a2674b848beb2eac8550c800ccea20c2ad5bc

Manifest: manifest.json

2026-11-06

generated 2026-11-06T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Bcb5df03992fe2210a2956a39e67b718596ba928a239a1cb06453ff235a9da26e
votes.jsonl079 B3421209a96807224400bd9fed6f9289ea1c4dc09f6dea8a539e7390316d3ffaa

Manifest: manifest.json

2026-11-05

generated 2026-11-05T03:15:17Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Bdf2260e8ced50cb8d9ef7024ebae0eee6b3a987e3641c1e93e0c4a965bea1f6f
votes.jsonl079 B66656eba76d902cfb87d77de34f05f046eb5d9fd4101e33a34c10ffd0160d419

Manifest: manifest.json

2026-11-04

generated 2026-11-04T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Bf5ecdbc023a6072c8c1a9ab535e1f4aea45e45ed82934892a8ae3d7d425c6507
votes.jsonl079 B526aa2050ed5b7de66501d77838868ff22909e8bb917ff7346c4118a71e75408

Manifest: manifest.json

2026-11-03

generated 2026-11-03T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Baef61b41434f46630a59ea9016c48561710ef2ca1049ef0e3720ffa9043e08f9
votes.jsonl079 Bbc31d2faad241be9aa752b052de92c3c6b49a28e17affc700ab07116916e2dca

Manifest: manifest.json

2026-11-02

generated 2026-11-02T03:15:26Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 B0e3af9525a6b589f3a9574b6549e317697c9133908235e9457b667fece6cebd0
votes.jsonl079 B92da67d0440df3cf9bc8241227e64caf85ffee32e228e7126fa922d41f91bbca

Manifest: manifest.json

2026-11-01

generated 2026-11-01T03:15:04Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Bea3e741ddde2854e1b9438865ecf5946c752b2e4e3727221b1045301f34eb577
votes.jsonl079 B3787d54d1147c8dda044178b315bb21f62447b0bb9e875090c677ffe76d8618f

Manifest: manifest.json

2026-10-31

generated 2026-10-31T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 B91c4d71cb4831425b1e580ce5c7d5f8eba637143c8cc15ece202ce5552847229
votes.jsonl079 Bdcaad5dbdc056d3f043003621b27ea4e6c9c9014accf03d2aa2812e7746c202d

Manifest: manifest.json

2026-10-30

generated 2026-10-30T03:15:21Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 B2edd9adde5f8f22d0f50a057011ef520addb67efb9226b6433854f5296a8887c
votes.jsonl079 B42a95a240ba9275ed205b7a52acf2dba5a30b9ffb77052829183e3c3b1784e4d

Manifest: manifest.json

2026-10-29

generated 2026-10-29T03:15:01Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 B5c3aaf404c56585a06fea8c36735fd088908886d5817a0775b2fa0478f550aae
votes.jsonl079 B1ad4c5ba5ca241a7d5eb51a4f1587cd648863d6d309e2f09e1b2c4ec3ee32486

Manifest: manifest.json

2026-10-28

generated 2026-10-28T03:15:02Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Bbdb8fc94ebbc81a495aa3a02542ffed9bb7cbce9dbe052fbcba260ebb469cffd
votes.jsonl079 B2a4a4801827c298ff727d808d404f792461ec0d6a8e2ac8acc9eafbdaed01b9e

Manifest: manifest.json

2026-10-27

generated 2026-10-27T03:15:01Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Ba528e998b558df8d9f29160f32b42c16053af1c5881413ecef1ab681f0db615d
votes.jsonl079 B46aa28420b82bb68bb60cdd9bd0fdf5e23090ff26ceb9f5c8d74f4c008ea8bd1

Manifest: manifest.json

2026-10-26

generated 2026-10-26T03:15:23Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Bd6598ec6bd2483ca1b89e5ef0f6f0c2c5f6a5be9ca0cd74f5cb5aa5e5f029890
votes.jsonl079 B0e3b27d4cc4e1825e84ee70d0c05fdb83319eb445bce479f9a6a8cf722e764d3

Manifest: manifest.json

2026-10-25

generated 2026-10-25T03:15:01Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 B7b55b72d516d08502c27129a6727976434fc064ec4f2430b2edb710fbc221de3
votes.jsonl079 B72dfc0cfd78ffaec323edae458ee5445d54750fabd096973a5ea01665573785b

Manifest: manifest.json

2026-10-24

generated 2026-10-24T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 B821a610a1fd14b4467ae7c75951c5c1920d076b1fb42798e4f943fb4ad2e21ec
votes.jsonl079 Bca7f206bad8a1ed24fb5c7d5fede15b2520439298189490597cb3d57613d6f8a

Manifest: manifest.json

2026-10-23

generated 2026-10-23T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 B2ff792c116f2ead878f3eef579cf668e784b23622007a5c6cd28e04bd1313280
votes.jsonl079 Bc7d2e999c43a8e7177d1a94cd78e402a2e6a37a385398de7358b0a09c8b2c889

Manifest: manifest.json

2026-10-22

generated 2026-10-22T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Bc516ed3fa4c0074cb1294e1b610ff3efa1d00a21358b23d567b325764add41b6
votes.jsonl079 Bfa45c3d8b77c8ba9abc0d6e4a3a7e8668a9dd1b4742bcf0b316944718677d3d1

Manifest: manifest.json

2026-10-21

generated 2026-10-21T03:15:03Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 B6b8e31606e42b7f917cb003fe41ced782634b6a0d543a68fb9321971919eb97a
votes.jsonl079 Bdfd6560892b0e478e5e0023e299cdb183800705c190521158c9d1e7f32bf32c7

Manifest: manifest.json

2026-10-20

generated 2026-10-20T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Bfec7da178eaa6ab082f1c06135527fe27d4e92faf739c56237cb472d3da0f1e9
votes.jsonl079 B4531f0c74c5d76c40f9182d3a77d6884044f644debfd42e5200c99a232a54629

Manifest: manifest.json

2026-10-19

generated 2026-10-19T03:15:06Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Ba2174628edc329eea39548f67d9dcded75d70fb172c8d2223bccc1895712eb50
votes.jsonl079 B7387ed6d636e2408dc8aa404dc6b2d3ea253148b5b20b4c20c88bba06428a550

Manifest: manifest.json

2026-10-18

generated 2026-10-18T03:15:00Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Be288a6f4ae006567968bccce20796934e79d744e3f986610f2d026d9f63ae0d8
votes.jsonl079 B54aec0019dd4aeff48ee3c8e4a8786c6a8ca6a167cee0bbf2153632fd6f566a6

Manifest: manifest.json

2026-10-17

generated 2026-10-17T03:15:01Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Ba43a303f4e1cf60e42adfa92aaf332142837aa6069721df23d29fa694c3eeb00
votes.jsonl079 Bb3fcbf602b8a3572683b1e86a6495bced86e9aaa3b3ca4c8e2663c98a2491803

Manifest: manifest.json

2026-10-16

generated 2026-10-16T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Bde5353e52b66132ae5a00f3d330de2efecc4794828e080b2ef071bafb07827d9
votes.jsonl079 B0bbc29f50586c0577eafd39e06276f097b03269a64d90ad531da46e72f94025a

Manifest: manifest.json

2026-10-15

generated 2026-10-15T03:15:01Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Bb894590168fe8ec0b797018cb363e5335c5ad8a9d514c2dd46b20a1a5a290a4a
votes.jsonl079 B9b2deadaf26d67f683561ea1f104d8a03203e18d256508c99c399220ecbb1681

Manifest: manifest.json

2026-10-14

generated 2026-10-14T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Be08bb53dd85254473ebea8ec40b2d45698e7d989417fe66da52b2c987f366f14
votes.jsonl079 B85a9bcd4d488195811e03c3b0c71b1279855ca165dad88db985fbc021b577b18

Manifest: manifest.json

2026-10-13

generated 2026-10-13T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 B01f6ab00423d5192226049700804b04eb4c72d58e8c6911c61328bf882b93712
votes.jsonl079 B9e9fb52dc57438e2c6d4479d2862bce9f132a456e2ac946f752a405d1d2e05d9

Manifest: manifest.json

2026-10-12

generated 2026-10-12T03:15:10Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 B3ddcb95104f998a52ba85d9dfba0a4db5994b32e5b0075413b11366246bab480
votes.jsonl079 B76fe882e3933081152aee3c3494f0c104787dff03f3fc9dc246f322b87a7abea

Manifest: manifest.json

2026-10-11

generated 2026-10-11T03:15:20Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Be8f01c1ae38bb97b1d96e7f20298c49fa4f7799e8b9d687d7b385e43e74f5edd
votes.jsonl079 B890508f4044e13cf4c1b76185d886bafdfbdaad7ad9a078f9a342674c56f6285

Manifest: manifest.json

2026-10-10

generated 2026-10-10T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 B284637ec09002dd090004278eec12a7bdad43c9e2664d7684dce3654f9bd9850
votes.jsonl079 Bd116c1f53216f72a87347ace1893993049f7d002cb356270810f68f6293d7fe9

Manifest: manifest.json

2026-10-09

generated 2026-10-09T03:15:29Z · categories: (empty)

FileRecordsSizeSHA-256
battles.jsonl099 Ba7e47b53d3cc9b70a8b975cc1c0b2a4abf1abc16500b170818fbd10496cf852d
votes.jsonl079 B8d2e7065341feee2c17ba47c506ae12b549908e4d3d07d894be89adbe54f4c04

Manifest: manifest.json

Reproduce the official leaderboard

The official numbers are produced by running the open humaneval-ratings package on these dumps with the published seed — no database, no network, no hidden inputs. Byte-identical reproduction is guaranteed under the package's pinned environment (requirements-lock.txt):

# 1. Download the dump you want to verify
curl -O https://humaneval.org/downloads/files/latest/battles.jsonl
curl -O https://humaneval.org/downloads/files/latest/votes.jsonl
curl -O https://humaneval.org/downloads/files/latest/manifest.json

# 2. Check the digests against manifest.json
sha256sum battles.jsonl votes.jsonl

# 3. Install the rating engine with its exact pins
python3 -m venv .venv
.venv/bin/pip install -r requirements-lock.txt   # from the package source
.venv/bin/pip install humaneval-ratings           # or: pip install <source dir>

# 4. Compute — the official run uses seed 42, 100 bootstrap rounds
.venv/bin/humaneval-ratings compute \
    --battles battles.jsonl --votes votes.jsonl \
    --out leaderboard.json --seed 42

# 5. Compare with the published snapshot / API values
sha256sum leaderboard.json

Every leaderboard.json records the seed, bootstrap rounds, package version and the SHA-256 of its exact input files in its metadata, so third parties can verify each other's runs as well. Vote weights in the dump come from a hidden quality pipeline (see methodology) — their values are public, their derivation is not.

Dump format specification

The text below is the canonical DUMP_FORMAT.md shipped with the rating engine (single source of truth, rendered as-is).

HumanEval.org public data dump format — v2

This document is the canonical, normative specification of the HumanEval.org public data dump and of the leaderboard.json file the humaneval-ratings package produces from it. The platform's nightly export is built to match this spec; the official leaderboard is produced by running this package on the published dump, so anyone can reproduce the official numbers byte-for-byte (see README.md).

Version note. Dumps published from 2026-09-08 on carry schema_version: 2 (section 3.1 adds recording battles for the computer-use category). v2 is a superset of v1: every v1 record is a valid v2 text record. The engine (humaneval-ratings ≥ 1.1.0) reads both versions; v1-only readers must be updated before consuming new dumps (the header version is exactly what they check).

The rating mathematics applied to a dump is specified in METHODOLOGY.md.

1. General conventions

  • A dump consists of exactly two files: battles.jsonl and votes.jsonl.
  • Encoding: UTF-8, Unix line endings (LF), one JSON object per line, no blank lines, file ends with a trailing LF.
  • Header line: the first line of each file is a metadata object (section 2). All subsequent lines are data records.
  • IDs are JSON strings (battle_id, vote_id, voter_id). The platform's internal keys are 64-bit integers which can exceed JavaScript's 2^53 safe-integer range; strings keep IDs safe and opaque. IDs are unique within their file and stable across dumps.
  • Models and categories are identified by their public slugs (models.slug, categories.slug on the platform side), never by internal numeric ids.
  • Timestamps are ISO 8601 UTC with a trailing Z, second precision: 2026-08-22T19:31:04Z.
  • Forward compatibility: readers MUST ignore unknown object fields. Additive changes (new optional fields) do not bump schema_version; breaking changes do.
  • Privacy: battles and responses are public content. No user data is ever exported; voter_id is a pseudonymous opaque token (see 4.1).

2. Header lines

First line of battles.jsonl:

{"kind": "battles", "schema_version": 2, "generated_at": "2026-09-08T04:00:00Z", "categories": ["browser-use", "chat-writing", "chat-coding"]}

First line of votes.jsonl:

{"kind": "votes", "schema_version": 2, "generated_at": "2026-09-08T04:00:00Z"}
FieldTypeRequiredMeaning
kindstringyes"battles" or "votes"; must match the file's content
schema_versionintegeryesThis spec is version 2 (v1 dumps remain readable). Readers reject versions they don't support
generated_attimestampyesWhen the export was produced
categoriesarray of stringsbattles file onlyThe full category-slug set covered by this dump; every battle's category_slug MUST be in it

Headers may carry extra fields (e.g. a source URL); readers ignore them.

3. battles.jsonl — data records

One record per voted battle. Battles without eligible votes MAY be included (the engine ignores them) but the export SHOULD omit them.

{"battle_id": "1024", "category_slug": "chat-writing", "model_a": "gpt-alpha", "model_b": "claude-beta", "created_at": "2026-08-22T19:31:04Z", "normalization_mode": "rendered", "modality": "text", "response_a": "# Draft\n\nDear team, ...", "response_b": "Dear team, ..."}
FieldTypeRequiredMeaning
battle_idstringyesUnique battle identifier
category_slugstringyesCategory the battle was fought in; must appear in the header categories list
model_astringyesSlug of the model in slot A (as shown to the voter, post position-randomization)
model_bstringyesSlug of the model in slot B; must differ from model_a
created_attimestampyesBattle creation time
normalization_modestringyesOne of rendered, raw, noformat — how responses were displayed to voters (raw for recordings; not meaningful there)
modalitystringv2: optional, default texttext or recording (section 3.1). Absent in v1
response_astringtext battles: yesFull response TEXT produced by the slot-A model. MUST be absent for recording battles
response_bstringtext battles: yesFull response TEXT produced by the slot-B model. MUST be absent for recording battles

Notes for the platform exporter:

  • Response bodies live in object storage as text artifacts (artifacts.storage_ref); the exporter MUST resolve and inline the raw text (the stored artifact content, not the rendered HTML) into response_a/response_b. Style covariates are computed from these texts (METHODOLOGY.md §7), so their exact bytes matter.
  • v1 exported text-modality battles only. v2 adds the recording modality below; any further artifact modality is another bump.

3.1 recording battles (v2 — computer-use category)

Computer-use ("Browser Use") battles have no response text: each contestant drove a real browser through the same task on live websites, concurrently from an identical starting scene, and voters judged wall-clock-faithful recordings side by side (METHODOLOGY.md §10). A recording battle is exported as:

{"battle_id": "2048", "category_slug": "browser-use", "model_a": "gpt-alpha", "model_b": "claude-beta", "created_at": "2026-09-08T10:00:00Z", "normalization_mode": "raw", "modality": "recording", "recording_a": {"video_key": "battles/2048/a.mp4", "trace_key": "battles/2048/a.trace.jsonl", "screenshot_key": "battles/2048/a.png", "assisted": false}, "recording_b": {"video_key": "battles/2048/b.mp4", "trace_key": "battles/2048/b.trace.jsonl", "screenshot_key": null, "assisted": false}, "telemetry_a": {"duration_ms": 184000, "time_to_first_action_ms": 6200, "steps": 14, "median_step_ms": 9100, "model_ms_total": 121000, "harness_ms_total": 4900}, "telemetry_b": {"duration_ms": 152000, "time_to_first_action_ms": 4100, "steps": 11, "median_step_ms": 8700, "model_ms_total": 88000, "harness_ms_total": 3900}}
FieldTypeRequiredMeaning
recording_a, recording_bobjectyesPer-slot artifact references (below)
recording_*.video_keystringyesObject key of the constant-frame-rate video whose duration equals the run's wall clock (t=0 = the shared start tick)
recording_*.trace_keystringyesObject key of the JSONL action/event trace (cursor moves, clicks, typing with secrets masked, per-step model/harness latency) — the source of truth for what the agent did
recording_*.screenshot_keystring or nullyesObject key of the final screenshot, if captured
recording_*.assistedbooleanyestrue if a human intervened in THIS slot's run. Assisted battles are never exported (they are ratings-ineligible); the field exists so the record is self-describing
telemetry_a, telemetry_bobjectyesRun telemetry; every member is an integer or null
telemetry_*.duration_msinteger/nullyesWall-clock run length in ms
telemetry_*.time_to_first_action_msinteger/nullyesms from the shared start tick to the contestant's first dispatched action
telemetry_*.stepsinteger/nullyesNumber of observation→action steps
telemetry_*.median_step_msinteger/nullyesMedian per-step latency (model + harness)
telemetry_*.model_ms_totalinteger/nullyesTotal time spent waiting on the model
telemetry_*.harness_ms_totalinteger/nullyesTotal harness overhead (identical scaffold for every model; published so equal treatment is checkable)

Object keys are relative to the platform's artifacts bucket; the media themselves are large binary objects and are not part of the dump (they are served through the platform, not published in bulk). The rating engine does not read them: it uses model_a/model_b/ category_slug and the votes exactly as for text battles, and treats the style covariates of a recording battle as zero (METHODOLOGY.md §7.5).

4. votes.jsonl — data records

One record per ratings-eligible vote.

{"vote_id": "5001", "battle_id": "1024", "voter_id": "v_9f2c7a1e", "choice": "win_a", "created_at": "2026-08-22T19:32:40Z", "weight": 1.0}
FieldTypeRequiredMeaning
vote_idstringyesUnique vote identifier
battle_idstringyesThe battle voted on; MUST exist in battles.jsonl
voter_idstringyesPseudonymous voter token (see 4.1)
choicestringyeswin_a, win_b, or tie
created_attimestampyesVote time
weightnumberyesEffective vote weight, finite and > 0; 1.0 is the default full weight

4.1 Voter pseudonyms

voter_id is an opaque token derived by the platform (e.g. a keyed hash of the internal user id). It is stable within a dump (and across dumps, so long-term voter behavior is analyzable) but cannot be linked back to an account. The derivation is internal and never published.

4.2 Vote weights and the quality pipeline

The platform runs a hidden vote-quality pipeline (consensus agreement, gold-standard checks, behavioral signals, provisional-account windows). That pipeline runs before export:

  • Votes it excludes never appear in the dump.
  • Votes it down-weights appear with their reduced effective weight.
  • Full-quality votes carry weight: 1.0.

The dump therefore contains exactly the votes that count, each with the weight it counts at. Ratings computed from the dump MUST use these weights (METHODOLOGY.md §3). How weights are derived is deliberately unpublished (anti-gaming); that they are applied, and their values, are fully public here. The exporter also guarantees at most one vote per (battle, voter) pair; the engine does not re-check this.

5. Validation rules (normative for the engine)

The engine rejects a dump (non-zero exit, no output) when:

  1. A header line is missing, has the wrong kind, or an unsupported schema_version.
  2. Any required field is missing or has the wrong JSON type (for v2 recording battles: recording_a/recording_b missing or not objects, or a response_* text present).
  3. choice, normalization_mode or (v2) modality has an unknown value.
  4. weight is not a finite number > 0.
  5. A battle_id (in battles) or vote_id (in votes) is duplicated.
  6. A vote references a battle_id not present in battles.jsonl.
  7. model_a == model_b in any battle.
  8. A battle's category_slug is absent from the header categories list.

Unknown fields are ignored everywhere. Battles with zero votes are ignored. Categories with zero votes produce no leaderboard section. Models enter a category's leaderboard only via voted battles there.

6. Output: leaderboard.json

Produced by humaneval-ratings compute. Top-level shape:

{
  "metadata": {
    "package": "humaneval-ratings",
    "package_version": "1.0.0",
    "leaderboard_schema_version": 1,
    "dump_schema_version": 1,
    "dump_generated_at": "2026-08-23T04:00:00Z",
    "seed": 42,
    "bootstrap_rounds": 100,
    "min_votes": 30,
    "style_min_votes": 50,
    "input_digests": {
      "battles_sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
      "votes_sha256": "60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752"
    }
  },
  "categories": [
    {
      "category": "chat-writing",
      "vote_count": 8231,
      "style_control": true,
      "style_coefficients": {
        "length_chars": 24.1830,
        "markdown_density": 6.0021,
        "list_count": 3.1187,
        "header_count": -0.4402
      },
      "entries": [
        {
          "model": "claude-beta",
          "rating": 1041.2211,
          "ci_low": 1027.0110,
          "ci_high": 1055.9024,
          "rating_style_controlled": 1030.5470,
          "ci_low_sc": 1016.2001,
          "ci_high_sc": 1046.0193,
          "vote_count": 4110,
          "provisional": false,
          "rank": 1,
          "order": 1
        }
      ]
    }
  ]
}

6.1 Metadata

Every knob that affects the numbers is recorded: the seed, bootstrap round count, thresholds, package version, and the SHA-256 digests of the exact input files. There are no timestamps generated at compute time — dump_generated_at is echoed from the battles-file header (dump_schema_version likewise) — so the output is a pure function of (inputs, CLI parameters, pinned environment). Verifiers check both digests, run the same command, and compare sha256(leaderboard.json).

6.2 Category objects

Sorted by category slug (ascending, bytewise). Fields:

FieldMeaning
categoryCategory slug
vote_countTotal eligible votes in the category (unweighted count)
style_controlfalse when the style-control fallback triggered (METHODOLOGY.md §7.4); then SC fields mirror the raw fields
style_coefficientsFitted shared style coefficients in rating points per +1 SD of each normalized feature difference; null when style_control is false
entriesModel rows, sorted by order

6.3 Entry fields

FieldMeaning
modelModel slug
ratingRaw Bradley-Terry rating (center 1000, Elo-equivalent scale; METHODOLOGY.md §4)
ci_low, ci_high95% bootstrap CI of rating (2.5th/97.5th percentiles)
rating_style_controlledRating from the style-controlled fit (METHODOLOGY.md §7)
ci_low_sc, ci_high_sc95% bootstrap CI of the style-controlled rating
vote_countUnweighted count of eligible votes on battles involving this model in this category
provisionaltrue when vote_count < min_votes; provisional models keep their estimates but get rank: null
rankDisplayed rank band (integer, non-provisional models only, else null); overlapping CIs share a band (METHODOLOGY.md §6)
order1-based sort position within the category (all models, including provisional)

Sorting and rank bands are computed from the rounded, published values (see 6.4), so the ordering and bands are verifiable from leaderboard.json alone: entries sort by rating descending, ties broken by model slug ascending; order is that position. Rank bands use the published ci_low/ci_high (METHODOLOGY.md §6).

6.4 Determinism and precision policy (normative)

  • Every floating-point value in leaderboard.json is rounded to 4 decimal places (round-half-even, Python round(x, 4); matches the platform's numeric(10,4) snapshot columns) and serialized with exactly four decimal digits (-?d+.dddd).
  • Object keys are sorted (bytewise ascending); output is ASCII-only (non-ASCII escaped as in JSON \uXXXX); separators are ", " / ": " with 2-space indent; LF newlines; single trailing LF.
  • The RNG and every iteration order in the engine are deterministic (METHODOLOGY.md §8). Same input files + same CLI parameters + the pinned environment (requirements-lock.txt) → byte-identical output.

7. Worked example

A minimal, valid dump (v1 headers — still accepted; a v2 dump would say "schema_version": 2 and may add "modality": "text"). battles.jsonl:

{"kind": "battles", "schema_version": 1, "generated_at": "2026-08-23T04:00:00Z", "categories": ["chat-writing"]}
{"battle_id": "1", "category_slug": "chat-writing", "model_a": "gpt-alpha", "model_b": "claude-beta", "created_at": "2026-08-22T10:00:00Z", "normalization_mode": "rendered", "response_a": "## Plan\n\n- step one\n- step two", "response_b": "Do step one, then step two."}
{"battle_id": "2", "category_slug": "chat-writing", "model_a": "claude-beta", "model_b": "gpt-alpha", "created_at": "2026-08-22T11:00:00Z", "normalization_mode": "raw", "response_a": "Short answer.", "response_b": "A considerably longer answer with more detail."}

votes.jsonl:

{"kind": "votes", "schema_version": 1, "generated_at": "2026-08-23T04:00:00Z"}
{"vote_id": "10", "battle_id": "1", "voter_id": "v_a1", "choice": "win_a", "created_at": "2026-08-22T10:05:00Z", "weight": 1.0}
{"vote_id": "11", "battle_id": "1", "voter_id": "v_b2", "choice": "tie", "created_at": "2026-08-22T10:06:00Z", "weight": 0.5}
{"vote_id": "12", "battle_id": "2", "voter_id": "v_a1", "choice": "win_b", "created_at": "2026-08-22T11:09:00Z", "weight": 1.0}

Reading it: battle 1 was won by its slot-A model (gpt-alpha) at full weight, plus a half-weight tie (which counts as half a win for each side, METHODOLOGY.md §2). Battle 2 was won by its slot-B model (gpt-alpha again — note the slots swapped). Running

humaneval-ratings compute --battles battles.jsonl --votes votes.jsonl \
    --out leaderboard.json --seed 42

yields a chat-writing leaderboard where both models are provisional (3 votes < the default --min-votes 30) with rank: null, gpt-alpha at order 1, and style_control: false (3 votes < the default --style-min-votes 50), so the SC fields mirror the raw ones.

8. Version history

  • v1 (2026-08-23): initial spec — battles + votes JSONL with header lines; leaderboard schema v1.
  • v2 (2026-09-08, humaneval-ratings 1.1.0 / humaneval-exporter 1.1.0): battle records gain modality; new recording modality (section 3.1) with per-slot recording_* object references, assisted flags and telemetry_* for computer-use battles, no response_* texts. Text records are unchanged apart from modality: "text". Exporter rule 8: assisted battles are excluded. leaderboard.json schema stays 1 (only metadata.package_version and dump_schema_version change); the engine's numbers for v1 dumps are byte-identical to 1.0.0.