{"id":"transaction-isolation-fragile-under-restart","text":"Transaction isolation's carefully composed two-invariant-layer model (MVCC visibility plus SSI conflict detection) is fragile under restart: abort is a status-change-only operation that leaves written data on disk, and MVCC counters that must be monotonic have no persistence mechanism, so a crash both resurrects aborted writes and breaks the ordering invariant that determines visibility.","truth_value":"IN","source":"","source_url":"","source_hash":"","justifications":[{"type":"SL","antecedents":["transaction-isolation-composes-two-invariant-layers","abort-is-status-change-not-disk-rollback","mvcc-counters-must-be-monotonic"],"outlist":[],"label":"The composed isolation model depends on volatile state that crashes destroy"}],"dependents":["full-stack-restart-fragility","recovery-destroys-both-durability-and-isolation"],"metadata":{},"created_at":"","updated_at":"","reviewed_at":"","verified_at":"","retracted_at":"","explanation":{"steps":[{"node":"transaction-isolation-fragile-under-restart","truth_value":"IN","reason":"SL justification valid","antecedents":["transaction-isolation-composes-two-invariant-layers","abort-is-status-change-not-disk-rollback","mvcc-counters-must-be-monotonic"],"label":"The composed isolation model depends on volatile state that crashes destroy"},{"node":"transaction-isolation-composes-two-invariant-layers","truth_value":"IN","reason":"SL justification valid","antecedents":["mvcc-three-layer-visibility-model","ssi-serializability-through-layered-invariants"],"label":"MVCC handles what a transaction can see while SSI handles what it can do — neither is sufficient alone"},{"node":"mvcc-three-layer-visibility-model","truth_value":"IN","reason":"SL justification valid","antecedents":["mvcc-append-only-versions","own-writes-always-visible","deletion-visibility-is-symmetric"],"label":"Three independent visibility guarantees combine into a complete snapshot isolation model where no single invariant is sufficient alone"},{"node":"mvcc-append-only-versions","truth_value":"IN","reason":"premise"},{"node":"own-writes-always-visible","truth_value":"IN","reason":"premise"},{"node":"deletion-visibility-is-symmetric","truth_value":"IN","reason":"premise"},{"node":"ssi-serializability-through-layered-invariants","truth_value":"IN","reason":"SL justification valid","antecedents":["ssi-read-only-skip-validation","ssi-store-contains-only-committed-data","ssi-writes-deletes-mutually-exclusive"],"label":"The read-only optimization is only correct BECAUSE the store invariant holds; the three beliefs form a dependency chain, not independent observations"},{"node":"ssi-read-only-skip-validation","truth_value":"IN","reason":"premise"},{"node":"ssi-store-contains-only-committed-data","truth_value":"IN","reason":"premise"},{"node":"ssi-writes-deletes-mutually-exclusive","truth_value":"IN","reason":"premise"},{"node":"abort-is-status-change-not-disk-rollback","truth_value":"IN","reason":"premise"},{"node":"mvcc-counters-must-be-monotonic","truth_value":"IN","reason":"premise"}]}}