Expand description
DAG edge store โ typed directed edges between node hashes.
Layout: graph/{from_hash}/{edge_type}/{to_hash}
Existence of the file = the edge exists. No file content needed.
This makes TRACE queries pure filesystem traversal: FROM nodes TRACE caused_by โ list dir graph/{hash}/caused_by/ Each entry is the hash of a causal predecessor node. Follow recursively until limit reached or no more edges.
Write is atomic (create file). Read is readdir. Both are O(degree). No global lock. Multiple threads can add edges concurrently.