Canonicalization System
Purpose: Define how Bibliotheca distinguishes canonical documents from pointers, historical snapshots, operational surfaces, and contextual embeds.
Governing principle: Knowledge governance, not cleanup. Historical divergence may contain meaningful evolution.
1. Canonical Routing Rules
Primary Rule
Each piece of knowledge has exactly one canonical location within Bibliotheca.
| Knowledge Type | Canonical Location | |---|---| | Philosophy (stable beliefs) | bibliotheca/philosophy/ | | Continuity reconstruction (active runtime) | /continuitygate/ | | Continuity history (deep archive) | bibliotheca/continuitygatehistory/ | | Conceptual topology (interpretive maps) | bibliotheca/atlas/ | | Project-specific research (historical snapshots) | bibliotheca/projects/<project>/ | | Active research artifacts | bibliotheca/research/ | | Observatory records | bibliotheca/observatory/ | | Experimental outputs | bibliotheca/experiments/ | | Field observations | bibliotheca/field-notes/ | | Findings | bibliotheca/findings/ | | Archive (historical residue) | bibliotheca/archive/ |
Secondary Rule
Non-canonical copies may exist only if they serve a distinct purpose:
- Pointer — lightweight doc that redirects to canonical source (e.g.,
projects/teteh-lab/docs/research/BIG-BRAIN-LIBRARY.md) - Historical snapshot — preserved copy of a document at a point in time (e.g.,
projects/api-lab/docs/imported-from-tarot-app/HANDOFF.md) - Operational surface — active document used for runtime reconstruction (e.g.,
continuitygate/CORE-PHILOSOPHY.md) - Contextual embed — reference within a different document's prose (e.g., a research doc quoting a philosophy principle)
2. Pointer vs Canonical Docs
Canonical Document
- Authoritative source of truth
- Named with
CANONICAL-prefix when disambiguation is needed - Example:
bibliotheca/philosophy/CANONICAL-CORE-PHILOSOPHY.md
Pointer Document
- Lightweight redirect (typically <100 lines)
- Contains a header block identifying:
- Layer/role
- Canonical source path
- Purpose
- Does NOT duplicate canonical content
- Example:
bibliotheca/projects/teteh-lab/docs/research/BIG-BRAIN-LIBRARY.md
Naming Convention
CANONICAL-<NAME>.md → canonical document
<NAME>-POINTER.md → pointer document (alternative to header-based pointer)
<NAME>.md → operational or historical document3. Historical Snapshots
What They Are
Preserved copies of documents at a specific point in time. They capture the state of knowledge before a reorganization, migration, or conceptual shift.
Where They Live
bibliotheca/projects/<project>/docs/— project-specific historical snapshotsbibliotheca/archive/— general historical residue
How to Identify
- Header block:
> Layer: Historical snapshot — contextual embedding within <context> - May reference a canonical source path
- Content is frozen at the time of snapshot
When to Preserve vs Delete
| Condition | Action | |---|---| | Exact duplicate of canonical doc | Delete (no historical value) | | Different content, meaningful divergence | Preserve as historical snapshot | | Different content, trivial variation | Delete or archive | | Migration archaeology (IMPORT-MANIFEST, AGENTS, HANDOFF, README) | Preserve |
4. Import Staging
What It Is
Documents imported from one project into another (e.g., tarot-app docs imported into api-lab during migration). These are not canonical — they are staging artifacts.
Where It Lives
apps/<project>/docs/imported-from-<source>/— operational import stagingbibliotheca/projects/<project>/docs/imported-from-<source>/— bibliotheca-side import staging
Preserved Files
The following files are preserved as migration archaeology:
IMPORT-MANIFEST.md— records what was imported and whyREADME.md— project-level readme at time of importAGENTS.md— agent notes at time of importHANDOFF.md— handoff state at time of import
Cleanup Rules
- Exact duplicate content files (e.g.,
architecture.md,emotional-note-layer.md) → delete from import staging; canonical lives inbibliotheca/projects/<source>/docs/ - Empty docs directories → remove
- Preserved archaeology files → keep
5. Operational Docs
What They Are
Documents that serve a runtime function — they are not knowledge artifacts but operational surfaces.
Examples
| Document | Role | |---|---| | /continuitygate/continuitygate.md | Continuity ritual and re-entry protocol | | /continuitygate/avatar.md | Operational behavior + governance layer | | /continuitygate/manifesto.md | Compressed institutional principles | | /continuitygate/bonfire.md | Latest stable reconstruction checkpoint | | /continuitygate/elderscroll.md | Onboarding lore / first orientation | | /continuitygate/fasttravel.md | High-signal traversal routes | | /continuitygate/nufikri.xyz.md | Root ecosystem map | | bibliotheca/continuitygatehistory/CORE-PHILOSOPHY.md | Historical compressed worldview (archival) | | apps/<project>/AGENTS.md | Project-specific agent notes | | apps/<project>/HANDOFF.md | Project-specific handoff state |
Relationship to Canonical Docs
Operational docs may overlap with canonical philosophy in content, but they serve a different purpose. The operational doc is compressed, actionable, and re-entry-focused. The canonical doc is stable, authoritative, and belief-focused.
Do not merge operational docs with canonical docs. They are different documents serving different purposes.
6. Naming Conventions
| Pattern | Meaning | Example | |---|---|---| | CANONICAL-<NAME>.md | Authoritative source of truth | CANONICAL-CORE-PHILOSOPHY.md | | <NAME>-POINTER.md | Lightweight redirect | CORE-PHILOSOPHY-POINTER.md | | <NAME>.md | Operational or historical | CORE-PHILOSOPHY.md (in continuitygate) | | imported-from-<source>/ | Import staging directory | imported-from-tarot-app/ | | archive/ | Historical residue | archive/philosophy-history/ |
7. Dedupe Safety Philosophy
Core Principle
Do not aggressively merge. Do not destroy historical layering. Do not rewrite large content sections.
Safety Rules
- Archive historical thought. Delete only confusion.
- If a duplicate contains meaningful divergence, preserve it.
- If a duplicate is exact and serves no historical purpose, delete it.
- If unsure, preserve.
- Historical divergence may contain meaningful evolution.
- A document that says the same thing in different words may reveal conceptual drift.
- A document that contradicts the canonical version may represent a discarded hypothesis worth preserving.
- A document that predates a reorganization may contain context lost in the canonical version.
- Operational surfaces are not duplicates.
continuitygate/CORE-PHILOSOPHY.mdis not a duplicate ofphilosophy/CANONICAL-CORE-PHILOSOPHY.md.- They serve different purposes (re-entry posture vs canonical belief).
- They may overlap in content. This is intentional.
- Pointer docs are not duplicates.
- A pointer doc that redirects to a canonical source is not a duplicate.
- It is a navigation aid that preserves expected paths.
- Historical snapshots are not duplicates.
- A snapshot of a document at a point in time is not a duplicate of the current canonical version.
- It is an archaeological artifact.
- Prefer lightweight headers over content rewrites.
- When clarifying a document's role, add a header block rather than rewriting the content.
- Example:
> Layer: Historical snapshot — contextual embedding within teteh-lab research
- Do not touch runtime code or app behavior.
- Canonicalization is a knowledge governance operation, not a refactor.
- Changes to
apps/should be limited to reference updates in documentation files.
8. Examples
Example: Philosophy Routing
bibliotheca/philosophy/
├── CANONICAL-CORE-PHILOSOPHY.md ← canonical (authoritative beliefs)
├── README.md ← routing explanation
├── teteh-character-memory.md ← canonical (character identity)
├── teteh-philosophy-index.md ← canonical (navigation index)
└── teteh-presentation-philosophy.md ← canonical (presentation philosophy)
/continuitygate/ ← active reconstruction runtime
├── continuitygate.md ← operational (re-entry ritual)
├── avatar.md ← operational (behavior + governance)
├── manifesto.md ← operational (compressed principles)
├── bonfire.md ← operational (latest reconstruction checkpoint)
├── elderscroll.md ← operational (onboarding lore / first orientation)
├── fasttravel.md ← operational (high-signal traversal routes)
└── nufikri.xyz.md ← operational (root ecosystem map)
bibliotheca/continuitygatehistory/ ← deep historical archive
└── CORE-PHILOSOPHY.md ← archival (historical worldview)
bibliotheca/atlas/
└── continuity-philosophy.md ← conceptual map (interpretive topology)
NOT a duplicate — different purposeExample: Continuity Framework Routing
bibliotheca/continuitygatehistory/nufikri.xyz/
├── BIG-BRAIN-LIBRARY.md ← canonical (worldview stabilization)
├── continuity-research-framework.md ← canonical (research methodology)
└── HANDOFF.md ← canonical (active implementation state)
bibliotheca/projects/teteh-lab/docs/research/
├── BIG-BRAIN-LIBRARY.md ← pointer (redirects to canonical)
└── continuity-research-framework.md ← pointer (redirects to canonical)Example: Import Staging
apps/api-lab/docs/imported-from-tarot-app/
├── AGENTS.md ← preserved (migration archaeology)
├── HANDOFF.md ← preserved (historical snapshot)
├── IMPORT-MANIFEST.md ← preserved (migration record)
└── README.md ← preserved (migration archaeology)9. Pass 2 Canonicalization Summary
| Action | Status | |---|---| | Rename philosophy/CORE-PHILOSOPHY.md → CANONICAL-CORE-PHILOSOPHY.md | ✅ Done (Pass 1) | | Update canonical path references in CANONICAL-CORE-PHILOSOPHY.md | ✅ Done (Pass 2) | | Expand continuitygate/README.md with full ContinuityGate explanation | ✅ Done (Pass 2) | | Add routing headers to pointer docs | ✅ Done (Pass 1) | | Create CANONICALIZATION.md | ✅ Done (Pass 2) | | Update AUDIT.md with Pass 2 status | ✅ Done (Pass 2) |
Written by Forge Goblin ChatGPT in collaboration with Forge Scribe Fikri.