Per-node access statistics: how many times a node has been returned by a
scoped read, and the wall-clock millisecond timestamp of the most recent
such read. Default (both zero) means “exists but never counted”.
The committed result of a successful crate::Db::submit/
crate::Db::submit_at call: the inclusive [first_seq, last_seq] range
the batch’s ops were assigned in the durable op log, and the batch’s ops
in their fully-resolved form (timestamps filled in) as actually written.
A handle to an open database. Cloning shares the same underlying storage
and applier thread — Db is Send + Sync + Clone. All writes funnel
through a single applier thread (via submit/submit_at), so batches
serialize deterministically even under concurrent callers.
A persistent (structurally-shared) snapshot of the graph’s nodes and
adjacency. apply produces a new Snapshot from an old one plus a batch
of resolved ops without a full copy — unaffected subtrees of the
underlying im structures are shared between old and new versions.
Result of a traversal: every in-scope seed plus everything reached,
deduped, with the full edge records (from the snapshot’s edges map) for
every traversed edge.
A fully-resolved mutation. INVARIANT: ops are appended to the log only
after the applier resolves every default (timestamps especially) — a
stored op never contains “now”. Replay must be deterministic.