new invariants don't propagate outside transaction until it's committed