Record describing a single committed event.

Returned from Graph.commit and broadcast to commit subscribers. The commit log itself is exposed as a Behavior [Commit] via Graph.commitLog — queryable by the same read/subscribe/explain API as any other graph value, which is the engine's promise that "a non-programmer can change a formula in a cell and see the world recompute now" turned into an inspection primitive rather than a separate devtools system.

interface Commit {
    changedNodes: readonly string[];
    intent: string;
    originatedAt: undefined | number;
    time: number;
}

Properties

changedNodes: readonly string[]

Identifiers of nodes whose value changed during the commit.

intent: string

Caller-supplied label passed to graph.commit(intent, …).

originatedAt: undefined | number

For commits produced by Graph.hydrate, the GraphTime carried by the originating snapshot envelope. undefined on graph.commit(...)-issued records. The engine clock advances by exactly one tick per hydrate (the §3 monotonicity invariant); this field preserves the on-the-wire snapshot label so persistence and devtools consumers can still answer "this commit replays a server snapshot from t=N" without inspecting intent strings.

Always-set per #703 Win 5 / #760 (monomorphize hidden classes); the explicit | undefined admits the no-tag case via explicit undefined under exactOptionalPropertyTypes, so regular and hydrate commits share the same V8 hidden class. Consumers can still branch on c.originatedAt !== undefined to distinguish the two — runtime behaviour is unchanged.

time: number

GraphTime assigned to this commit.