# v0.100.0: Unified transactional IVM execution > **Status:** Planned > **Scope:** Large > **User promise:** *"A graph remains incremental when I refresh it manually or through a coordinator."* > **Blocked by:** [v0.99.0](v0.99.0.md) > **Source:** [September 2026 assessment](../plans/pg-trickle-assessment-and-pre-1.0-roadmap.md) ## Theme Use one transactional refresh contract across scheduled, manual, external graph, and lifecycle paths. Preserve the separate consistency contract for IMMEDIATE mode. ## Work - Carry graph boundaries, owner identity, permitted strategies, cancellation policy, resource policy, and finalization duties in one scoped refresh context. - Consolidate prepare, owner execution, apply, and finalization behavior across entry points. - Remove the blanket manual FULL fallback for stream-table sources. Produce the downstream evidence needed for incremental composition in the common path. - Enforce `full_policy` at each strategy decision, including runtime fallback. - Restore backend-local state after every exceptional exit and keep graph refresh atomic. - Define the consistency point for mixed FULL and differential graphs. Measure source-lock acquisition and hold time through the caller's transaction. ## Exit criteria - [ ] Small changes in chain and diamond graphs remain differential or scoped where admission permits it. - [ ] Scheduled, manual, and external paths agree on result multisets, effective strategy, frontiers, downstream changes, and rollback. - [ ] `full_policy = 'ERROR'` rejects every whole-query FULL transition without forcing unsafe differential execution. - [ ] No-data, initial population, reinitialization, and schema or function change paths finalize consistently. - [ ] Tests cover graph failure followed by ordinary refresh in the same backend. - [ ] Lock costs and caller-transaction duties are documented and measured. ## Scope control Keep PostgreSQL as the executor. Do not add another scheduler or dataflow runtime.