Each level partitions the named anomaly labels into blocked and allowed sets.

highlighted = computed this step

Blocked versus allowed

Each level splits the anomaly labels into blocked and allowed sets. Those sets are derived by the compiler and then rendered as counts plus labels.

blockedallowed=anomalies\text{blocked}\cup\text{allowed}=\text{anomalies}

Two endpoints

Read committed blocks 1 label and allows 3. Serializable blocks 4 labels and allows 0.

read committed blocked=1,serializable blocked=4\text{read committed blocked}=1,\quad \text{serializable blocked}=4

isolation levels are rendered as a tiny pedagogical matrix over named anomalies only; ANSI completeness, vendor behavior, performance, and operational guarantees are out of scope.

Blocked versus allowedleveldirty_readnon_repeatable_readlost_updatewrite_skewread_committedblockedallowedallowedallowedrepeatable_readblockedblockedallowedallowedsnapshot_isolationblockedblockedblockedallowedserializableblockedblockedblockedblocked blocked versus allowedlevelblockedCountblockedallowedCountallowedread_committed1dirty_read3non_repeatable_read, lost_update, write_skewrepeatable_read2dirty_read, non_repeatable_read2lost_update, write_skewsnapshot_isolation3dirty_read, non_repeatable_read, lost_update1write_skewserializable4dirty_read, non_repeatable_read, lost_update, write_skew0none stronger-than cover edgesstrongerweakerrepeatable_readread_committedsnapshot_isolationrepeatable_readserializablesnapshot_isolation

Summary

Blocked and allowed are complements inside the named anomaly set. Note: no extra anomalies are implied beyond the rendered labels.

complement inside the pinned set\text{complement inside the pinned set}