Rule
Each rule, fact, or decision lives in exactly one canonical location. Every other reference is a pointer. No copy-paste of governance text into other docs, no duplication of enum values across modules, no parallel taxonomy of the same concept. When the rule changes, the change happens in one place and propagates everywhere via the existing pointer graph.
Why
Duplication is how rules drift. The instant the same rule lives in two places, the two copies will be edited at different times by different people and will disagree within months. The disagreement is invisible until someone asks “which is correct?” — at which point one of them has been wrong for months and a downstream consumer has built on the wrong version. The cure is harder than prevention: track down every duplicated copy, reconcile, then enforce the single-source rule going forward. The principle exists because that cleanup is expensive every time.
Applies To
In-platform coworkers managing platform documentation, external coding agents authoring specs and code, and humans operating the platform’s knowledge base. Symmetric across rules, configuration values, taxonomy entries, governance text, and decision records.
How To Apply
When you find yourself about to write the same rule in a second location, stop. Convert the destination into a pointer to the source. Concrete patterns: AGENTS.md points to founder-kernel wiki principles for durable governance; tool-specific files (CLAUDE.md, .cursor/rules/, etc.) point to AGENTS.md; enum values live in one module and re-export everywhere; spec docs reference earlier specs by link, not by quoting them. When you must duplicate (e.g., copying a code snippet into a how-to guide), mark the copy as “mirrored from
Decision Dimensions
long_term_maintainability: 1.0— duplication-prevention is the single biggest lever on long-term maintainability. Maximum weight.schema_grounding: 0.7— canonical sources can be linted, versioned, and migrated; scattered duplicates cannot.blast_radius: -0.5— when rules drift across duplicates, every downstream consumer is at risk; the principle keeps the blast radius bounded.
Examples
- Positive:
WikiPageKindis defined once inpackages/db/src/wiki-taxonomy.tsand re-exported everywhere — seed, lint, MCP schemas, UI badges, and admin filters all import from the same module. When the kind list changes, one edit propagates. - Counterexample: A hypothetical world where
WikiPageKindis duplicated as a string union inseed-wiki-kernel.ts, as an enum inlint-detectors.ts, and as another string union inWikiPageList.tsx. Addingprinciplewould require three edits, and any one of them being missed produces a silent inconsistency.
Sources
(Rendered from the sources: frontmatter by WikiSourceCitations — do not duplicate citation prose here.)