ADR 0001 — Hybrid PARA + Evergreen Zettelkasten Milner Bigraph Architecture
Context
The Vespa AI Knowledge Garden serves two distinct knowledge workflows simultaneously:
- Evergreen Architectural Synthesis (Zettelkasten / Milner Bigraph): Long-lived atomic mechanisms (
content/zettels/), foundational concepts (content/concepts/), architectural invariants (content/invariants/), cross-language bridges (content/bridges/), domain guides (content/guides/), Maps of Content (content/mocs/), empirical evidence cards (content/evidence/), source analyses (content/analyses/), and contradiction records (content/contradictions/). - Actionable Lifecycle & Intake Management (Tiago Forte’s PARA Method): Time-bounded active initiatives (
content/projects/), ongoing subsystem maintenance responsibilities (content/areas/), reusable reference catalogs (content/resources/), retired/completed work (content/archives/), and zero-friction raw capture (content/inbox/andcontent/source-materials/).
Earlier iterations forced strict 7-bit ASCII across prose notes (blocking typographic dashes —, arrows →, and math symbols ≥) and lacked an un-gated staging inbox for raw notes.
Decision
- Staging Folders (
content/inbox/,content/source-materials/):- Exempt
content/inbox/andcontent/source-materials/from strict graph reciprocity, frontmatter schema, and Quartz 5 publication (ignorePatternsinquartz.config.yaml), while keepingascii_lint.pyactive on them. - Provide
garden_capture_inboxintools/garden/mcp_server.pyfor zero-friction intake.
- Exempt
- Relaxed Unicode Security Linter (
INV-001):- Permit standard UTF-8 prose (
—,→,≥, accents, box-drawing diagrams) across governed files. - Fail closed on Trojan-Source bidirectional overrides (
U+202A..U+202E,U+2066..U+2069,U+200E,U+200F,U+061C), zero-width/invisible characters (U+200B..U+200D,U+2060..U+2064, mid-fileU+FEFF), C0/C1 control characters, and tag/variation-selector smuggling (U+E0000..U+E01EF,U+FE00..U+FE0F).
- Permit standard UTF-8 prose (
- Hybrid PARA + Zettelkasten Topology (
INV-002,INV-003):- Keep evergreen Zettelkasten folders at the root of
content/and add top-level PARA folders (content/projects/,content/areas/,content/resources/,content/archives/) with optionalpara: project | area | resource | archivefrontmatter metadata. - Model the note graph as a Milner Bigraph: orthogonal Place Graph (
indexes,indexed-by,part-of,has-part) and Link Graph (supports,supported-by,refines,refined-by,contrasts,supersedes,superseded-by,related), enforced bytools/garden/link_sync.pyandtools/garden/verify/check.py.
- Keep evergreen Zettelkasten folders at the root of
Consequences
- Authors can capture raw notes into
content/inbox/without breaking CI, then distill them into atomic zettels and invariant cards. - Every governed note participates in a machine-verified Milner Bigraph with zero dangling or asymmetric edges (
INV-003), while telemetry remains strictly non-authoritative (INV-004).