Link to current text
CMP.14:8 - Common Anti-Patterns and How to Avoid Them
| Tempting move | Failure | Useful repair |
| Compose isolated correctness results | Another component invalidates a locally established fact. | Test the permitted interference against that fact. |
| Treat a read-modify-write statement as indivisible | Interleaving can lose an update. | Construct or justify the required atomic operation. |
| Infer failure of the effect from a missing reply | The effect may have happened before the reply was lost. | Identify the logical request and recover its result. |
| Infer eventual response from absence of a bad state | All participants may keep waiting. | Establish an enabled progression and its fairness conditions. |
| Assume each component progresses because the other does | The circular assumptions may admit no first move. | Derive progress from initial enabling and justified dependencies. |
| Hide a changed memory or crash model in an implementation detail | The former permitted executions no longer cover the implementation. | Reconstruct the affected interaction and preservation argument. |