Version Control
Compare c

The dataset

The complete record is published as files. For a spreadsheet, use the two CSV files; for every source, the gzipped JSON, one file per year, indexed by the manifest. The same files drive this site. There is no separate API, and the paths below are stable.

Files

FileContents
releases.csvOne row per entry: dates, lab, availability, the four disclosure items, parameters and their basis, predecessor, and the primary source. In the four disclosure columns, absence is written as a word (NOT_DISCLOSED or NOT_RESEARCHED), never left blank.
scores.csvOne row per benchmark score, with its source class, source URL, retrieval date and test settings.
manifest.jsonIndex of entry files with per-file entry counts, ids, and SHA-256 checksums.
derived/deltas.json.gzPredecessor comparisons per entry: a change, or the reason no change is shown. The site renders this file verbatim.
derived/views.json.gzDerived chart datasets: release cadence, benchmark trajectory series, disclosure matrix, and registry measures. The site's charts draw from this file. Comparisons between models are calculated before publishing. The site also works out counts, shares and medians for whatever view you filter to, using the rules on the methodology page.
derived/site_meta.jsonRecord counts, date range, and the date of the last successful update.

Fields

Each entry in the JSON files carries these fields; releases.csv carries those not marked JSON only.

FieldMeaning
idStable identifier: organization key, two hyphens, model slug. It also opens the entry in the explorer: explorer.html?id=<id>.
model_name, orgThe model as the lab names it, and the organization key. A correction_note explains any name or date we corrected from the source.
dateThe release date: Epoch AI's date for entries built from its data (usually the announcement or paper date), and the lab's announcement date for entries found by the nightly check or recorded by hand. The methodology explains the exceptions.
entry_typerelease, or revision: an update to a model already on record, shipped under the same name.
availability_classopen_weights, public_api, or public_service (a product people can sign up for).
originHow the entry reached the record: backfill-epoch (from Epoch AI's dataset), nightly-pipeline (found by nightly detection, approved by hand), or manual (recorded by hand).
parametersTotal parameter count. NOT_DISCLOSED here means no count is on record: for entries built from Epoch AI's data, Epoch has none and we have not checked the labs' pages; for entries added since, the lab's own pages state none. parameters_basis says whether a count is the lab's own or reported by others.
parameters_basislab (the lab's own count), third_party (a count Epoch AI records from a report by others: a rumor, a leak, an estimate, a newsletter, another party's paper or a post on X), or NOT_DISCLOSED when there is no count. Third-party counts are left out of every parameter finding.
parameters_noteJSON only, on third_party counts: Epoch AI's note on where the count came from.
summaryA short account of the release, written to what the sources support, with lab claims attributed to the lab.
variantsJSON only: other sizes or versions announced with the release and recorded under it.
license_noteJSON only: the license or access terms as Epoch AI records them, or null.
epoch_row_nameJSON only: Epoch AI's row name, where the entry's name differs from it.
predecessorThe id of the model this one follows, where the lab or the model family makes it clear. Comparisons against the predecessor are in derived/deltas.json.gz.
system_card, model_card, usage_policy, paperA link to the document, NOT_DISCLOSED (we checked the lab's pages and found none), or NOT_RESEARCHED (not yet checked). Neither means zero.
disclosure_archivedJSON only: for each disclosure link, a dated archive.org copy of the same page.
benchmarksScores on GPQA Diamond and SWE-bench Verified only. Each carries its source class (LAB_REPORTED or INDEPENDENT), source URL, benchmark version, retrieval date and test settings (configuration), and an archived_url where one exists. scores.csv has one row per score.
unpinned_claimsJSON only: benchmark figures the lab stated without a benchmark version, kept as written and never published as scores.
sourcesEvery page the entry was built from, each with its kind, the date we read it, and an archived_url (a dated archive.org copy) where one exists.
retractedtrue when the entry should not have been on the record; the note says why. A corrected entry stays false and carries a correction_note instead.
correction_noteThe old value and the evidence, where we corrected the source.
organization, primary_source_urlCSV only: the lab's display name, and the first source that is not Epoch AI's dataset.

License

The published dataset (the files above) is licensed under the Creative Commons Attribution 4.0 International License (CC-BY 4.0).

Required attribution for Epoch AI derived fields

Portions of the dataset are derived from two Epoch AI datasets, both used under CC-BY 4.0. If you redistribute or build on those fields, you must retain the following attributions:

Epoch AI, "Data on AI Models". Published online at epoch.ai. Retrieved from https://epoch.ai/data/ai-models [online resource].
Epoch AI, "Capabilities & benchmarking". Published online at epoch.ai. Retrieved from https://epoch.ai/benchmarks [online resource].

Release dates, lab names, parameter counts and availability come from Epoch AI's models dataset. Independent scores come from Epoch AI's benchmarking data.

Cite this dataset

The record changes as releases are added and corrected, so cite the date you retrieved it.

Walker Robinson. Version Control: a public record of AI model releases. Dataset, CC BY 4.0. https://versioncontrol.walker-robinson.com. Record updated (the date of the last update); accessed (today).
@misc{versioncontrol,
  author       = {Robinson, Walker},
  title        = {Version Control: a public record of AI model releases},
  howpublished = {\url{https://versioncontrol.walker-robinson.com}},
  note         = {Dataset, CC BY 4.0. Record updated (the date of the last update); accessed (today)},
  year         = {2026}
}

What the dataset does not contain

OpenRouter's catalog is not in the dataset, and the site does not show its prices or context lengths. Prices quoted in an entry's summary are the lab's own figures. Artificial Analysis data is not in the dataset either: we use it only for an internal check of which models we might be missing.

Cost of operation

The registry runs on static hosting and scheduled jobs at zero infrastructure cost, plus a small metered cost for the nightly drafting step, capped at $2 a month.