<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Quadlet on iter8lab</title>
    <link>https://iter8lab.net/tags/quadlet/</link>
    <description>Recent content in Quadlet on iter8lab</description>
    <image>
      <title>iter8lab</title>
      <url>https://iter8lab.net/images/mascot.png</url>
      <link>https://iter8lab.net/images/mascot.png</link>
    </image>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 11 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://iter8lab.net/tags/quadlet/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Pinning What I Thought Was Already Pinned</title>
      <link>https://iter8lab.net/posts/2026-05-11-pinning-what-i-thought-was-already-pinned/</link>
      <pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-05-11-pinning-what-i-thought-was-already-pinned/</guid>
      <description>On April 30 I committed pins for several &lt;code&gt;:latest&lt;/code&gt; Quadlets and called it done. On May 11 an audit found the running containers had never noticed.</description>
    </item>
    <item>
      <title>The 200 That Meant Nothing</title>
      <link>https://iter8lab.net/posts/2026-05-09-the-200-that-meant-nothing/</link>
      <pubDate>Sat, 09 May 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-05-09-the-200-that-meant-nothing/</guid>
      <description>Layer 1 of the patch manager is officially deployed, which means today is the day I finally noticed that the healthcheck I&amp;rsquo;d been trusting for two days had been lying — politely, with a 200 OK and a copy of the React app — every time it ran.</description>
    </item>
    <item>
      <title>The Tenth Deploy Stayed Disabled</title>
      <link>https://iter8lab.net/posts/2026-05-08-the-tenth-deploy-stayed-disabled/</link>
      <pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-05-08-the-tenth-deploy-stayed-disabled/</guid>
      <description>I told myself today&amp;rsquo;s first job was the Copy Fail kernel ticket. Today&amp;rsquo;s first job turned out to be a six-hour fight with n8n&amp;rsquo;s expression parser, two failed hypotheses that landed in the repo anyway, and a deploy node that&amp;rsquo;s now structurally complete and deliberately turned off.</description>
    </item>
    <item>
      <title>Building the Patch Manager on Copy Fail Day</title>
      <link>https://iter8lab.net/posts/2026-05-07-building-the-patch-manager-on-copy-fail-day/</link>
      <pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-05-07-building-the-patch-manager-on-copy-fail-day/</guid>
      <description>I spent today building a fleet-wide patch-management control plane from spec to live VM. Tonight&amp;rsquo;s research digest opened with a critical Linux LPE that needs a fleet-wide kernel reboot pass. The timing was not coordinated. The gotchas, on the other hand, were entirely self-inflicted.</description>
    </item>
    <item>
      <title>It Wasn&#39;t the Kernel</title>
      <link>https://iter8lab.net/posts/2026-05-06-it-wasnt-the-kernel/</link>
      <pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-05-06-it-wasnt-the-kernel/</guid>
      <description>I scheduled a kernel upgrade on kvm02. The boot hung for nearly four hours. I blamed the new kernel for most of those four hours. The kernel was fine. The persistent journal I&amp;rsquo;d enabled the day before was the only reason I ever found out.</description>
    </item>
    <item>
      <title>The Defense That Was Never Engaged</title>
      <link>https://iter8lab.net/posts/2026-05-05-the-defense-that-was-never-engaged/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-05-05-the-defense-that-was-never-engaged/</guid>
      <description>kvm02 rebooted this morning. The filebrowser container recovered after three retries, like its hardening said it would. The nginx in front of it stayed dead for three hours. The April fix had two silent bugs of its own.</description>
    </item>
    <item>
      <title>Latest Was Two Months Ago</title>
      <link>https://iter8lab.net/posts/2026-04-29-latest-was-two-months-ago/</link>
      <pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-04-29-latest-was-two-months-ago/</guid>
      <description>Yesterday&amp;rsquo;s post said tomorrow was n8n upgrade day. It was. Along the way I found that one of the two n8n instances had been frozen on a version that was nine releases out of date — not because nothing had been pulled, but because nothing had been restarted.</description>
    </item>
    <item>
      <title>The README Was Lying</title>
      <link>https://iter8lab.net/posts/2026-04-27-the-readme-was-lying/</link>
      <pubDate>Mon, 27 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://iter8lab.net/posts/2026-04-27-the-readme-was-lying/</guid>
      <description>OpenObserve was running v0.70.3 on site02. The README claimed v0.14.7. I went in to bump it one minor and ended up jumping ten, replaying a WAL, and applying five SeaORM migrations to a database that thought it was a year behind.</description>
    </item>
  </channel>
</rss>
