Repository navigation
Releases: Alex-Farley/formula-1-data
Release list
v2.26
Built from the sources at this tag, and published only after
verify.py passed.
| File | What it is |
|---|---|
f1.db |
The SQLite database. Open it with any SQLite client. |
f1-geometry.db |
Circuit centrelines, © OpenStreetMap contributors under ODbL 1.0. A separate file so its share-alike does not reach the rest — see below. circuit_geometry in f1.db is deliberately empty. |
f1-facts.db |
The facts alone, under CC BY 4.0: f1.db less everything that stays share-alike — the rows and prose taken from share-alike sources, and this project's writing not granted CC BY 4.0 — with the race rows that cite a Wikipedia season article rebuilt from F1DB. Its meta table states its terms, and tools/facts_artefact.py names everything it leaves out and why. |
f1_database.json.gz |
Full JSON export of every table: 1.3 MB compressed, 29.3 MB unpacked. Not kept in git — it does not delta-compress, and regenerates in about a second with make export. |
f1_compat.json |
JSON in the original v1 key layout. |
f1-parquet.zip |
Every table as Parquet, one file each — including the four the JSON export omits for size: qualifying, practice, sprint_qualifying and pit_stops. Columnar and compressed: pandas, polars and DuckDB read it directly. |
schema.sql |
The schema, commented. |
SHA256SUMS |
Digests. The build is reproducible, so you can check these by rebuilding. |
Data is CC BY-SA 4.0, except the columns of this project's own
writing that LICENSE-DATA names, which are CC BY 4.0, and
f1-parquet.zip carries a README.txt stating both.
f1-facts.db is CC BY 4.0 whole: it holds nothing share-alike. Circuit
geometry is © OpenStreetMap
contributors under ODbL 1.0, and ships as its own file rather
than inside f1.db or the JSON export: two databases distributed
alongside each other are a Collective Database under ODbL, so the
share-alike follows f1-geometry.db alone. Take one, take both,
and the obligation follows the file it belongs to.
See ATTRIBUTION.md.
Nobody publishes Formula One race timing under a licence that
permits passing it on, so this database holds none: laps,
stints, race_timing and race_control_messages are empty on
purpose, and everything that is here may be passed on under the
licence shown beside it. That is about the licences on offer
rather than about what anyone may lawfully do — FOM and its
licensees redistribute timing every weekend — and about race
timing: the qualifying, sprint_qualifying and practice
tables hold lap times, each driver's best lap of a session,
which F1DB publishes under CC BY 4.0.
docs/TIMING-ARCHITECTURE.md is that decision in full.
Stable links. Every asset above is also reachable at a URL
that always points at the newest release, so a script does not
need updating each time:
https://github.com/Alex-Farley/formula-1-data/releases/latest/download/f1.db
https://github.com/Alex-Farley/formula-1-data/releases/latest/download/f1-parquet.zip
Swap latest for a tag (v2.19) to pin a version instead.
The Parquet bundle is also served from the site itself:
https://lapledger.org/f1-parquet.zip
That copy is rebuilt on every deploy from the database the site
is serving, so it is never older than the pages beside it. The
release asset above is pinned to this tag; use whichever suits —
the newest data, or a version you can cite.
What's Changed
- v2.25 follow-ups: the export's size is measured, and /changes lists v2.25 by @Alex-Farley in #718
- Add security-reviewer to the merge path (D-49) by @Alex-Farley in #722
- WK-08: records carry a family and a headline flag; /records is built from them by @Alex-Farley in #704
- LV-08: a sourced line for each Friday driver, and the reasons behind the declared SQ sheets by @Alex-Farley in #726
- VD-47: a harvested, verified circuit-to-article mapping (piece 1 of the circuit photographs) by @Alex-Farley in #730
- refresh: checked F1DB, nothing new by @lap-ledger-refresh[bot] in #734
- DA-13: aspiration, personnel.role and team_radio's channel become CHECKed vocabularies by @Alex-Farley in #732
- DA-14: v_race_classification, v_driver_season_points, and views.sql in the Parquet zip by @Alex-Farley in #735
- DA-15: races.dates becomes date_from / date_to, and the weekend is checked by @Alex-Farley in #737
- Bump react-router-dom from 7.18.3 to 7.18.4 in /web in the runtime group across 1 directory by @dependabot[bot] in #671
- DA-16: empty columns are declared, and a gap's race count is measured by @Alex-Farley in #739
- AF-79: release.yml passes the tag through env by @Alex-Farley in #745
- refresh: checked F1DB, nothing new by @lap-ledger-refresh[bot] in #748
- AF-77: the workflows run pinned actions and pinned pip packages by @Alex-Farley in #747
- AF-78: no job in refresh.yml that runs npm holds the App's token by @Alex-Farley in #750
- DA-42: stored entries, starts and points are compared with the race records by @Alex-Farley in #752
- CR-60: Baghetti was one of three debut winners, and Gurney one of three owner-winners by @Alex-Farley in #754
- PM-63: admit Long Beach as the circuit Q173889, not the city Q16739 by @Alex-Farley in #756
- refresh: checked F1DB, nothing new by @lap-ledger-refresh[bot] in #758
- CR-63: read v_standings_final once where it was read per row by @Alex-Farley in #763
- CR-62: a driver's second entry for another constructor is declared, or refused by @Alex-Farley in #764
- CR-61: a row a local loader changes cites the loader, and both exports refuse it by @Alex-Farley in #765
- VD-61: circuits carry their article, and an aerial photograph by a third route by @Alex-Farley in #769
- VD-62: the circuit photograph, beside the heading by @Alex-Farley in #771
- CR-55: LICENSE-DATA's Attribution section adopts ATTRIBUTION.md's attribution text by @Alex-Farley in #773
- PM-64: views.sql is also available under LICENSE (MIT), as schema.sql is by @Alex-Farley in #776
- AF-81: file.py rank reads the board once and places a run by @Alex-Farley in #777
- AF-84: the stall watchdog watches the model, not the tools by @Alex-Farley in #778
- CR-64+CD-34: tied standings close on the row id; constructor wins and poles give both figures by @Alex-Farley in #779
- Bump astral-sh/ruff-action from 3.6.1 to 4.1.0 in the actions group across 1 directory by @dependabot[bot] in #749
- Bump vite from 8.2.2 to 8.3.1 in /web in the build-and-test group across 1 directory by @dependabot[bot] in #670
- PD-52: record the PD-41 bare-facts ruling on the Wikipedia-cited race rows by @Alex-Farley in #781
- AF-85: hold an item on a person's decision instead of stopping the loop by @Alex-Farley in #783
- CR-69: hold a driver still racing to F1DB's published career total, not a typed one by @Alex-Farley in #789
- VD-66: what leads each page type - critique and twelve filed items by @Alex-Farley in #802
- harvest: refresh from F1DB v2026.16.0 2ba943cf by @lap-ledger-refresh[bot] in #806
- SD-35: a failing refresh and a late race each open one issue by @Alex-Farley in #805
- PD-63: print a season in a figure's table as written, not 1,950 by @Alex-Farley in #807
- PD-57: a race page leads with its result by @Alex-Farley in #808
- PD-64: a race page's photographs are of the race, and none are out of reach by @Alex-Farley in #810
- PD-58: season and constructor pages lead with their chart by @Alex-Farley in #813
- CR-70: a photograph's credit is a name, on every route by @Alex-Farley in #815
- SD-36: a refresh pull request CI refuses opens the refresh-failing issue by @Alex-Farley in #812
- AF-86: CLAUDE.md's stop bullet names the D-52 hold by @Alex-Farley in #816
- VD-67: a lead figure sets its plot before its method note by @Alex-Farley in #817
- PD-59: an active...
v2.25
Built from the sources at this tag, and published only after
verify.py passed.
| File | What it is |
|---|---|
f1.db |
The SQLite database. Open it with any SQLite client. |
f1-geometry.db |
Circuit centrelines, © OpenStreetMap contributors under ODbL 1.0. A separate file so its share-alike does not reach the rest — see below. circuit_geometry in f1.db is deliberately empty. |
f1_database.json.gz |
Full JSON export of every table. Not kept in git — it is 21 MB and regenerates in about a second with make export. |
f1_compat.json |
JSON in the original v1 key layout. |
f1-parquet.zip |
Every table as Parquet, one file each — including the four the JSON export omits for size: qualifying, practice, sprint_qualifying and pit_stops. Columnar and compressed: pandas, polars and DuckDB read it directly. |
schema.sql |
The schema, commented. |
SHA256SUMS |
Digests. The build is reproducible, so you can check these by rebuilding. |
Data is CC BY-SA 4.0, except five columns of this project's own
writing, which are CC BY 4.0 (LICENSE-DATA names them), and
f1-parquet.zip carries a README.txt stating both. Circuit
geometry is © OpenStreetMap
contributors under ODbL 1.0, and ships as its own file rather
than inside f1.db or the JSON export: two databases distributed
alongside each other are a Collective Database under ODbL, so the
share-alike follows f1-geometry.db alone. Take one, take both,
and the obligation follows the file it belongs to.
See ATTRIBUTION.md.
Nobody publishes Formula One race timing under a licence that
permits passing it on, so this database holds none: laps,
stints, race_timing and race_control_messages are empty on
purpose, and everything that is here may be passed on under the
licence shown beside it. That is about the licences on offer
rather than about what anyone may lawfully do — FOM and its
licensees redistribute timing every weekend — and about race
timing: the qualifying, sprint_qualifying and practice
tables hold lap times, each driver's best lap of a session,
which F1DB publishes under CC BY 4.0.
docs/TIMING-ARCHITECTURE.md is that decision in full.
Stable links. Every asset above is also reachable at a URL
that always points at the newest release, so a script does not
need updating each time:
https://github.com/Alex-Farley/formula-1-data/releases/latest/download/f1.db
https://github.com/Alex-Farley/formula-1-data/releases/latest/download/f1-parquet.zip
Swap latest for a tag (v2.19) to pin a version instead.
The Parquet bundle is also served from the site itself:
https://lapledger.org/f1-parquet.zip
That copy is rebuilt on every deploy from the database the site
is serving, so it is never older than the pages beside it. The
release asset above is pinned to this tag; use whichever suits —
the newest data, or a version you can cite.
What's Changed
- AF-40+AF-41: article name check by constructor form and designation; body image that names the car by @Alex-Farley in #370
- AF-45+AF-46: a mark leads with the colour a team is recognised by, in two colours by @Alex-Farley in #377
- AF-47: team colour follows the rule on the driver page and /races by @Alex-Farley in #383
- AF-44: scheduled races in calendar order by @Alex-Farley in #385
- AF-42: a Commons-category route for chassis with no article, at a new 'catalogued' rung by @Alex-Farley in #388
- AF-57: a chart series wears the mark's lead, not the season's primary by @Alex-Farley in #393
- AF-51, AF-52: a car and a circuit name a constructor in its colour by @Alex-Farley in #395
- AF-53: the constructor records wear the team's colour, keyed by id by @Alex-Farley in #396
- AF-54: the homepage's last race wears its winner's team colour by @Alex-Farley in #397
- PD-20+PD-19: the photograph on the page is the photograph a link shows by @Alex-Farley in #401
- SD-19: a page's lastmod is the date of the last race it describes by @Alex-Farley in #404
- IX-30+IX-34+AX-20: where the reader lands when a page arrives by @Alex-Farley in #405
- IX-33+IX-35: one filter bar, above the first thing it moves, over two questions by @Alex-Farley in #407
- SD-01+SD-04: the documents that explain the data, and a way to answer back by @Alex-Farley in #409
- SD-20: the refresh runs daily, and now it says so by @Alex-Farley in #411
- VD-28: the stat tile ranks, and a label no longer drops its own figure by @Alex-Farley in #413
- AF-55: a season with a colour keeps it, and one without is drawn hollow by @Alex-Farley in #415
- AF-50: /seasons marks the champion's car, and the constructors' champion where it is another team by @Alex-Farley in #417
- IX-18: delete the sticky table-header rule that has never stuck by @Alex-Farley in #418
- PD-15: the driver strip fits the career, not the champion by @Alex-Farley in #419
- VD-33+AX-13: the photographs reach the constructor, season and race pages by @Alex-Farley in #421
- PD-16: every driver page opens on a sentence by @Alex-Farley in #423
- CR-07: the season in progress is written down once by @Alex-Farley in #425
- IA-18, AF-60: /now is the season being run, and a modal does not outlive its page by @Alex-Farley in #427
- IA-19, VD-30: one season, one label, on all four registers by @Alex-Farley in #430
- PD-28: the season page answers the September question by @Alex-Farley in #433
- AX-17: every table says what it holds, in both halves by @Alex-Farley in #435
- CD-04: the static half keeps the rules for reading its own numbers by @Alex-Farley in #438
- CD-03: the largest page type opens on a sentence by @Alex-Farley in #440
- VD-01: the static half is drawn in the app's own shapes by @Alex-Farley in #445
- AF-65: a discovered item is filed under Someday, not Next by @Alex-Farley in #444
- PM-44+PM-43: the queue read asks for what it uses, and a fork checks the checkout it starts in by @Alex-Farley in #454
- CR-34: every formula1.com citation names the page that holds the fact by @Alex-Farley in #455
- CR-35+CD-30: constructors.active names the declared season, and the static page derives what the app derives by @Alex-Farley in #461
- AF-43: a harvested power note that names no number is not a power figure by @Alex-Farley in #464
- AF-64: the eleven Indianapolis 500s name their car on every surface by @Alex-Farley in #466
- AF-63: a race note is held to the figure rule its page derives by @Alex-Farley in #469
- AF-61: a keypress that races a navigation is not a signal by @Alex-Farley in #473
- PM-41: a verdict that is not the first line is refused, not interpreted by @Alex-Farley in #474
- AX-06: the button's foreground is a token, because white failed on the dark fill by @Alex-Farley in #475
- AX-10: minmax(0, 1fr) on the stacked .split, because 1fr floors at min-content by @Alex-Farley in #478
- CD-17+IX-28: an emptied register says which filters did it, and offers the way back by @Alex-Farley in #479
- Critiques 2026-09-21: nine disciplines against main at dda5afb by @Alex-Farley in #511
- VD-29: a column every row agrees on is said once, above the table by @Alex-Farley in #514
- UR-05: one /about page — who publishes this, and how to tell it it is wrong by @Alex-Farley in #517
- IA-03 + IA-22: one wayfinding vocabulary, emitted by both renderers by @Alex-Farley in #518
- PD-17: what F1DB publishes about a driver, and the id it says it under by @Alex-Farley in #523
- IA-08: filters, sort and expansion in the address bar by @Alex-Farley in #525
- IX-26: every table can be taken away, as TSV or CSV by @Alex-Farley in https://github.com/Alex-Farley/formula-1-dat...
v2.24
Built from the sources at this tag, and published only after
verify.py passed.
| File | What it is |
|---|---|
f1.db |
The SQLite database. Open it with any SQLite client. |
f1-geometry.db |
Circuit centrelines, © OpenStreetMap contributors under ODbL 1.0. A separate file so its share-alike does not reach the rest — see below. circuit_geometry in f1.db is deliberately empty. |
f1_database.json.gz |
Full JSON export of every table. Not kept in git — it is 21 MB and regenerates in about a second with make export. |
f1_compat.json |
JSON in the original v1 key layout. |
f1-parquet.zip |
Every table as Parquet, one file each — including the two the JSON export omits for size. Columnar and compressed: pandas, polars and DuckDB read it directly. |
schema.sql |
The schema, commented. |
SHA256SUMS |
Digests. The build is reproducible, so you can check these by rebuilding. |
Data is CC BY-SA 4.0. Circuit geometry is © OpenStreetMap
contributors under ODbL 1.0, and ships as its own file rather
than inside f1.db or the JSON export: two databases distributed
alongside each other are a Collective Database under ODbL, so the
share-alike follows f1-geometry.db alone. Take one, take both,
and the obligation follows the file it belongs to.
See ATTRIBUTION.md.
Stable links. Every asset above is also reachable at a URL
that always points at the newest release, so a script does not
need updating each time:
https://github.com/Alex-Farley/formula-1-data/releases/latest/download/f1.db
https://github.com/Alex-Farley/formula-1-data/releases/latest/download/f1-parquet.zip
Swap latest for a tag (v2.19) to pin a version instead.
The Parquet bundle is also served from the site itself:
https://lapledger.org/f1-parquet.zip
That copy is rebuilt on every deploy from the database the site
is serving, so it is never older than the pages beside it. The
release asset above is pinned to this tag; use whichever suits —
the newest data, or a version you can cite.
What's Changed
- An issue form for a queue item, its config, and a pull request template by @Alex-Farley in #272
- PM-39: the fork waits for its reviewers, and a person can watch it by @Alex-Farley in #275
- AF-03: draw every layout the championship has raced on, from F1DB by @Alex-Farley in #273
- VD-26: remove the accent bar from stat tiles by @Alex-Farley in #280
- VD-27: each racing colour is a light and a dark hex, not one for both by @Alex-Farley in #281
- VD-25: the corner-radius bands step evenly and carry a width as well as a colour by @Alex-Farley in #282
- AF-04: a livery palette, keyed by constructor and season, beside the national convention by @Alex-Farley in #287
- AX-07: the light chart green clears 3:1 on the panel by @Alex-Farley in #288
- AF-09: the last twelve livery gaps are sourced, and LIVERY_GAPS is empty by @Alex-Farley in #290
- AF-12: group backlog items that share a file into one PR by @Alex-Farley in #292
- Grouping: what rides with the head is what is linked to it by @Alex-Farley in #300
- AF-15: a team's colours are a scheme, not one hex by @Alex-Farley in #299
- AF-16: a team's colour, drawn as itself by @Alex-Farley in #303
- AF-17, VD-34: a team's colour, given room to be recognised by @Alex-Farley in #307
- AF-24: the three documents that going public makes wrong by @Alex-Farley in #309
- AF-26: one CI run per pull request, and main still queues by @Alex-Farley in #312
- AF-25: a gh that cannot answer, said at the first call by @Alex-Farley in #316
- AF-29: the way in, for someone who has not done this before by @Alex-Farley in #318
- AF-31, AF-30: what a real first run of the setup guide found by @Alex-Farley in #321
- AF-21: remove the track atlas by @Alex-Farley in #322
- AF-22: an independent design eye on how a circuit is drawn by @Alex-Farley in #339
- Cut the loop's token cost: one normative home per rule, and an opt-in CI review by @Alex-Farley in #340
- Front-end review at medium effort, and AF-32 declined with the probe that killed it by @Alex-Farley in #342
- AF-23+VD-44+IX-31: the outline leads; the trace is the measurement beside it by @Alex-Farley in #347
- D-18's token figures are measured now, not estimated by @Alex-Farley in #351
- AF-36: an item's body says where the work lands by @Alex-Farley in #354
- The fork's effort is not set by its frontmatter; the baseline is recorded by @Alex-Farley in #357
- LV-05: the 2027 cost cap, before Indexation by @Alex-Farley in #359
- AF-35+AF-34: standings fold on the freshest row; the Monaco reclassification is filed on the race by @Alex-Farley in #362
- The 2027 calendar, and the loader stops naming a year by @Alex-Farley in #361
- v2.24, and a release reminder measured against this project's own releases by @Alex-Farley in #365
Full Changelog: v2.23...v2.24
v2.23
Built from the sources at this tag, and published only after
verify.py passed.
| File | What it is |
|---|---|
f1.db |
The SQLite database. Open it with any SQLite client. |
f1-geometry.db |
Circuit centrelines, © OpenStreetMap contributors under ODbL 1.0. A separate file so its share-alike does not reach the rest — see below. circuit_geometry in f1.db is deliberately empty. |
f1_database.json.gz |
Full JSON export of every table. Not kept in git — it is 21 MB and regenerates in about a second with make export. |
f1_compat.json |
JSON in the original v1 key layout. |
f1-parquet.zip |
Every table as Parquet, one file each — including the two the JSON export omits for size. Columnar and compressed: pandas, polars and DuckDB read it directly. |
schema.sql |
The schema, commented. |
SHA256SUMS |
Digests. The build is reproducible, so you can check these by rebuilding. |
Data is CC BY-SA 4.0. Circuit geometry is © OpenStreetMap
contributors under ODbL 1.0, and ships as its own file rather
than inside f1.db or the JSON export: two databases distributed
alongside each other are a Collective Database under ODbL, so the
share-alike follows f1-geometry.db alone. Take one, take both,
and the obligation follows the file it belongs to.
See ATTRIBUTION.md.
Stable links. Every asset above is also reachable at a URL
that always points at the newest release, so a script does not
need updating each time:
https://github.com/Alex-Farley/formula-1-data/releases/latest/download/f1.db
https://github.com/Alex-Farley/formula-1-data/releases/latest/download/f1-parquet.zip
Swap latest for a tag (v2.19) to pin a version instead.
The Parquet bundle is also served from the site itself:
https://lapledger.org/f1-parquet.zip
That copy is rebuilt on every deploy from the database the site
is serving, so it is never older than the pages beside it. The
release asset above is pinned to this tag; use whichever suits —
the newest data, or a version you can cite.
What's Changed
- Eight reviews, and the backlog re-ranked from them by @Alex-Farley in #35
- The false statements, and the hour of cheap fixes by @Alex-Farley in #36
- The cold first visit: a strip that can be seen, links that keep the download by @Alex-Farley in #37
- Working autonomously: the policy by @Alex-Farley in #38
- The final championship table gets a key and a view by @Alex-Farley in #39
- Refuse a season the calendar does not hold by @Alex-Farley in #40
- A failed build leaves the committed databases untouched by @Alex-Farley in #41
- A floor under every bulk table, and a read-only CLI by @Alex-Farley in #42
- race_entries.source names the source of the classification by @Alex-Farley in #43
- The refresh polls daily and tests the site before it commits by @Alex-Farley in #44
- The artefact describes itself truthfully by @Alex-Farley in #45
- The compat export's headline facts are derived by @Alex-Farley in #46
- The controlled vocabularies are constraints, and the one that drifted is fixed by @Alex-Farley in #47
- The pole and venue harvests are pinned to the calendar, not to a literal by @Alex-Farley in #48
- No document states a check count, and the Node requirement is declared by @Alex-Farley in #49
- The Parquet step installs nothing on a laptop, CI reads its result, and build-status.txt is a heartbeat by @Alex-Farley in #50
- constructors.last_entry means what its comment says by @Alex-Farley in #51
- The download paragraph says the file documents itself, in both renderers by @Alex-Farley in #52
- make ci does what ci.yml's Python job does by @Alex-Farley in #53
- Search ranks by prominence, folds accents, takes words in any order, and finds a car by its name by @Alex-Farley in #54
- Records: the caveat above the figures, the badge said once, phrases not right-aligned by @Alex-Farley in #55
- Atlas: the marker travels the racing direction and the scrubber says what is under it by @Alex-Farley in #56
- Names for what the page already showed: the confidence pill, the section count, the chip groups by @Alex-Farley in #57
- The SQL console can stop a statement that will not finish by @Alex-Farley in #58
- The cost cap is a schedule, read from the FIA issue for each year by @Alex-Farley in #59
- The visual critique's small fixes, in one pass by @Alex-Farley in #61
- The README states what the database holds, and the build checks that it does by @Alex-Farley in #60
- The circuit page draws its lap with the atlas's renderer by @Alex-Farley in #62
- On a phone, a wide table says it scrolls and the masthead shows every item; a photograph says whether it is coming by @Alex-Farley in #63
- A season still running opens with who leads, by how much, after how many rounds by @Alex-Farley in #64
- The two column-filling harvests have a floor by @Alex-Farley in #66
- The SQL console has a permalink, and an example does not destroy the reader's query by @Alex-Farley in #65
- The database gets a front door: /data takes the masthead slot Reference held by @Alex-Farley in #67
- The drivers register opens on a question answered by @Alex-Farley in #69
- The records are derived, not published by @Alex-Farley in #68
- Driver notes say what the driver did; how the row got here moves to provenance by @Alex-Farley in #70
- Every page says how to cite it by @Alex-Farley in #71
- Driver ledes stop spelling the figures the strip derives (CD-19) by @Alex-Farley in #74
- known_gaps carries a state, and the site counts only the open ones by @Alex-Farley in #72
- The season's grid is counted by @Alex-Farley in #73
- The weekend's limits for 2025, from the FIA Sporting Regulations by @Alex-Farley in #76
- Driver descriptions are counted from the race records, and the count is called Entries everywhere by @Alex-Farley in #75
- The new-team entry fee is a press figure, and the database says so by @Alex-Farley in #78
- The lede check allows an adjective before the noun (CD-21) by @Alex-Farley in #79
- The drivers register, the driver page and the records table share their queries with the prerenderer by @Alex-Farley in #77
- Where the register's seasons are not the race records', the driver page says which is which (CD-22) by @Alex-Farley in #81
- The two qualifying rows without a race entry are declared; the chassis warning is information (PM-20) by @Alex-Farley in #80
- The lede check is one tested pattern (CD-23) by @Alex-Farley in #85
- The upstream dependency is written down (PD-13) by @Alex-Farley in #82
- The fetch tool reads F1DB's licence before it writes a row (PM-27) by @Alex-Farley in #83
- The Active filter on /drivers keeps the grid (IX-17) by @Alex-Farley in #84
- Six code comments cite the gap they mean (PM-28) by @Alex-Farley in #87
- The build reads the season in progress from the entry lists (PM-29) by @Alex-Farley in #86
- Subset figures in a driver note are counted against the race records (CD-24) by @Alex-Farley in #88
- A gap id is written, not counted (PM-30) by @Alex-Farley in #90
- The reason two spans differ sits beside the fact (CD-25) by @Alex-Farley in #89
- The span comparison is symmetric, and either end can be declared (CD-26) by @Alex-Farley in https:/...
v2.21
Built from the sources at this tag, and published only after
verify.py passed.
| File | What it is |
|---|---|
f1.db |
The SQLite database. Open it with any SQLite client. |
f1-geometry.db |
Circuit centrelines, © OpenStreetMap contributors under ODbL 1.0. A separate file so its share-alike does not reach the rest — see below. circuit_geometry in f1.db is deliberately empty. |
f1_database.json.gz |
Full JSON export of every table. Not kept in git — it is 21 MB and regenerates in about a second with make export. |
f1_compat.json |
JSON in the original v1 key layout. |
f1-parquet.zip |
Every table as Parquet, one file each — including the two the JSON export omits for size. Columnar and compressed: pandas, polars and DuckDB read it directly. |
schema.sql |
The schema, commented. |
SHA256SUMS |
Digests. The build is reproducible, so you can check these by rebuilding. |
Data is CC BY-SA 4.0. Circuit geometry is © OpenStreetMap
contributors under ODbL 1.0, and ships as its own file rather
than inside f1.db or the JSON export: two databases distributed
alongside each other are a Collective Database under ODbL, so the
share-alike follows f1-geometry.db alone. Take one, take both,
and the obligation follows the file it belongs to.
See ATTRIBUTION.md.
Stable links. Every asset above is also reachable at a URL
that always points at the newest release, so a script does not
need updating each time:
https://github.com/Alex-Farley/formula-1-data/releases/latest/download/f1.db
https://github.com/Alex-Farley/formula-1-data/releases/latest/download/f1-parquet.zip
Swap latest for a tag (v2.19) to pin a version instead.
The Parquet bundle is also served from the site itself:
https://lapledger.org/f1-parquet.zip
That copy is rebuilt on every deploy from the database the site
is serving, so it is never older than the pages beside it. The
release asset above is pinned to this tag; use whichever suits —
the newest data, or a version you can cite.
What's Changed
- Finish the Lap Ledger rename, and name every table by @Alex-Farley in #24
- Serve the Parquet bundle from lapledger.org; let CI be the deploy gate by @Alex-Farley in #25
- Critics, the first critique, its first two fixes, and one backlog by @Alex-Farley in #26
- review: drop the manual trigger, which could only ever fail by @Alex-Farley in #27
- review: say which of the four outcomes a green check means by @Alex-Farley in #28
- critiques: content design and information architecture, and their 33 findings by @Alex-Farley in #29
- Backlog: rank Now by defect class, split PM-20, merge the CD and IA findings by @Alex-Farley in #30
- CD-01, IA-15 and IA-04: the three that were one sitting by @Alex-Farley in #31
- gitignore: Claude Code's local settings file by @Alex-Farley in #32
- Split pole position from grid 1, and restore two shared fastest laps by @Alex-Farley in #33
- v2.21: pole is its own column by @Alex-Farley in #34
Full Changelog: v2.20...v2.21
v2.20
Built from the sources at this tag, and published only after
verify.py passed.
| File | What it is |
|---|---|
f1.db |
The SQLite database. Open it with any SQLite client. |
f1-geometry.db |
Circuit centrelines, © OpenStreetMap contributors under ODbL 1.0. A separate file so its share-alike does not reach the rest — see below. circuit_geometry in f1.db is deliberately empty. |
f1_database.json.gz |
Full JSON export of every table. Not kept in git — it is 21 MB and regenerates in about a second with make export. |
f1_compat.json |
JSON in the original v1 key layout. |
f1-parquet.zip |
Every table as Parquet, one file each — including the two the JSON export omits for size. Columnar and compressed: pandas, polars and DuckDB read it directly. |
schema.sql |
The schema, commented. |
SHA256SUMS |
Digests. The build is reproducible, so you can check these by rebuilding. |
Data is CC BY-SA 4.0. Circuit geometry is © OpenStreetMap
contributors under ODbL 1.0, and ships as its own file rather
than inside f1.db or the JSON export: two databases distributed
alongside each other are a Collective Database under ODbL, so the
share-alike follows f1-geometry.db alone. Take one, take both,
and the obligation follows the file it belongs to.
See ATTRIBUTION.md.
Stable links. Every asset above is also reachable at a URL
that always points at the newest release, so a script does not
need updating each time:
https://github.com/Alex-Farley/formula-1-data/releases/latest/download/f1.db
https://github.com/Alex-Farley/formula-1-data/releases/latest/download/f1-parquet.zip
Swap latest for a tag (v2.19) to pin a version instead.
What's Changed
- deploy: name lapledger.org as the canonical host, in the repository by @Alex-Farley in #20
- Modify favicon SVG and icon attributes by @Alex-Farley in #21
- Publish a Parquet export, and give every page an h1 by @Alex-Farley in #22
- v2.20: release the Parquet export by @Alex-Farley in #23
Full Changelog: v2.19...v2.20
v2.19
Built from the sources at this tag, and published only after
verify.py passed.
| File | What it is |
|---|---|
f1.db |
The SQLite database. Open it with any SQLite client. |
f1-geometry.db |
Circuit centrelines, © OpenStreetMap contributors under ODbL 1.0. A separate file so its share-alike does not reach the rest — see below. circuit_geometry in f1.db is deliberately empty. |
f1_database.json.gz |
Full JSON export of every table. Not kept in git — it is 21 MB and regenerates in about a second with make export. |
f1_compat.json |
JSON in the original v1 key layout. |
schema.sql |
The schema, commented. |
SHA256SUMS |
Digests. The build is reproducible, so you can check these by rebuilding. |
Data is CC BY-SA 4.0. Circuit geometry is © OpenStreetMap
contributors under ODbL 1.0, and ships as its own file rather
than inside f1.db or the JSON export: two databases distributed
alongside each other are a Collective Database under ODbL, so the
share-alike follows f1-geometry.db alone. Take one, take both,
and the obligation follows the file it belongs to.
See ATTRIBUTION.md.
What's Changed
- v2.19: split the race date into a display value and an ISO day by @Alex-Farley in #19
Full Changelog: v2.18...v2.19
v2.18
Built from the sources at this tag, and published only after
verify.py passed.
| File | What it is |
|---|---|
f1.db |
The SQLite database. Open it with any SQLite client. |
f1-geometry.db |
Circuit centrelines, © OpenStreetMap contributors under ODbL 1.0. A separate file so its share-alike does not reach the rest — see below. circuit_geometry in f1.db is deliberately empty. |
f1_database.json.gz |
Full JSON export of every table. Not kept in git — it is 21 MB and regenerates in about a second with make export. |
f1_compat.json |
JSON in the original v1 key layout. |
schema.sql |
The schema, commented. |
SHA256SUMS |
Digests. The build is reproducible, so you can check these by rebuilding. |
Data is CC BY-SA 4.0. Circuit geometry is © OpenStreetMap
contributors under ODbL 1.0, and ships as its own file rather
than inside f1.db or the JSON export: two databases distributed
alongside each other are a Collective Database under ODbL, so the
share-alike follows f1-geometry.db alone. Take one, take both,
and the obligation follows the file it belongs to.
See ATTRIBUTION.md.
What's Changed
- v2.18: give every race a date, and close the last fastest-lap gap by @Alex-Farley in #18
Full Changelog: v2.17...v2.18
v2.17
Built from the sources at this tag, and published only after
verify.py passed.
| File | What it is |
|---|---|
f1.db |
The SQLite database. Open it with any SQLite client. |
f1-geometry.db |
Circuit centrelines, © OpenStreetMap contributors under ODbL 1.0. A separate file so its share-alike does not reach the rest — see below. circuit_geometry in f1.db is deliberately empty. |
f1_database.json.gz |
Full JSON export of every table. Not kept in git — it is 21 MB and regenerates in about a second with make export. |
f1_compat.json |
JSON in the original v1 key layout. |
schema.sql |
The schema, commented. |
SHA256SUMS |
Digests. The build is reproducible, so you can check these by rebuilding. |
Data is CC BY-SA 4.0. Circuit geometry is © OpenStreetMap
contributors under ODbL 1.0, and ships as its own file rather
than inside f1.db or the JSON export: two databases distributed
alongside each other are a Collective Database under ODbL, so the
share-alike follows f1-geometry.db alone. Take one, take both,
and the obligation follows the file it belongs to.
See ATTRIBUTION.md.
What's Changed
- Add F1 Verified Facts Database v2.6 by @Alex-Farley in #1
- Add F1 Verified Facts Database v2.6 by @Alex-Farley in #2
- Add a React front end that queries f1.db in the browser by @Alex-Farley in #3
- Add a Trends page with four charts, and a browser smoke test in CI by @Alex-Farley in #4
- Fix six chart and console bugs found in review by @Alex-Farley in #5
- Merge database v2.7: full-classification register and loader by @Alex-Farley in #6
- ergast_load: fail the command on an incomplete load by @Alex-Farley in #7
- Add F1DB integration and lap timing data support by @Alex-Farley in #8
- v2.12: the missing constructors, and five teams that were really two by @Alex-Farley in #9
- v2.13–v2.15: the driver register, illustration and geometry, and the full classification by @Alex-Farley in #10
- web v3: rebuild the front end for the database that now exists by @Alex-Farley in #11
- Claude/front end rebuild fv941h by @Alex-Farley in #12
- Redesign navigation and improve page copy throughout by @Alex-Farley in #13
- Version the database in its URL, so a deploy stops bricking returning readers by @Alex-Farley in #14
- Consolidate three branches onto main, and fix ten defects in the result by @Alex-Farley in #16
- Enforce commercial readiness: add licence classification system by @Alex-Farley in #15
- v2.17: fix three silent release defects, and write down the conventions by @Alex-Farley in #17
New Contributors
- @Alex-Farley made their first contribution in #1
Full Changelog: https://github.com/Alex-Farley/formula-1-data/commits/v2.17