Distributed Systems Failure Models and Fault Tolerance
A timeout is an observation, and interpreting it requires assumptions about the system. Begin with a practical checklist of assumptions engineers commonly overlook, followed by Hamilton's operational perspective on recovery. The remaining papers make those assumptions precise: FLP establishes a limitation in the asynchronous crash-failure model, unreliable failure detectors show how additional information changes the problem, and Byzantine agreement considers participants that can send conflicting information. The reading order deliberately moves from operational questions to formal models. For each paper, record what processes and messages may do, which properties are guaranteed, and what is required for progress. Use those notes to distinguish an implementation defect from a guarantee the chosen model never offered. Curated from collections by Dan Creswell (https://dancres.github.io/Pages/) and Fred Hébert (https://ferd.ca/a-distributed-systems-reading-list.html); commentary and reading order are original.