null for a predecessor that is the listener
(preview from the trace's initial snapshot, before any node ran); a node
id for a real predecessor step. (undefined is handled the same as
null here for completeness, though callers are expected to short-circuit
on undefined before reaching this function — see the module doc comment.)
null when predecessorId names a step not present in the
trace (e.g. the trace is stale relative to the current graph).
Resolves the ContextSnapshot a node should preview variables from: the snapshot captured after its predecessor ran.