Expand description
Canonicalize a freshly-parsed structural graph: drop self-loops, deduplicate
edges on (source, target, kind), and prune external nodes that nothing
references. Structural edges (e.g. contains) are preserved — they carry no
flow but are kept for display and ownership.