Overview
Every empirical claim in a vault links to the source it came from. A claim with no source is a ghost fact: it reads as knowledge, gets cited by later notes, and cannot be checked or corrected. Sourcing is what separates a vault you can act on from a pile of remembered assertions. The atom-level requirement is stated in atomic-notes; this page covers the source layer itself.
Link every empirical claim to a source note
Atoms carry a sources array of wikilinks into 10-Sources/. Claims carry a non-empty one, enforced by the auditor. “I read this somewhere” is not a source, and neither is a bare URL in the body.
Self-derived claims are legitimate and get marked as such rather than dressed up. Set confidence: low and flag the note as self-derived, so a later query can separate what you concluded from what you read. Both are useful; conflating them is not.
Create one source note per work, not per highlight
A source note represents a book, paper, podcast episode, talk, dataset, or article. Highlights and quotes live inside it as referenceable blocks; the claims mined from it live in 20-Atoms/ and link back.
---
id: 202608291431
title: "@Minto (1987) — The Pyramid Principle"
type: source
status: status/processed
source_type: book # book | paper | podcast | talk | dataset | article | video
author: ["Barbara Minto"]
year: 1987
atoms_extracted: 6
---Filename convention: @author-year-short-title.md. The @ prefix sorts sources together and makes a source link visually distinct from an atom link in running prose.
Track atoms_extracted to catch collected-but-unread sources
atoms_extracted is the honest signal of whether a source was digested or merely filed. A source note sitting at zero atoms 30 days after capture was collected, not read.
Query for those and treat the result as a reading queue rather than a failure. The same number, aggregated, diagnoses the intake pipeline: if 40 sources produced 12 atoms, the vault is a library, not a Zettelkasten.
Watch the inverse too. If one author or one book supplies most of the citations in a domain, the vault has a source monoculture and its conclusions inherit that author’s blind spots. Count citations per author and per source type during the monthly review.
Date the verification and let it expire
Empirical claims decay. A last_verified date plus a staleness threshold turns that decay into a query instead of a surprise.
confidence: high # high | medium | low
last_verified: 2026-08-29
decision_relevant: true # surfaces in the stale-verification gateSet the threshold to the domain’s actual half-life, with 180 days as a starting default. When a decision-relevant claim goes stale, the resolution is to re-verify it against the source or to downgrade confidence. Silently keeping high on an unchecked two-year-old claim is how a vault starts lying to the person who built it. Decision-time use of these claims is covered in decision-journals.
Gate publishable claims on corroboration and review
In domains where a claim goes out into the world (journalism, accountability research, regulated work), publishability is a gate with several conditions that must be satisfied together.
source_tier: on-record # primary-document | on-record | on-background | anonymous
corroboration_count: 2 # independent sources, minimum set per vault
legal_review_status: cleared # not-reviewed | in-review | cleared | held
publishable: "yes" # quote it, or YAML coerces yes to trueFlipping publishable while corroboration_count is 0 or review is pending should fail the audit as a critical, not a warning. The gate exists precisely for the moment someone is in a hurry. Which fields apply is a function of the domain framework in rigor-frameworks.
Make provenance survive the trip into an agent’s context
When an agent reads the vault, the source link is what lets it cite rather than assert. Keep the source note resolvable from the atom alone, so a retrieved atom carries its provenance without loading the whole vault. This is the same discipline that makes retrieval answers checkable in rag-citations.