Ingested documents as nodes, their stored relationships as directed edges — one edge per indexed row, so a supersede pair reads as the two-way link ("supersedes" on the newer doc, "superseded-by" on the older) the related CLI and the detail panels report. Inferred links render dashed; extracted and derived links solid.
{% if graph.nodes %} {#- Legend as filter (the /graph pattern): kind + relation chips toggle whole edge groups via client-side DataSet updates — a filter change never reloads or refetches. Hidden until filled; the script renders the chips from the same data the canvas drew, so they cannot drift. -#}{{ graph.metadata.node_count }} docs — {{ graph.metadata.edge_count }} of {{ graph.metadata.edge_count }} edges shown
No knowledge documents — ingest some first: cairn knowledge ingest.