Skip to content

v2.23

Choose a tag to compare

@github-actions github-actions released this 13 Sep 17:26
· 1357 commits to main since this release
e3be27f

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 #93
  • The commercial-readiness figures are spans the build writes (PM-31) by @Alex-Farley in #92
  • The lap-timing constraint is a position (PD-12) by @Alex-Farley in #94
  • The weekend timetable, as data (LV-02) by @Alex-Farley in #91
  • The weekend timetable, on the page (LV-02) by @Alex-Farley in #95
  • One word for the register's figure: published (CD-27) by @Alex-Farley in #97
  • Record holders are links (PD-26) by @Alex-Farley in #96
  • The assessments say published too (CD-28) by @Alex-Farley in #99
  • The backlog loop is a skill, not the default (PM-32) by @Alex-Farley in #98
  • The backlog re-ranks around the visual work; the design review is filed by @Alex-Farley in #100
  • Two decisions recorded: liveries from 2010 onwards; search rung three deferred by @Alex-Farley in #101
  • PD-02 rung two: seasons, season and races pages share their queries with the prerenderer; IA-17 by @Alex-Farley in #102
  • PD-02 rung three: the constructors, circuits and cars registers share their queries with the prerenderer by @Alex-Farley in #103
  • PD-02 rung four: the race page's four tables share their queries with the prerenderer by @Alex-Farley in #104
  • PD-02 rung five: the constructor and circuit pages' tables share their queries with the prerenderer by @Alex-Farley in #105
  • PD-02 lands: the car, eras, glossary, sources and quality pages share their queries with the prerenderer; whole-table smoke; PM-35 by @Alex-Farley in #106
  • A lint gate, quiet test output, convention tests, axe, and the licence gate under test by @Alex-Farley in #107
  • PM-36: the loop drives one forked context per item, at a chosen pace by @Alex-Farley in #111
  • PM-37: the queue is GitHub Issues, ranked on the Lap Ledger project; docs/BACKLOG.md retires to docs/LANDED.md by @Alex-Farley in #269
  • Bump playwright from 1.62.1 to 1.63.0 in /web in the build-and-test group by @dependabot[bot] in #108
  • Bump the runtime group in /web with 2 updates by @dependabot[bot] in #109
  • Bump the actions group with 8 updates by @dependabot[bot] in #110
  • PM-38: the driver treats a limit error from the fork as LIMIT by @Alex-Farley in #271

New Contributors

Full Changelog: v2.21...v2.23