I shipped a transaction bug, so I built a linter

Some bugs compile cleanly, pass all tests, and slip through code reviews. I shipped one of those at work: a database transaction that silently leaked operations outside its boundary. I don&rsquo;t like being stressed with a broken prod, so I built a custom linter to catch them at compile time. Here&rsquo;s how.