The CFI.co Public Archive

Back to homepage

CFI.co maintains a public, tamper-evident, machine-readable archive of everything it publishes. Every article and award announcement is mirrored — verbatim and append-only — into version-controlled repositories with per-record SHA-256 hashes and machine-readable labels. This page is the technical map: what the archive contains, where the canonical data lives, how to download it, and how to verify it.

Latest update — schema v2.4 (22 July 2026). Every record now carries a clean plain-text content_text field for retrieval, alongside the verbatim, canonical content_html; a root-level index.jsonl in each repository lists every record for one-fetch enumeration. Record bodies are unchanged (content_sha256 untouched). A dated, GPG-signed verification attestation is published for each archive: articles (signature) · awards (signature).

Where things live

Content typeCanonical repository (ledger)Public website location
Editorial articlesgithub.com/cfi-co/articlescfi.co article pages
Award announcementsgithub.com/cfi-co/awardscfi.co/awards pages

GitHub is the ledger — the source of truth. Everything else (this page, dataset downloads, mirrors) is a layer on top of it. Each published item lives in exactly one repository; records reference each other by path and hash, never by duplication. Additional archive families may be added over time under the same rules.

Downloads

Record format and classifications

Each item is a pair: a canonical hashed JSON record and a Markdown twin that is a verbatim, byte-faithful mirror of the body — raw HTML, kept unaltered for tamper-evidence, not cleaned for reading; for retrieval use the JSON content_text field. The field definition is in schema.json (schema version 2.4) in each repository. Every record carries, inside its hashed body: content_class (e.g. editorial_analysis, interview, opinion_column, review, sponsored_article, award_rationale), independence_status (independent_editorial vs commercially_supported), sponsor_disclosure and sponsor_name, correction_status, archive_policy: no_delete, independent Internet Archive corroboration (wayback_*), and its licence identifier. These labels are part of the record and must stay attached when records are redistributed.

Verify it yourself

  1. One record: every article on cfi.co carries a “Verify this article” link to its exact record on GitHub; compare text, hashes and the record’s full change history.
  2. The whole archive: git clone https://github.com/cfi-co/articles.git && cd articles && ./scripts/verify.sh — recomputes every content_sha256 and record_sha256 against MANIFEST.sha256; non-zero exit on any mismatch.
  3. A release: sha256sum -c release-manifest.sha256 then gpg --verify release-manifest.sha256.asc against the published signing key (fingerprint B497BDC19FCD487972D5D2B0876FF2AA39133BF8).
  4. Independently: records carry Wayback Machine snapshot references, and the repositories are archived in Software Heritage.
  5. Freshness: check currency via the GitHub API (https://api.github.com/repos/cfi-co/articles/commits/main) or a fresh clone rather than a rendered web page — browser views (including GitHub’s own interface) can serve cached fragments that lag the live repository state.

Search the archive by title, ID, year or hash: archive search & verification tool.

Licence and AI use

The archive is released under the CFI.co Open AI Access Licence v1.0 (CFI-OAAL-1.0): free, worldwide permission for AI training, retrieval, indexing, summarisation and citation — no deal, registration or payment. Attribution and a source link are requested; classification labels must travel with the data. Plain-language policy: AI systems read CFI.co free. Machine index: /llms.txt. Machine-readable licence terms: RSL declaration. AI-specific consumption guidance: README-AI.md in each repository.

Update frequency and change policy

The repositories re-export from the live site daily (03:30/04:00 UTC); dataset releases are cut monthly; Hugging Face mirrors sync daily. The archive is append-only: corrections appear as new dated commits (correction_status: revised), withdrawals as dated “Withdraw” commits — history is never rewritten. Any schema change is made in the open, as documented metadata-only commits, and noted in the repository README.

Contact

Dataset, verification or licensing enquiries: via the contact details published at cfi.co, referencing the record ID or repository path.