{
  "version": "https://jsonfeed.org/version/1",
  "title": "Design on LLBBL Blog",
  "icon": "https://avatars.micro.blog/avatars/2023/40/125738.jpg",
  "home_page_url": "https://llbbl.blog/",
  "feed_url": "https://llbbl.blog/feed.json",
  "items": [
      {
        "id": "http://llbbl.micro.blog/2026/08/09/the-best-automation-has-a.html",
        "title": "The Best Automation Has a Manual Escape Hatch",
        "content_html": "<p>Automation earns trust by being easy to override, not by being impossible to question.</p>\n<p>That sounds backwards. The pitch for automating something is usually that it removes the human, and a system you keep reaching into feels like a system that didn&rsquo;t finish the job. But the automation you actually trust, over years, is the one you know you can stop.</p>\n<p>Most automation that you set up is enforcing some sort of policy, and that&rsquo;s right most of the time, but not always.</p>\n<p>The mistake isn&rsquo;t automating a default way of working. It&rsquo;s building a system where the default is ingrained so deeply that there&rsquo;s no way out of it.</p>\n<p>The automation must be flexible. You must be able to adapt the automation as the requirements change.</p>\n<p>Do you have contingency plans on what to do if the automation fails?</p>\n<p>Now I&rsquo;m not talking about how to get around the automation, or always forcing an outcome that disables the automation. Instead, I&rsquo;m talking about what a real escape hatch looks like.</p>\n<p><strong>It&rsquo;s one operation.</strong> You run a command. You don&rsquo;t perform a sequence of five steps where forgetting the third leaves things inconsistent.</p>\n<p><strong>It maintains the invariants.</strong> This is the big one. When I override a post&rsquo;s date, the file and the database both get updated. If the override only touched one of them, I&rsquo;d have created a split-brain problem in the name of fixing a scheduling problem.</p>\n<p><strong>It&rsquo;s discoverable.</strong> It shows up in the help output next to everything else. An escape hatch nobody knows about is not a feature, it&rsquo;s trivia.</p>\n<p><strong>It&rsquo;s supported, not tolerated.</strong> It has tests. It survives refactors. Nobody has to feel clever for using it.</p>\n<p>If your answer to &ldquo;what if the automation is wrong&rdquo; is &ldquo;go around it manually,&rdquo; you don&rsquo;t have a hatch. You have a hazard with a tradition attached.</p>\n<p>If you design the escape hatch first, it forces a question that&rsquo;s worth thinking about. At least what happens when the automation is wrong. What are your plans to do something about it?</p>\n<h2 id=\"log-when-the-hatch-gets-used\">Log When the Hatch Gets Used</h2>\n<p>Don&rsquo;t forget about the log. It&rsquo;s not one that you should skip over. You should be logging when your escape hatch gets used, even if it only happens once a quarter.</p>\n<p>You probably don&rsquo;t need to update your policy every time. But your escape hatch log is a good indication of when you might consider updating the policy.</p>\n<p>Building an escape hatch changes the risk. The worst case is not that the tool did something irreversible, but rather that the tool did something I fixed in one command.</p>\n<p>So build the hatch. Make it one command, make it maintain your invariants, put it in the help text, and count how often it gets pulled.</p>\n<p>The automation you trust isn&rsquo;t the one that&rsquo;s always right. It&rsquo;s the one you know you can overrule.</p>\n<blockquote>\n<p>I&rsquo;d appreciate a follow. You can subscribe with your email below. The emails go out once a week, or you can find me on Mastodon at <a href=\"https://micro.blog/llbbl?remote_follow=1\">@logan@llbbl.blog</a>.</p>\n</blockquote>\n",
        "date_published": "2026-08-09T10:00:00-05:00",
        "url": "https://llbbl.blog/2026/08/09/the-best-automation-has-a.html",
        "tags": ["DevOps","automation","Software-development","Tooling","Design"]
      }
  ]
}
