The explainers register a Graph.commitMetadataDerived whose
compute reads the engine's Graph.commitLog and the node's
Graph.explain derivation. read is consumed only inside the
compute callback through get(...), but it is also accepted on
the surface so call sites can pass a full Graph without casting.
commit, input, derived, hydrate, snapshot, exportModel,
subscribeCommits, the per-node subscribe, and the time-travel
readers are intentionally unreachable — a lineage explainer that can
mutate the engine ceases to be inspection and becomes a parallel
writer, breaking the §11 "engine is its own observer" commitment.
Capability slice handed to whyUpdated / whyNotUpdated.
The explainers register a Graph.commitMetadataDerived whose compute reads the engine's Graph.commitLog and the node's Graph.explain derivation.
readis consumed only inside thecomputecallback throughget(...), but it is also accepted on the surface so call sites can pass a fullGraphwithout casting.commit,input,derived,hydrate,snapshot,exportModel,subscribeCommits, the per-nodesubscribe, and the time-travel readers are intentionally unreachable — a lineage explainer that can mutate the engine ceases to be inspection and becomes a parallel writer, breaking the §11 "engine is its own observer" commitment.