Every figure starts as a file from a named source. Each source has a recorded licence and an editor's review; a source appears publicly only when its licence allows public use of derived data. We do not scrape websites or rely on undocumented APIs. Raw provider files are kept unchanged for audit and are not republished.
Each import stores the file, fingerprints it (SHA-256), checks it (dates, scores, duplicates, impossible values) and matches clubs to canonical records. Clubs are matched only by a known identifier or an exact name within the right country; anything uncertain goes to an editor, never to a guess. Rows that fail checks are held back rather than published.
Running the same import twice changes nothing. When a source later corrects a result, the change is recorded as a revision and the match page says so.
League tables are calculated from match results using the competition's points rules (3 for a win, 1 for a draw in the loaded seasons) and ordered by points, goal difference and goals scored. Points deductions are not part of result data, so a season's table is published only after an editor has checked for deductions and recorded any with an official source.
Coverage is stated on every page. A missing statistic means the archive does not hold it, not that it was zero. Studies describe patterns in a stated period; they do not claim that an event caused an outcome unless the method supports it, and they distinguish documented facts, attributed third-party claims and editorial interpretation.
Kickoff times are published by sources in local time, stored in UTC, and shown in UK time (labelled GMT or BST). Dates of matches are calendar dates as published.