Software developers are often surprised by unexpected events: users employ new features in unforeseen ways, leading to unexpected load on servers; a third-party library suddenly logs personal data ...