How we check, and how we check ourselves
Evidence
We would rather show a number we can trace than a claim we cannot. This page is where the lab's checking is laid out so you can check it too.
What our tools may use
The catalog is the lab's list of outside sources. A tool may only use a source the catalog allows, and the catalog records what each publisher says about automated use. The numbers below are counted from the catalog by a script, not typed.
“Fetch” sources are files, pages and datasets a tool may download, after reading the site's robots.txt where it has one. A robots.txt file is where a site says which of its pages automated visitors may read. “API” sources (an API is a publisher's interface for programs) publish a usage policy and a rate we respect. “Manual” sources are ones a person downloads in a browser, for example when a publisher refuses automated clients. “Forbidden” sources said no, and we do not ask twice. One source needs a written request.
As the research pipeline expanded, the catalog grew from 67 to 113 sources (67 + 46 = 113). That expansion added medicinal chemistry, genetic variation, and citation-context APIs (chembl, open-targets, scite-mcp, scite-api, uniprot-rest, ncbi-variation, clinvar-bulk, isrctn, and nice-guidance). It also cataloged 37 national cystic fibrosis patient registries and associations across more than 25 countries.
Proof Receipt · Evidence Snapshot Lock & Two-Session Ledger (SHA-256 verified)
Lockfile: data/evidence.lock.json · Snapshot SHA-256: d88f17eb3328ca4491116cde4a5a28149719f36f9c49724c161d8b84448a534c
Input hashes: sources/catalog.yaml (63eab6bb789bfb80…), ledger/2026-10-04-first-session.md (4ee7fcc1c0021590…), and ledger/2026-10-07-second-session.md (185aaabb84687040…).
Verify on GitHub: data/evidence.lock.json · tools/make_evidence.py · cf-research/sources/catalog.yaml
One evidence record
When our history page says Trikafta was approved in the United States in 2019, this is the record behind that year. It names the source, the date it was read, the exact fields, and what the answer does not tell you.
{
"accessed": "2026-10-05T05:37:48Z",
"excerpt": null,
"fields": {
"active_ingredients": [
"ELEXACAFTOR, IVACAFTOR, TEZACAFTOR",
"IVACAFTOR"
],
"application_number": "NDA212273",
"brand": "TRIKAFTA",
"dosage_forms": [
"TABLET"
],
"latest_submission_action": "2026-03-27",
"original_approval": "2019-10-21",
"sponsor": "VERTEX PHARMS INC",
"submissions": 12
},
"limitations": "US FDA only. 'original_approval' is the earliest approved ORIG submission in Drugs@FDA; supplements may have changed the indication or age range since. Says nothing about EU or other regulators, or about any individual's eligibility.",
"provider": "openfda/0.1",
"publisher_date": "2019-10-21",
"question": "When did FDA first approve the application for brand 'TRIKAFTA', and under what number?",
"source_id": "openfda-drugsfda",
"status": "found",
"url": "https://api.fda.gov/drug/drugsfda.json?search=openfda.brand_name%3A%22TRIKAFTA%22&limit=1"
}
We checked all three approval years on the history page the same way against the first approved application in openFDA: Pulmozyme on 1993-12-30, Trikafta on 2019-10-21 and Alyftrek on 2024-12-20. Those are United States dates only. The Foundation's statement that Pulmozyme was the first drug developed specifically for CF is the Foundation's, and openFDA does not speak to it.
When one source is not enough: multi-source triangulation (AH-8). A single database record answers a bounded question, such as when a regulator approved an application. For pharmacology, adverse events, or contested trial claims, one database read in isolation can mislead. Our eighth anti-hallucination guardrail (AH-8) pairs primary literature with independent bioactivity, pharmacovigilance, and citation databases:
Assay context in ChEMBL (CHEMBL2010601)
In ChEMBL (DOI: 10.1021/jm400731v), ivacaftor shows an EC50 of 22.0 nM (95% CI 10–46 nM) in primary human bronchial epithelial (HBE) Ussing chambers. In recombinant NIH-3T3 optical membrane-potential assays, its EC50 is 3.0 nM. Quoting 3.0 nM without naming the cell line overstates potency in primary airway tissue by 7.3-fold (22.0 / 3.0 = 7.33).
Confounding by indication in Open Targets
FDA post-marketing (FAERS) signals in Open Targets list infective pulmonary exacerbation (LLR 4265.28, n = 3,489) and Pseudomonas test positive (LLR 819.3, n = 481) under ivacaftor. Cross-checking against controlled clinical trials confirms these reflect the baseline disease of the treated population, not drug-induced toxicity.
Citation polarity in Scite
Counting how often a paper is cited hides whether later experiments confirmed or challenged it. For the Phase 3 elexacaftor/tezacaftor/ivacaftor trial (DOI: 10.1056/NEJMoa1908639), Scite records 109 supporting, 5 contrasting, and 1,134 mentioning citation statements across 1,089 citing publications.
Checks on our own writing
An AI model that writes a note can invent a number, change a digit or add a reason the source never gave, and the result reads well. So the lab checks its own notes with scripts that fail when they find a problem:
Short quotations
A public note does not quote a source's sentences. A script flags any quoted span of more than eight words, and we paraphrase and cite instead.
Copying
A second script measures the longest run of words a note shares with the report it was written from, and fails above a limit. A stricter limit applies to a patient registry whose report asks for permission before it is reproduced.
Numbers
A third script flags any number the evidence does not contain. A number that comes from arithmetic must be shown with the sum behind it, such as 127 + 437, so a person can check it.
A second reader
A different model reads each claim next to its evidence. What it flags is a lead, confirmed on the source page, never a vote.
Saying what was not covered
A check that passed covers only what it ran on. We name the sources not read and the checks not run.
Eight machine-enforced guardrails (AH-1 to AH-8) and the 212-entry citation ledger. Across the research and website repositories, two deterministic checkers (check_claims.py and check_anti_hallucination.py) enforce eight rules before any pull request can merge:
AH-1 & AH-2 · Catalog-gated sources and short quotes
Every claim record must point to an approved
source_idinsources/catalog.yaml, carry a verbatim supporting excerpt, and respect the eight-word public quotation ceiling.AH-3 & AH-4 · Explicit arithmetic and scope records
Every derived percentage, ratio, or difference must show its exact formula in the claim record. Universal or absence words require a named scope record stating what was searched.
AH-5 & AH-6 · Blind cross-lineage review and the 212-citation ledger
A model from a second maker reviews claims blindly against source excerpts. Every cited DOI, PMID, NCT trial ID, and PDB structure on the site is verified offline against
data/cite-check-ledger.jsonl(212 verified records checked for retraction status).AH-7 & AH-8 · Answer tiers (T0–T3), SHA-256 receipts, and multi-source checks
Public pages declare their Answer Tier, pin dataset hashes in
data/evidence.lock.json, and triangulate pharmacology and safety claims across independent sources.
What we do not know yet. No registry scientist has read our guides to patient-registry reports, and a review is on our task board. Until then they are reading aids, and we compare no figure from one registry with another.
What we caught, and how
138 mistakes recorded as of October 24, 2026. This is a running total across all of the lab's work, not an error rate per run. Three entries follow, exactly as recorded.
E71 · C inference beyond the evidence
What happened.
The genetics skill said adding unclassified variants to the benign-leaning ones would "roughly quintuple" the count; 127 to 564 is 4.4 times. It also said a 1,047 and 167 split agreed between a page and a workbook when the split is only on the page, and gave the CFF genotype base as the whole Registry when the footnote says genotyped individuals
How it was found. a blind reader of the final text (Fable). Cost: 3 edits.
What changed.
recompute every ratio and every "agrees" claim from the printed numbers in a script before writing it; the final wording needs its own blind review, not only the extracted facts
E77 · C unchecked claim
What happened.
I told a council that the cloned skills repo had no plugin manifest and labelled it verified; my listing hid dot-folders and the repo has one (a marketplace of bundles)
How it was found. a council member (Fable) doubting the fact, then `ls -a`. Cost: 1 correction.
What changed.
list hidden files before saying a folder lacks something; a fact marked verified names the command that showed it
E78 · B unchecked state
What happened.
The downloader of registry PDFs had always used the library's default user agent with no run-time robots check, against the lab's own network rules
How it was found. me, reading the code while building the robots fix. Cost: 1 rewrite with 23 tests.
What changed.
a tool that fetches follows the one maintained network rule set or refuses; audit the older tools when a rule is tightened
Every caught mistake that exposes a repeatable gap becomes a deterministic check. Across the workspace, check-all.ps1 now runs 134 offline verification suites, including 44 AST and security linters in cf-lab/tasks/. Once a class of error is caught, code blocks it on future runs.
Research notes in the open
The lab's working notes are public, in the research repository. Each note has a status line that says what it is, and each records what was read and checked on its date. None is a finding that stays true by itself. These ten are about how the lab uses AI models, checks its own work, and reads published clinical trial and literature records. Eight more below cover our multi-source verification and biophysical modeling dossiers (10 + 8 = 18 notes).
Evaluation: the local worker on this week's delegations, and what changed in the loop
An evaluation of local delegation. Read it on GitHub (opens another site).
Security review of the initial workspace: misses found, fixes made, and what is left
A security review note. Read it on GitHub (opens another site).
Compliance review: public repos, third-party reports, and agents
A compliance review note. Read it on GitHub (opens another site).
Review record: the CFTR model package (tools/cftr-model)
A package review record. Read it on GitHub (opens another site).
Using Anthropic's public skills: the council's decision
A council proposal note. Read it on GitHub (opens another site).
Antibiotic stewardship and resistance in cystic fibrosis (board T-0118)
A reading note with a machine-checked claims record. Read it on GitHub (opens another site).
Anthropic's public skills: the trial (board T-0075)
A proposal with its figures and its limits. Read it on GitHub (opens another site).
Error ledger: second long working session
A ledger of 40 entries. Read it on GitHub (opens another site).
Trial endpoint atlas: a first public artifact from the ClinicalTrials.gov v2 API (board T-0130)
A design record for the 1,072-study snapshot. Read it on GitHub (opens another site).
Trial endpoint atlas: withholding failing endpoint classes before public promotion
A verification and withholding record (23 shown classes, 10 withheld). Read it on GitHub (opens another site).
CFF Patient Registry percentage verification and genotype denominator audit (board T-0146)
An evidence verification record for national registry percentages. Read it on GitHub (opens another site).
Multi-registry modulator eligibility and the persistent 6–12% unserved denominator
A five-registry landscape note with a machine-checked claims record. Read it on GitHub (opens another site).
Clinical trial endpoint evolution across 940 screened CF interventional studies
A PRISMA 2020 screening and phase-transition dossier. Read it on GitHub (opens another site).
Tri-modal rescue kinetics for Class I nonsense mutations (G542X and W1282X)
A biophysical modeling note with primary-source parameterization. Read it on GitHub (opens another site).
Non-destructive airway basal stem cell delivery and receptor transcytosis kinetics
A cross-domain delivery hypothesis note. Read it on GitHub (opens another site).
Lung-targeted SORT lipid nanoparticle aerosol nebulization and mucus diffusion matrix
A preclinical formulation and shear-stability note. Read it on GitHub (opens another site).
Chief Researcher mission grounding dossier: Wave 19 curative synthesis
A grounding audit across six biological threads. Read it on GitHub (opens another site).
Multi-source modulator and delivery verification: ChEMBL, Open Targets, and Scite
A multi-source triangulation dossier (guardrail AH-8). Read it on GitHub (opens another site).
Mexican Spanish views (en español mexicano): Inicio, La historia de la fibrosis quística and La proteína CFTR en 3D.
Found an error or unverified claim?
We hold every number, citation, and clinical record to deterministic public standards. If you spot a factual error, retracted citation, or calculation defect, please report a correction so we can log it into our public error ledger.
