Skip to main content

Module lineage

Module lineage 

Source
Expand description

Conversation lineage, derived from .fur/threads/.

§Assertions, not records

parents and children are independent claims. A holds “B is my child” and B holds “A is my parent”; either can exist without the other, because one of them may have been imported from a registry without the other. The traversal graph is therefore the union of every claim in the project, and an edge asserted from one side only is a real edge.

The raw claims are kept alongside the union, because the union deliberately erases which side made the claim — and that is exactly what asymmetry detection needs.

§Cycles are data, not errors

Nothing here rejects a cycle. fur link refuses to create one locally, but two people can independently publish A→B and B→A and the cycle only exists once both land in one archive. Every walk carries a visited set — which it needs for diamonds regardless — so a node reached twice is emitted once and flagged, never expanded again.

Structs§

Lineage
TreeEntry
One row of a rendered lineage tree.