-
Notifications
You must be signed in to change notification settings - Fork 2
Typed Edges and Frontmatter
type: concept up: "Wiki-LLM-Pattern" tags: [conventions, frontmatter, edges]
Every wiki page has YAML frontmatter declaring its type:, parent up:, and optional typed edges to other pages. This frontmatter is what makes the wiki queryable (via the Knowledge-Graph-Pipeline) and what gives cross-references their semantic meaning.
---
type: concept | entity | source-summary | synthesis | index | comparison | untyped
up: "[[Parent-Page]]"
tags: [topic-a, topic-b]
----
type:: what kind of page this is. Useuntypedrather than omitting frontmatter. -
up:: parent page in the hierarchy; the breadcrumb edge. -
tags:: optional, for topical clustering.
A typed edge is not a label that says "these two things are related." It is an interface contract that defines what the agent should do when it traverses the edge:
| Edge | What it licenses |
|---|---|
extends: |
Inherit semantic context from the parent. Treat parent's claims as background. |
supports: |
Evidence aggregation. Combine claims across supporting pages; consistency is desirable. |
criticizes: |
Contradiction detection. Expect tension; conflict-resolution before combining. |
source: |
Grounding check. Target is external; verify cited claims trace back. |
up: |
Parent / breadcrumb. Navigate upward for category context. |
related: |
Fallback, no specific operation. Prefer a more specific edge type. |
The framing matters. Treating edges as operations forces them to do real work: a supports: edge tells a retrieval pipeline to aggregate, a criticizes: edge tells it to flag tension. A wiki where every cross-reference is related: collapses to undirected mentions and loses most of the graph's value.
-
Frontmatter: use
[[Page-Name]]wikilinks (Obsidian compatibility). -
Body: use
[Display Text](Page-Name)(GitHub wiki compatibility).
If A links to B, B should link back to A, either with the same edge type or with the natural inverse. The natural inverse of extends: is extended-by:, of supports: is supported-by:, etc.
The SCHEMA does not currently declare these inverses, which leads agents to degrade specific edges to the fallback related: when adding back-references. This is a real limitation; see Limitation-Inverse-Edges-Missing (issue #3).