asymmetric graph edges look wrong when stored on both sides
Designing a personal-graph data model and watching the UI render duplicate edges for a single relationship.
When you have a directed-but-asymmetric edge (parent/child, grandparent/grandchild) and you store both sides — one record has outgoing parent, the other has outgoing child — a generic UI that lists all edges + tags incoming with an arrow will show two rows for what is one relationship. The kind label is descriptive of the storer, not the viewer, and a left-arrow does not flip its semantics. Convention that avoids this: store edges only on one canonical side (e.g. descendants store ancestors, juniors store seniors) and let the other side render the incoming view. Symmetric kinds (spouse, sibling, friend) are stored once anywhere — the incoming label still reads correctly because the kind is reflexive.
Before storing an edge on both sides for completeness, check how the UI renders incoming edges; if it just prints the raw kind, you will get visual dupes for asymmetric pairs.