Loading, empty, error, offline, name-far-too-long, four-hundred-rows. Nobody puts these in a case study, and they are where most products actually feel broken.
A checklist I run before calling any flow finished, and why drawing the failure cases early makes the happy path simpler rather than harder.