<?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>Debugging on Nick Liu - Software Engineer</title><link>https://nick-liu.com/tags/debugging/</link><description>Recent content in Debugging on Nick Liu - Software Engineer</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>nickboy@users.noreply.github.com (Nick Liu)</managingEditor><webMaster>nickboy@users.noreply.github.com (Nick Liu)</webMaster><copyright>2026 Nick Liu</copyright><lastBuildDate>Sun, 30 Aug 2026 00:52:14 -0700</lastBuildDate><atom:link href="https://nick-liu.com/tags/debugging/index.xml" rel="self" type="application/rss+xml"/><item><title>The installer stamped an ID it never read. It reinstalled over itself.</title><link>https://nick-liu.com/posts/state-inferred-from-derivative/</link><pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate><author>nickboy@users.noreply.github.com (Nick Liu)</author><guid>https://nick-liu.com/posts/state-inferred-from-derivative/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;An installer writes a script. It stamps that script with `HERDR_INTEGRATION_ID=claude`, an identifier that exists for no reason other than to say "I made this". Then, to decide whether it has already run, it ignores that stamp entirely and compares the rendered command string in a config file. Rewrite the command to an equivalent form and the installer no longer recognises its own work, so it installs a second copy alongside the first.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;I hit three bugs in three days. They looked unrelated until I wrote them down next to each other: one in someone else&amp;rsquo;s tool, two in a plugin of mine. They share a shape, and the shape is worth more than any of the three fixes.&lt;/p&gt;</description><content:encoded>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;An installer writes a script. It stamps that script with `HERDR_INTEGRATION_ID=claude`, an identifier that exists for no reason other than to say "I made this". Then, to decide whether it has already run, it ignores that stamp entirely and compares the rendered command string in a config file. Rewrite the command to an equivalent form and the installer no longer recognises its own work, so it installs a second copy alongside the first.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;I hit three bugs in three days. They looked unrelated until I wrote them down next to each other: one in someone else&amp;rsquo;s tool, two in a plugin of mine. They share a shape, and the shape is worth more than any of the three fixes.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;State inferred from a derived value rather than read from the component that owns it.&lt;/strong&gt;&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Case one: the installer that did not recognise its own work&#10; &lt;div id="case-one-the-installer-that-did-not-recognise-its-own-work" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#case-one-the-installer-that-did-not-recognise-its-own-work" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;herdr integration install claude&lt;/code&gt; wires herdr into Claude Code by adding a hook to &lt;code&gt;settings.json&lt;/code&gt;. To be re-runnable, it has to answer one question first: have I already done this?&lt;/p&gt;&#10;&lt;p&gt;It answers it by rendering the command string it would write, and checking whether that exact string is present in &lt;code&gt;settings.json&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;That works for exactly as long as nobody touches the file. Rewrite the command to an equivalent portable form, say because you want it to work on a machine where the binary lives somewhere else, and the string no longer matches. The installer concludes it has never run, and appends a duplicate hook. Now every event fires the integration twice.&lt;/p&gt;&#10;&lt;p&gt;The frustrating part is that the correct answer was already in the file. The installer generates a script and stamps it:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;HERDR_INTEGRATION_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;claude&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;That is an unambiguous identity, authored by the installer, for the installer, surviving any amount of reformatting of the command that invokes it. And the check does not consult it.&lt;/p&gt;&#10;&lt;p&gt;I reproduced this first-hand in a sandboxed &lt;code&gt;CLAUDE_CONFIG_DIR&lt;/code&gt; rather than against my real config, which I recommend for anything that mutates a settings file you care about, and reported it upstream.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Case two: the rename check that could never repair anything&#10; &lt;div id="case-two-the-rename-check-that-could-never-repair-anything" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#case-two-the-rename-check-that-could-never-repair-anything" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;I wrote a herdr plugin during &lt;a href="https://nick-liu.com/posts/herdr-trial-agent-multiplexer/" &gt;my trial of it&lt;/a&gt; called &lt;code&gt;tab-smart-rename&lt;/code&gt;, which renames each tab after whatever the agent in it is currently working on.&lt;/p&gt;&#10;&lt;p&gt;To avoid renaming a tab that is already correctly named, it compared the new name against a cached session name it had stored the last time it ran.&lt;/p&gt;&#10;&lt;p&gt;Consider what happens the moment anything else changes the tab label. Another plugin, a manual rename, herdr itself. The cache still holds the last name this plugin set. The new name matches the cache. So the plugin concludes nothing has changed and does nothing, and the label stays wrong forever.&lt;/p&gt;&#10;&lt;p&gt;The check is not comparing &amp;ldquo;what the tab says&amp;rdquo; to &amp;ldquo;what the tab should say&amp;rdquo;. It is comparing &amp;ldquo;what I last decided&amp;rdquo; to &amp;ldquo;what I would decide now&amp;rdquo;, which are two views of the same opinion. From its own point of view nothing had changed, and it was right. It just was not looking at the tab.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Case three: the tab id that came from the environment&#10; &lt;div id="case-three-the-tab-id-that-came-from-the-environment" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#case-three-the-tab-id-that-came-from-the-environment" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Same plugin. To know which tab to rename, it read a tab id from an inherited environment variable.&lt;/p&gt;&#10;&lt;p&gt;Environment variables are inherited by children, which is the entire point of them, and it makes them a terrible source of truth for &amp;ldquo;where am I right now&amp;rdquo;. Launch a session from one pane while working in another and the new process carries the &lt;em&gt;launching&lt;/em&gt; pane&amp;rsquo;s id. The plugin then confidently renames a tab that has nothing to do with the agent it is watching.&lt;/p&gt;&#10;&lt;p&gt;This is a bug class I have hit before and written about, in a different costume. &lt;a href="https://nick-liu.com/posts/herdr-trial-agent-multiplexer/" &gt;The &lt;code&gt;CLAUDECODE=1&lt;/code&gt; leak&lt;/a&gt; had the same root: an environment flag treated as a statement about the current process when it is really a statement about some ancestor. The reliable answer there was to walk the process tree and let ancestry decide, and the reliable answer here is to ask the multiplexer which pane this is.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The shape&#10; &lt;div id="the-shape" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-shape" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Bug&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;It compared&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;The owner of the truth&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Result&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Integration installer&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;rendered command string&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;HERDR_INTEGRATION_ID&lt;/code&gt; it wrote itself&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;duplicate hook, fires twice&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rename check&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;its own cached name&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the tab&amp;rsquo;s actual label&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;can never repair a drifted label&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Tab id resolution&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;inherited env var&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;the pane the process is really in&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;renames a tab it does not own&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;In each case the derivative drifts from the thing it stands for, and nothing notices, because the code is comparing the derivative to itself.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Why this class is so quiet&#10; &lt;div id="why-this-class-is-so-quiet" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-this-class-is-so-quiet" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The tell is that the failure is silent &lt;em&gt;and self-consistent&lt;/em&gt;. Every component reports success.&lt;/p&gt;&#10;&lt;p&gt;The installer succeeded. It wrote a valid hook to a valid file and exited zero. The rename check succeeded, and it was correct given its premises. The tab id resolution succeeded, and it renamed a tab that genuinely exists.&lt;/p&gt;&#10;&lt;p&gt;There is no exception, no error path, no log line, and nothing to alert on, because from the inside nothing went wrong. You find these by noticing an outcome that is wrong in the world, not by noticing a failure in the system, and that is a much slower loop. It is the same reason &lt;a href="https://nick-liu.com/posts/silent-failures-env-shadow/" &gt;a shell function that swallows commands with exit 0&lt;/a&gt; is so much worse than one that crashes.&lt;/p&gt;&#10;&lt;p&gt;There is a second-order effect that makes it worse still. A derived value that drifts tends to drift &lt;em&gt;further&lt;/em&gt; over time, because the mechanism that would correct it is the mechanism that is broken. The rename check is the clearest version: the longer the label is wrong, the more certain the plugin is that everything is fine.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;What to do instead&#10; &lt;div id="what-to-do-instead" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-to-do-instead" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The fix in all three cases is the same sentence: ask the component that owns the state.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The installer should read its own stamp. It went to the trouble of writing an identity; identity is what identity is for.&lt;/li&gt;&#10;&lt;li&gt;The rename check should read the tab&amp;rsquo;s current label, which is one call away, rather than what it remembers setting.&lt;/li&gt;&#10;&lt;li&gt;The tab id should come from the multiplexer&amp;rsquo;s notion of the current pane, not from an environment variable that any parent may have set.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The general test is a question you can ask about any comparison in a codebase: &lt;strong&gt;if the world changed underneath this check, would it notice?&lt;/strong&gt; If both sides of the comparison come from the same place, the answer is no, and you have written a check that can only ever agree with itself.&lt;/p&gt;&#10;&lt;p&gt;A related smell, and the one that caught the installer for me: if a component authors an identifier and then does not read it, either the identifier is dead code or the reader is looking in the wrong place. It is almost never the former.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Lessons&#10; &lt;div id="lessons" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#lessons" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Read state from the component that owns it. A derived value is a copy, and copies drift.&lt;/li&gt;&#10;&lt;li&gt;If a check compares two things that both come from you, it can only agree with itself. Ask whether the check would notice a change made by anything else.&lt;/li&gt;&#10;&lt;li&gt;An identity you write and never read is a bug waiting to be filed. The installer stamped &lt;code&gt;HERDR_INTEGRATION_ID&lt;/code&gt; and then decided idempotency by string-matching a command it also wrote.&lt;/li&gt;&#10;&lt;li&gt;Idempotency means recognising your own work after someone reformats it. Matching on rendered output makes any equivalent rewrite look like a fresh install.&lt;/li&gt;&#10;&lt;li&gt;Environment variables describe an ancestor, not the current process. For &amp;ldquo;where am I now&amp;rdquo;, ask the thing that knows.&lt;/li&gt;&#10;&lt;li&gt;This class fails silently and self-consistently, so every component reports success. You will find it by noticing a wrong outcome in the world, never by noticing a failure in the system.&lt;/li&gt;&#10;&lt;li&gt;Reproduce config-mutating bugs in a sandboxed config directory. &lt;code&gt;CLAUDE_CONFIG_DIR&lt;/code&gt; cost me nothing and meant the duplicate hook landed somewhere disposable.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h2 class="relative group"&gt;References&#10; &lt;div id="references" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#references" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;herdr: &lt;a href="https://herdr.dev" target="_blank" rel="noreferrer"&gt;https://herdr.dev&lt;/a&gt; (source: &lt;a href="https://github.com/herdrdev/herdr" target="_blank" rel="noreferrer"&gt;https://github.com/herdrdev/herdr&lt;/a&gt;)&lt;/li&gt;&#10;&lt;li&gt;Claude Code settings and hooks reference: &lt;a href="https://code.claude.com/docs/en/hooks" target="_blank" rel="noreferrer"&gt;https://code.claude.com/docs/en/hooks&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;The trial the two plugin bugs came out of: &lt;a href="https://nick-liu.com/posts/herdr-trial-agent-multiplexer/" &gt;Running six agents made tab patrol my biggest time sink. So: a herdr trial.&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;The same silence, different costume: &lt;a href="https://nick-liu.com/posts/silent-failures-env-shadow/" &gt;My commands vanished with exit 0. The culprit was a file named env.&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;The project that surfaced the installer bug: &lt;a href="https://nick-liu.com/posts/herddeck-substrate-bet/" &gt;I deleted six subsystems by swapping one dependency.&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</content:encoded></item><item><title>Every context ring read 10%. Two bugs, and fixing one hid the other.</title><link>https://nick-liu.com/posts/herddeck-frozen-context-ring/</link><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><author>nickboy@users.noreply.github.com (Nick Liu)</author><guid>https://nick-liu.com/posts/herddeck-frozen-context-ring/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;Each agent key on the Stream Deck draws a ring showing how full that session's context window is. Mine sat at 10% for days. Every session, regardless of activity, regardless of how long the agent had been grinding. I found the bug, fixed it, watched agents start reporting correct percentages every single turn, and the ring still said 10%. That was the good part, because it meant there were two.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;nav class="series-progress" aria-label="Series progress"&gt;&#10; &lt;span class="series-progress-label"&gt;Deleting ClaudeDeck · Part 3 of 5&lt;/span&gt;&#10; &lt;ol class="series-progress-dots"&gt;&lt;li class="series-progress-dot is-done"&gt;&#10; &lt;a href="https://nick-liu.com/posts/herddeck-substrate-bet/" title="I deleted six subsystems by swapping one dependency. The protocol billed me."&gt;1&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot is-done"&gt;&#10; &lt;a href="https://nick-liu.com/posts/herddeck-backoff-wrong-question/" title="My backoff logged errors=1 492 times. It was answering the wrong question."&gt;2&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot is-current"&gt;&#10; &lt;a href="https://nick-liu.com/posts/herddeck-frozen-context-ring/" title="Every context ring read 10%. Two bugs, and fixing one hid the other." aria-current="step"&gt;3&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/herddeck-ring-read-backwards/" title="The ring was 1.00:1 against its background. The key read 35% at 65%."&gt;4&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/herddeck-ssh-tunnel-lies/" title="The tunnel was up. The socket existed. Nothing was on the other end."&gt;5&lt;/a&gt;&#10; &lt;/li&gt;&lt;/ol&gt;&#10; &lt;/nav&gt;&#10;&lt;div class="tested-with" role="note"&gt;&#10; &lt;span class="tested-with-icon" aria-hidden="true"&gt;🧪&lt;/span&gt;&#10; &lt;span&gt;Tested with &lt;strong&gt;Claude Code&lt;/strong&gt; &lt;code&gt;2.1.x&lt;/code&gt; · macOS&lt;/span&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;Ten percent is a suspicious number. Not zero, which would say &amp;ldquo;nothing ever arrived&amp;rdquo;. Not a plausible-looking 37%, which would say &amp;ldquo;this works and your session is small&amp;rdquo;. Ten percent is round, and round numbers in a display that should be noisy mean the display is not reading anything.&lt;/p&gt;</description><content:encoded>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;Each agent key on the Stream Deck draws a ring showing how full that session's context window is. Mine sat at 10% for days. Every session, regardless of activity, regardless of how long the agent had been grinding. I found the bug, fixed it, watched agents start reporting correct percentages every single turn, and the ring still said 10%. That was the good part, because it meant there were two.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;nav class="series-progress" aria-label="Series progress"&gt;&#10; &lt;span class="series-progress-label"&gt;Deleting ClaudeDeck · Part 3 of 5&lt;/span&gt;&#10; &lt;ol class="series-progress-dots"&gt;&lt;li class="series-progress-dot is-done"&gt;&#10; &lt;a href="https://nick-liu.com/posts/herddeck-substrate-bet/" title="I deleted six subsystems by swapping one dependency. The protocol billed me."&gt;1&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot is-done"&gt;&#10; &lt;a href="https://nick-liu.com/posts/herddeck-backoff-wrong-question/" title="My backoff logged errors=1 492 times. It was answering the wrong question."&gt;2&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot is-current"&gt;&#10; &lt;a href="https://nick-liu.com/posts/herddeck-frozen-context-ring/" title="Every context ring read 10%. Two bugs, and fixing one hid the other." aria-current="step"&gt;3&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/herddeck-ring-read-backwards/" title="The ring was 1.00:1 against its background. The key read 35% at 65%."&gt;4&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/herddeck-ssh-tunnel-lies/" title="The tunnel was up. The socket existed. Nothing was on the other end."&gt;5&lt;/a&gt;&#10; &lt;/li&gt;&lt;/ol&gt;&#10; &lt;/nav&gt;&#10;&lt;div class="tested-with" role="note"&gt;&#10; &lt;span class="tested-with-icon" aria-hidden="true"&gt;🧪&lt;/span&gt;&#10; &lt;span&gt;Tested with &lt;strong&gt;Claude Code&lt;/strong&gt; &lt;code&gt;2.1.x&lt;/code&gt; · macOS&lt;/span&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;Ten percent is a suspicious number. Not zero, which would say &amp;ldquo;nothing ever arrived&amp;rdquo;. Not a plausible-looking 37%, which would say &amp;ldquo;this works and your session is small&amp;rdquo;. Ten percent is round, and round numbers in a display that should be noisy mean the display is not reading anything.&lt;/p&gt;&#10;&lt;p&gt;It turned out to be an orphan. Something wrote 10% into the cache a long time ago and nothing had overwritten it since, on any session, for days.&lt;/p&gt;&#10;&lt;ol class="border-s-2 border-primary-500 dark:border-primary-300 list-none"&gt;&#10;&#10;&#10;&#10;&#10;&#10;&lt;li&gt;&#10; &lt;div class="flex"&gt;&#10; &lt;div&#10; class="bg-primary-500 dark:bg-primary-300 text-neutral-50 dark:text-neutral-700 min-w-[30px] h-8 text-2xl flex items-center justify-center rounded-full ltr:-ml-12 rtl:-mr-[79px] mt-5"&gt;&#10; &lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"/&gt;&lt;/svg&gt;&#10;&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="block p-6 rounded-lg shadow-2xl flex-1 ms-6 mb-10 break-words"&gt;&#10; &lt;div class="flex justify-between"&gt;&#10; &#10; &lt;h2 class="mt-0"&gt;Symptom&lt;/h2&gt;&#10; &#10; &#10; &lt;h3 class=""&gt;&#10; &lt;span class="flex cursor-pointer"&gt;&#10; &#10; &#10; &#10; &#10; &lt;span&#10; class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"&gt;&#10; &#10; day 1&#10; &lt;/span&gt;&#10;&lt;/span&gt;&#10;&#10; &lt;/h3&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;div class="mb-6"&gt;&#10; Ring pinned at 10% on every agent slot. Suspiciously round.&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10;&lt;/li&gt;&#10;&#10;&#10;&#10;&#10;&#10;&lt;li&gt;&#10; &lt;div class="flex"&gt;&#10; &lt;div&#10; class="bg-primary-500 dark:bg-primary-300 text-neutral-50 dark:text-neutral-700 min-w-[30px] h-8 text-2xl flex items-center justify-center rounded-full ltr:-ml-12 rtl:-mr-[79px] mt-5"&gt;&#10; &lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"&gt;&#10;&lt;path fill="currentColor" d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"/&gt;&lt;/svg&gt;&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="block p-6 rounded-lg shadow-2xl flex-1 ms-6 mb-10 break-words"&gt;&#10; &lt;div class="flex justify-between"&gt;&#10; &#10; &lt;h2 class="mt-0"&gt;Bug one found&lt;/h2&gt;&#10; &#10; &#10; &lt;h3 class=""&gt;&#10; &lt;span class="flex cursor-pointer"&gt;&#10; &#10; &#10; &#10; &#10; &lt;span&#10; class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"&gt;&#10; &#10; day 1&#10; &lt;/span&gt;&#10;&lt;/span&gt;&#10;&#10; &lt;/h3&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;div class="mb-6"&gt;&#10; The statusline delegate reads &lt;code&gt;.context_window.percentUsed&lt;/code&gt;. Claude Code emits &lt;code&gt;.context_window.used_percentage&lt;/code&gt;. The extraction silently yields nothing, every turn.&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10;&lt;/li&gt;&#10;&#10;&#10;&#10;&#10;&#10;&lt;li&gt;&#10; &lt;div class="flex"&gt;&#10; &lt;div&#10; class="bg-primary-500 dark:bg-primary-300 text-neutral-50 dark:text-neutral-700 min-w-[30px] h-8 text-2xl flex items-center justify-center rounded-full ltr:-ml-12 rtl:-mr-[79px] mt-5"&gt;&#10; &lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"&gt;&#10;&lt;path fill="currentColor" d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"/&gt;&lt;/svg&gt;&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="block p-6 rounded-lg shadow-2xl flex-1 ms-6 mb-10 break-words"&gt;&#10; &lt;div class="flex justify-between"&gt;&#10; &#10; &lt;h2 class="mt-0"&gt;Fixed, and wrong&lt;/h2&gt;&#10; &#10; &#10; &lt;h3 class=""&gt;&#10; &lt;span class="flex cursor-pointer"&gt;&#10; &#10; &#10; &#10; &#10; &lt;span&#10; class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"&gt;&#10; &#10; day 2&#10; &lt;/span&gt;&#10;&lt;/span&gt;&#10;&#10; &lt;/h3&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;div class="mb-6"&gt;&#10; Agents now report a correct percentage every turn. The ring still reads 10%.&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10;&lt;/li&gt;&#10;&#10;&#10;&#10;&#10;&#10;&lt;li&gt;&#10; &lt;div class="flex"&gt;&#10; &lt;div&#10; class="bg-primary-500 dark:bg-primary-300 text-neutral-50 dark:text-neutral-700 min-w-[30px] h-8 text-2xl flex items-center justify-center rounded-full ltr:-ml-12 rtl:-mr-[79px] mt-5"&gt;&#10; &lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"/&gt;&lt;/svg&gt;&#10;&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="block p-6 rounded-lg shadow-2xl flex-1 ms-6 mb-10 break-words"&gt;&#10; &lt;div class="flex justify-between"&gt;&#10; &#10; &lt;h2 class="mt-0"&gt;Three live probes&lt;/h2&gt;&#10; &#10; &#10; &lt;h3 class=""&gt;&#10; &lt;span class="flex cursor-pointer"&gt;&#10; &#10; &#10; &#10; &#10; &lt;span&#10; class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"&gt;&#10; &#10; day 2&#10; &lt;/span&gt;&#10;&lt;/span&gt;&#10;&#10; &lt;/h3&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;div class="mb-6"&gt;&#10; &lt;code&gt;pane.report_metadata&lt;/code&gt; emits nothing. &lt;code&gt;pane.agent_status_changed&lt;/code&gt; carries no tokens. Tokens are assigned in exactly one place.&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10;&lt;/li&gt;&#10;&#10;&#10;&#10;&#10;&#10;&lt;li&gt;&#10; &lt;div class="flex"&gt;&#10; &lt;div&#10; class="bg-primary-500 dark:bg-primary-300 text-neutral-50 dark:text-neutral-700 min-w-[30px] h-8 text-2xl flex items-center justify-center rounded-full ltr:-ml-12 rtl:-mr-[79px] mt-5"&gt;&#10; &lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"&gt;&lt;path fill="currentColor" d="M172.5 131.1C228.1 75.51 320.5 75.51 376.1 131.1C426.1 181.1 433.5 260.8 392.4 318.3L391.3 319.9C381 334.2 361 337.6 346.7 327.3C332.3 317 328.9 297 339.2 282.7L340.3 281.1C363.2 249 359.6 205.1 331.7 177.2C300.3 145.8 249.2 145.8 217.7 177.2L105.5 289.5C73.99 320.1 73.99 372 105.5 403.5C133.3 431.4 177.3 435 209.3 412.1L210.9 410.1C225.3 400.7 245.3 404 255.5 418.4C265.8 432.8 262.5 452.8 248.1 463.1L246.5 464.2C188.1 505.3 110.2 498.7 60.21 448.8C3.741 392.3 3.741 300.7 60.21 244.3L172.5 131.1zM467.5 380C411 436.5 319.5 436.5 263 380C213 330 206.5 251.2 247.6 193.7L248.7 192.1C258.1 177.8 278.1 174.4 293.3 184.7C307.7 194.1 311.1 214.1 300.8 229.3L299.7 230.9C276.8 262.1 280.4 306.9 308.3 334.8C339.7 366.2 390.8 366.2 422.3 334.8L534.5 222.5C566 191 566 139.1 534.5 108.5C506.7 80.63 462.7 76.99 430.7 99.9L429.1 101C414.7 111.3 394.7 107.1 384.5 93.58C374.2 79.2 377.5 59.21 391.9 48.94L393.5 47.82C451 6.731 529.8 13.25 579.8 63.24C636.3 119.7 636.3 211.3 579.8 267.7L467.5 380z"/&gt;&lt;/svg&gt;&#10;&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="block p-6 rounded-lg shadow-2xl flex-1 ms-6 mb-10 break-words"&gt;&#10; &lt;div class="flex justify-between"&gt;&#10; &#10; &lt;h2 class="mt-0"&gt;Root cause&lt;/h2&gt;&#10; &#10; &#10; &lt;h3 class=""&gt;&#10; &lt;span class="flex cursor-pointer"&gt;&#10; &#10; &#10; &#10; &#10; &lt;span&#10; class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400"&gt;&#10; &#10; day 2&#10; &lt;/span&gt;&#10;&lt;/span&gt;&#10;&#10; &lt;/h3&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;div class="mb-6"&gt;&#10; The daemon snapshotted once on connect. Every ring froze at whatever it read at that instant.&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;/div&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&#10;&#10;&lt;h2 class="relative group"&gt;Bug one: a field name that does not exist&#10; &lt;div id="bug-one-a-field-name-that-does-not-exist" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#bug-one-a-field-name-that-does-not-exist" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;HerdDeck ships a statusline delegate. It sits in front of whatever statusline you already have, forwards the per-turn JSON payload on to herdr, and passes your original output through untouched. It read this:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.context_window.percentUsed&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Claude Code emits &lt;code&gt;.context_window.used_percentage&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;Getting the field name wrong is unremarkable. How it failed is the part worth keeping. A statusline script runs on every turn of every session, and a statusline script that throws takes your prompt down with it, so the whole thing is written to fall through silently on every path. Wrong field name, malformed JSON, &lt;code&gt;jq&lt;/code&gt; missing, all of it produces the same result: no error, no output, no report, forever.&lt;/p&gt;&#10;&lt;p&gt;Silent-by-design is correct for a statusline. It is also a category of bug where nothing anywhere tells you the value never arrived, and the only symptom is a number somewhere else that stops changing.&lt;/p&gt;&#10;&lt;p&gt;There is a small joke at my expense here. I wrote &lt;a href="https://nick-liu.com/posts/statusline-side-channel/" &gt;a post about this exact payload&lt;/a&gt; in May, and that post prints the schema with the correct field name in it. My own published documentation had it right. The code I shipped three months later did not.&lt;/p&gt;&#10;&lt;p&gt;The fix keeps the wrong name deliberately, which was not my first instinct:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Field name: Claude Code emits `.context_window.used_percentage`. An&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# earlier revision of this script read `.percentUsed`, which does not&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# exist — the extraction silently yielded nothing and the donut never&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# lit up. `percentUsed` is kept only as a fallback so the script also&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# works against any build that ever used it; `used_percentage` wins.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;PCT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;%s&amp;#39;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$INPUT&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; jq -r &lt;span class="s1"&gt;&amp;#39;.context_window | (.used_percentage // .percentUsed // empty)&amp;#39;&lt;/span&gt; 2&amp;gt;/dev/null&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Two tests pin the behaviour: one that the fallback works, one that &lt;code&gt;used_percentage&lt;/code&gt; wins when both are present. A silent fallback needs a test asserting the &lt;em&gt;ordering&lt;/em&gt;, or it is just a second way to be quietly wrong.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The fix worked and the ring did not move&#10; &lt;div id="the-fix-worked-and-the-ring-did-not-move" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-fix-worked-and-the-ring-did-not-move" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;This is the part of the debugging that went wrong, and it is why the post exists.&lt;/p&gt;&#10;&lt;p&gt;After the field-name fix, every agent reported a correct, changing percentage on every turn. I could watch the numbers arrive. And the ring still sat at 10%.&lt;/p&gt;&#10;&lt;p&gt;For an hour or so I was debugging the wrong thing, because the evidence pointed backwards. A fix that produces correct data and no visible change reads as &amp;ldquo;the fix did not work&amp;rdquo;. I went back over the delegate. I checked the JSON. I checked that the daemon was receiving it. All fine, all pointless, because the second bug had been there the entire time and the first one had been hiding it perfectly.&lt;/p&gt;&#10;&lt;p&gt;A cosmetic symptom with two independent causes is much harder than a symptom with one hard failure. With one cause, fixing it resolves the symptom and you are done. With two, fixing the first one changes nothing observable, and the natural inference is that you were wrong about the first one.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Three probes against a live server&#10; &lt;div id="three-probes-against-a-live-server" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#three-probes-against-a-live-server" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;So I stopped reading code and started asking the server questions. Three probes, against herdr 0.8.0, with a real agent working in a real pane.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Probe&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Result&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Report metadata to a pane while subscribed to &lt;code&gt;pane.updated&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;zero events&lt;/strong&gt; for that pane. &lt;code&gt;pane.report_metadata&lt;/code&gt; emits nothing at all&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Inspect &lt;code&gt;pane.agent_status_changed&lt;/code&gt; payload&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;carries only &lt;code&gt;{pane_id, agent_status}&lt;/code&gt;. No tokens&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Grep the cache for token assignment&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;exactly one site: the &lt;code&gt;session.snapshot&lt;/code&gt; seed&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Put those together and the answer is unavoidable. The daemon snapshotted once on connect, and every ring froze at whatever the snapshot happened to contain at that instant. Nothing in the protocol was ever going to push a token count at it.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;&lt;code&gt;pane.updated&lt;/code&gt; looked like the answer&#10; &lt;div id="paneupdated-looked-like-the-answer" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#paneupdated-looked-like-the-answer" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;There is an event called &lt;code&gt;pane.updated&lt;/code&gt; and it does carry tokens. It looked like the fix for about ten minutes.&lt;/p&gt;&#10;&lt;p&gt;It is not, for two reasons, and the second one is decisive.&lt;/p&gt;&#10;&lt;p&gt;It is chatty. It fires on scroll offsets and status flicker, and the measurement recorded in the source is roughly 25 events in 2.5 seconds from a single active pane. Subscribing to that to catch a number that changes once per turn is a poor trade.&lt;/p&gt;&#10;&lt;p&gt;And it does not fire for a metadata report at all. That is the case that matters. A pane whose context moved while it sat idle would simply never be announced, which is precisely the situation where you want the ring to be honest, because you are looking at a key rather than at the terminal.&lt;/p&gt;&#10;&lt;p&gt;Rejecting an event on measurement rather than on taste is worth doing explicitly. &lt;code&gt;pane.updated&lt;/code&gt; is the obvious answer, it is in the schema, and it would have shipped a ring that worked most of the time and lied when you were not watching.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Re-read, merge, do not re-seed&#10; &lt;div id="re-read-merge-do-not-re-seed" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#re-read-merge-do-not-re-seed" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;div class="not-prose diagram diagram-light"&gt;&lt;svg id="df72daf3532c27fe2light" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 722.1484375px;" viewBox="0 0 722.1484375 430" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#df72daf3532c27fe2light{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#df72daf3532c27fe2light .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#df72daf3532c27fe2light .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#df72daf3532c27fe2light .error-icon{fill:rgb(255, 255, 255);}#df72daf3532c27fe2light .error-text{fill:#000000;stroke:#000000;}#df72daf3532c27fe2light .edge-thickness-normal{stroke-width:1px;}#df72daf3532c27fe2light .edge-thickness-thick{stroke-width:3.5px;}#df72daf3532c27fe2light .edge-pattern-solid{stroke-dasharray:0;}#df72daf3532c27fe2light .edge-thickness-invisible{stroke-width:0;fill:none;}#df72daf3532c27fe2light .edge-pattern-dashed{stroke-dasharray:3;}#df72daf3532c27fe2light .edge-pattern-dotted{stroke-dasharray:2;}#df72daf3532c27fe2light .marker{fill:rgb(74, 86, 92);stroke:rgb(74, 86, 92);}#df72daf3532c27fe2light .marker.cross{stroke:rgb(74, 86, 92);}#df72daf3532c27fe2light svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#df72daf3532c27fe2light p{margin:0;}#df72daf3532c27fe2light .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#333;}#df72daf3532c27fe2light .cluster-label text{fill:#000000;}#df72daf3532c27fe2light .cluster-label span{color:#000000;}#df72daf3532c27fe2light .cluster-label span p{background-color:transparent;}#df72daf3532c27fe2light .label text,#df72daf3532c27fe2light span{fill:#333;color:#333;}#df72daf3532c27fe2light .node rect,#df72daf3532c27fe2light .node circle,#df72daf3532c27fe2light .node ellipse,#df72daf3532c27fe2light .node polygon,#df72daf3532c27fe2light .node path{fill:rgb(255, 255, 255);stroke:rgb(204, 216, 222);stroke-width:1px;}#df72daf3532c27fe2light .rough-node .label text,#df72daf3532c27fe2light .node .label text,#df72daf3532c27fe2light .image-shape .label,#df72daf3532c27fe2light .icon-shape .label{text-anchor:middle;}#df72daf3532c27fe2light .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#df72daf3532c27fe2light .rough-node .label,#df72daf3532c27fe2light .node .label,#df72daf3532c27fe2light .image-shape .label,#df72daf3532c27fe2light .icon-shape .label{text-align:center;}#df72daf3532c27fe2light .node.clickable{cursor:pointer;}#df72daf3532c27fe2light .root .anchor path{fill:rgb(74, 86, 92)!important;stroke-width:0;stroke:rgb(74, 86, 92);}#df72daf3532c27fe2light .arrowheadPath{fill:#000000;}#df72daf3532c27fe2light .edgePath .path{stroke:rgb(74, 86, 92);stroke-width:1px;}#df72daf3532c27fe2light .flowchart-link{stroke:rgb(74, 86, 92);fill:none;}#df72daf3532c27fe2light .edgeLabel{background-color:rgb(182, 240, 255);text-align:center;}#df72daf3532c27fe2light .edgeLabel p{background-color:rgb(182, 240, 255);}#df72daf3532c27fe2light .edgeLabel rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#df72daf3532c27fe2light .labelBkg{background-color:rgba(182, 240, 255, 0.5);}#df72daf3532c27fe2light .cluster rect{fill:rgb(255, 255, 255);stroke:rgb(129, 146, 154);stroke-width:1px;}#df72daf3532c27fe2light .cluster text{fill:#000000;}#df72daf3532c27fe2light .cluster span{color:#000000;}#df72daf3532c27fe2light div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:12px;background:rgb(255, 255, 255);border:1px solid rgb(129, 146, 154);border-radius:2px;pointer-events:none;z-index:100;}#df72daf3532c27fe2light .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#df72daf3532c27fe2light rect.text{fill:none;stroke-width:0;}#df72daf3532c27fe2light .icon-shape,#df72daf3532c27fe2light .image-shape{background-color:rgb(182, 240, 255);text-align:center;}#df72daf3532c27fe2light .icon-shape p,#df72daf3532c27fe2light .image-shape p{background-color:rgb(182, 240, 255);padding:2px;}#df72daf3532c27fe2light .icon-shape .label rect,#df72daf3532c27fe2light .image-shape .label rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#df72daf3532c27fe2light .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#df72daf3532c27fe2light .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#df72daf3532c27fe2light .node .neo-node{stroke:rgb(204, 216, 222);}#df72daf3532c27fe2light [data-look="neo"].node rect,#df72daf3532c27fe2light [data-look="neo"].cluster rect,#df72daf3532c27fe2light [data-look="neo"].node polygon{stroke:url(#df72daf3532c27fe2light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#df72daf3532c27fe2light [data-look="neo"].swimlane.cluster rect{filter:none;}#df72daf3532c27fe2light [data-look="neo"].node path{stroke:url(#df72daf3532c27fe2light-gradient);stroke-width:1px;}#df72daf3532c27fe2light [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#df72daf3532c27fe2light [data-look="neo"].node .neo-line path{stroke:rgb(204, 216, 222);filter:none;}#df72daf3532c27fe2light [data-look="neo"].node circle{stroke:url(#df72daf3532c27fe2light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#df72daf3532c27fe2light [data-look="neo"].node circle .state-start{fill:#000000;}#df72daf3532c27fe2light [data-look="neo"].icon-shape .icon{fill:url(#df72daf3532c27fe2light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#df72daf3532c27fe2light [data-look="neo"].icon-shape .icon-neo path{stroke:url(#df72daf3532c27fe2light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#df72daf3532c27fe2light :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="df72daf3532c27fe2light_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2light_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2light_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"&gt;&lt;path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2light_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"&gt;&lt;polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2light_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2light_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2light_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2light_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2light_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2light_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2light_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2light_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class="root"&gt;&lt;g class="clusters"&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;path d="M100.984,178L100.984,186.167C100.984,194.333,100.984,210.667,100.984,224.333C100.984,238,100.984,249,100.984,254.5L100.984,260" id="df72daf3532c27fe2light-L_C_S_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_C_S_0" data-points="W3sieCI6MTAwLjk4NDM3NSwieSI6MTc4fSx7IngiOjEwMC45ODQzNzUsInkiOjIyN30seyJ4IjoxMDAuOTg0Mzc1LCJ5IjoyNjR9XQ==" data-look="classic" marker-end="url(#df72daf3532c27fe2light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M100.984,318L100.984,322.167C100.984,326.333,100.984,334.667,127.663,344.322C154.342,353.977,207.701,364.954,234.38,370.443L261.059,375.931" id="df72daf3532c27fe2light-L_S_T1_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_S_T1_0" data-points="W3sieCI6MTAwLjk4NDM3NSwieSI6MzE4fSx7IngiOjEwMC45ODQzNzUsInkiOjM0M30seyJ4IjoyNjQuOTc2NTYyNSwieSI6Mzc2LjczNzE1NzY5MzAyMDk1fV0=" data-look="classic" marker-end="url(#df72daf3532c27fe2light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M314.547,190L314.547,196.167C314.547,202.333,314.547,214.667,317.811,226.424C321.075,238.182,327.603,249.364,330.867,254.955L334.131,260.546" id="df72daf3532c27fe2light-L_E_ST_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_ST_0" data-points="W3sieCI6MzE0LjU0Njg3NSwieSI6MTkwfSx7IngiOjMxNC41NDY4NzUsInkiOjIyN30seyJ4IjozMzYuMTQ3NTIxOTcyNjU2MjUsInkiOjI2NH1d" data-look="classic" marker-end="url(#df72daf3532c27fe2light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M580.121,62L580.121,66.167C580.121,70.333,580.121,78.667,580.121,88.333C580.121,98,580.121,109,580.121,114.5L580.121,120" id="df72daf3532c27fe2light-L_T_S2_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_T_S2_0" data-points="W3sieCI6NTgwLjEyMTA5Mzc1LCJ5Ijo2Mn0seyJ4Ijo1ODAuMTIxMDkzNzUsInkiOjg3fSx7IngiOjU4MC4xMjEwOTM3NSwieSI6MTI0fV0=" data-look="classic" marker-end="url(#df72daf3532c27fe2light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M593.395,178L597.41,186.167C601.425,194.333,609.455,210.667,613.469,224.333C617.484,238,617.484,249,617.484,254.5L617.484,260" id="df72daf3532c27fe2light-L_S2_M_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_S2_M_0" data-points="W3sieCI6NTkzLjM5NDg5MTAzNjE4NDIsInkiOjE3OH0seyJ4Ijo2MTcuNDg0Mzc1LCJ5IjoyMjd9LHsieCI6NjE3LjQ4NDM3NSwieSI6MjY0fV0=" data-look="classic" marker-end="url(#df72daf3532c27fe2light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M617.484,318L617.484,322.167C617.484,326.333,617.484,334.667,588.978,344.454C560.472,354.241,503.46,365.482,474.954,371.102L446.448,376.723" id="df72daf3532c27fe2light-L_M_T1_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_M_T1_0" data-points="W3sieCI6NjE3LjQ4NDM3NSwieSI6MzE4fSx7IngiOjYxNy40ODQzNzUsInkiOjM0M30seyJ4Ijo0NDIuNTIzNDM3NSwieSI6Mzc3LjQ5NjcxMTg5MDUxNDg2fV0=" data-look="classic" marker-end="url(#df72daf3532c27fe2light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M541.268,178L529.517,186.167C517.765,194.333,494.261,210.667,471.645,224.684C449.029,238.701,427.3,250.402,416.435,256.253L405.571,262.103" id="df72daf3532c27fe2light-L_S2_ST_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_S2_ST_0" data-points="W3sieCI6NTQxLjI2ODM0OTA5NTM5NDgsInkiOjE3OH0seyJ4Ijo0NzAuNzU3ODEyNSwieSI6MjI3fSx7IngiOjQwMi4wNDkwMTEyMzA0Njg3NSwieSI6MjY0fV0=" data-look="classic" marker-end="url(#df72daf3532c27fe2light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_C_S_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_S_T1_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_E_ST_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_T_S2_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_S2_M_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_M_T1_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(473.97144, 224.76675)"&gt;&lt;g class="label" data-id="L_S2_ST_0" transform="translate(-54.7265625, -12)"&gt;&lt;foreignObject width="109.453125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;never re-seeds&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="df72daf3532c27fe2light-flowchart-C-0" data-look="classic" transform="translate(100.984375, 151)"&gt;&lt;rect class="basic label-container" style="" x="-59.4765625" y="-27" width="118.953125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-29.4765625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="58.953125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;connect&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2light-flowchart-S-1" data-look="classic" transform="translate(100.984375, 291)"&gt;&lt;rect class="basic label-container" style="" x="-92.984375" y="-27" width="185.96875" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-62.984375, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="125.96875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;session.snapshot&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2light-flowchart-T1-3" data-look="classic" transform="translate(353.75, 395)"&gt;&lt;rect class="basic label-container" style="" x="-88.7734375" y="-27" width="177.546875" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-58.7734375, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="117.546875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;tokens assigned&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2light-flowchart-E-4" data-look="classic" transform="translate(314.546875, 151)"&gt;&lt;rect class="basic label-container" style="" x="-102.6015625" y="-39" width="205.203125" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-72.6015625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="145.203125" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;pushed events&lt;br&gt;pane_closed, status&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2light-flowchart-ST-5" data-look="classic" transform="translate(351.91015625, 291)"&gt;&lt;rect class="basic label-container" style="" x="-72.0625" y="-27" width="144.125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-42.0625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="84.125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;cache state&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2light-flowchart-T-6" data-look="classic" transform="translate(580.12109375, 35)"&gt;&lt;rect class="basic label-container" style="" x="-63.2421875" y="-27" width="126.484375" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-33.2421875, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="66.484375" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;10s timer&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2light-flowchart-S2-7" data-look="classic" transform="translate(580.12109375, 151)"&gt;&lt;rect class="basic label-container" style="" x="-85.09375" y="-27" width="170.1875" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-55.09375, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="110.1875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;snapshot again&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2light-flowchart-M-9" data-look="classic" transform="translate(617.484375, 291)"&gt;&lt;rect class="basic label-container" style="" x="-96.6640625" y="-27" width="193.328125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-66.6640625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="133.328125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;merge tokens only&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id="df72daf3532c27fe2light-drop-shadow" height="130%" width="130%"&gt;&lt;feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id="df72daf3532c27fe2light-drop-shadow-small" height="150%" width="150%"&gt;&lt;feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;linearGradient id="df72daf3532c27fe2light-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"&gt;&lt;stop offset="0%" stop-color="rgb(204, 216, 222)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;stop offset="100%" stop-color="rgb(28, 209, 255)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;/linearGradient&gt;&lt;/svg&gt;&lt;/div&gt;&#10; &lt;div class="not-prose diagram diagram-dark"&gt;&lt;svg id="df72daf3532c27fe2dark" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 722.1484375px;" viewBox="0 0 722.1484375 430" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#df72daf3532c27fe2dark{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#df72daf3532c27fe2dark .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#df72daf3532c27fe2dark .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#df72daf3532c27fe2dark .error-icon{fill:#a44141;}#df72daf3532c27fe2dark .error-text{fill:#ddd;stroke:#ddd;}#df72daf3532c27fe2dark .edge-thickness-normal{stroke-width:1px;}#df72daf3532c27fe2dark .edge-thickness-thick{stroke-width:3.5px;}#df72daf3532c27fe2dark .edge-pattern-solid{stroke-dasharray:0;}#df72daf3532c27fe2dark .edge-thickness-invisible{stroke-width:0;fill:none;}#df72daf3532c27fe2dark .edge-pattern-dashed{stroke-dasharray:3;}#df72daf3532c27fe2dark .edge-pattern-dotted{stroke-dasharray:2;}#df72daf3532c27fe2dark .marker{fill:lightgrey;stroke:lightgrey;}#df72daf3532c27fe2dark .marker.cross{stroke:lightgrey;}#df72daf3532c27fe2dark svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#df72daf3532c27fe2dark p{margin:0;}#df72daf3532c27fe2dark .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#ccc;}#df72daf3532c27fe2dark .cluster-label text{fill:#F9FFFE;}#df72daf3532c27fe2dark .cluster-label span{color:#F9FFFE;}#df72daf3532c27fe2dark .cluster-label span p{background-color:transparent;}#df72daf3532c27fe2dark .label text,#df72daf3532c27fe2dark span{fill:#ccc;color:#ccc;}#df72daf3532c27fe2dark .node rect,#df72daf3532c27fe2dark .node circle,#df72daf3532c27fe2dark .node ellipse,#df72daf3532c27fe2dark .node polygon,#df72daf3532c27fe2dark .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#df72daf3532c27fe2dark .rough-node .label text,#df72daf3532c27fe2dark .node .label text,#df72daf3532c27fe2dark .image-shape .label,#df72daf3532c27fe2dark .icon-shape .label{text-anchor:middle;}#df72daf3532c27fe2dark .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#df72daf3532c27fe2dark .rough-node .label,#df72daf3532c27fe2dark .node .label,#df72daf3532c27fe2dark .image-shape .label,#df72daf3532c27fe2dark .icon-shape .label{text-align:center;}#df72daf3532c27fe2dark .node.clickable{cursor:pointer;}#df72daf3532c27fe2dark .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#df72daf3532c27fe2dark .arrowheadPath{fill:lightgrey;}#df72daf3532c27fe2dark .edgePath .path{stroke:lightgrey;stroke-width:1px;}#df72daf3532c27fe2dark .flowchart-link{stroke:lightgrey;fill:none;}#df72daf3532c27fe2dark .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#df72daf3532c27fe2dark .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#df72daf3532c27fe2dark .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#df72daf3532c27fe2dark .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#df72daf3532c27fe2dark .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#df72daf3532c27fe2dark .cluster text{fill:#F9FFFE;}#df72daf3532c27fe2dark .cluster span{color:#F9FFFE;}#df72daf3532c27fe2dark div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#df72daf3532c27fe2dark .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#df72daf3532c27fe2dark rect.text{fill:none;stroke-width:0;}#df72daf3532c27fe2dark .icon-shape,#df72daf3532c27fe2dark .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#df72daf3532c27fe2dark .icon-shape p,#df72daf3532c27fe2dark .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#df72daf3532c27fe2dark .icon-shape .label rect,#df72daf3532c27fe2dark .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#df72daf3532c27fe2dark .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#df72daf3532c27fe2dark .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#df72daf3532c27fe2dark .node .neo-node{stroke:#ccc;}#df72daf3532c27fe2dark [data-look="neo"].node rect,#df72daf3532c27fe2dark [data-look="neo"].cluster rect,#df72daf3532c27fe2dark [data-look="neo"].node polygon{stroke:url(#df72daf3532c27fe2dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#df72daf3532c27fe2dark [data-look="neo"].swimlane.cluster rect{filter:none;}#df72daf3532c27fe2dark [data-look="neo"].node path{stroke:url(#df72daf3532c27fe2dark-gradient);stroke-width:1px;}#df72daf3532c27fe2dark [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#df72daf3532c27fe2dark [data-look="neo"].node .neo-line path{stroke:#ccc;filter:none;}#df72daf3532c27fe2dark [data-look="neo"].node circle{stroke:url(#df72daf3532c27fe2dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#df72daf3532c27fe2dark [data-look="neo"].node circle .state-start{fill:#000000;}#df72daf3532c27fe2dark [data-look="neo"].icon-shape .icon{fill:url(#df72daf3532c27fe2dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#df72daf3532c27fe2dark [data-look="neo"].icon-shape .icon-neo path{stroke:url(#df72daf3532c27fe2dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#df72daf3532c27fe2dark :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="df72daf3532c27fe2dark_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2dark_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2dark_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"&gt;&lt;path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2dark_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"&gt;&lt;polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2dark_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2dark_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2dark_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2dark_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2dark_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2dark_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2dark_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="df72daf3532c27fe2dark_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class="root"&gt;&lt;g class="clusters"&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;path d="M100.984,178L100.984,186.167C100.984,194.333,100.984,210.667,100.984,224.333C100.984,238,100.984,249,100.984,254.5L100.984,260" id="df72daf3532c27fe2dark-L_C_S_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_C_S_0" data-points="W3sieCI6MTAwLjk4NDM3NSwieSI6MTc4fSx7IngiOjEwMC45ODQzNzUsInkiOjIyN30seyJ4IjoxMDAuOTg0Mzc1LCJ5IjoyNjR9XQ==" data-look="classic" marker-end="url(#df72daf3532c27fe2dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M100.984,318L100.984,322.167C100.984,326.333,100.984,334.667,127.663,344.322C154.342,353.977,207.701,364.954,234.38,370.443L261.059,375.931" id="df72daf3532c27fe2dark-L_S_T1_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_S_T1_0" data-points="W3sieCI6MTAwLjk4NDM3NSwieSI6MzE4fSx7IngiOjEwMC45ODQzNzUsInkiOjM0M30seyJ4IjoyNjQuOTc2NTYyNSwieSI6Mzc2LjczNzE1NzY5MzAyMDk1fV0=" data-look="classic" marker-end="url(#df72daf3532c27fe2dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M314.547,190L314.547,196.167C314.547,202.333,314.547,214.667,317.811,226.424C321.075,238.182,327.603,249.364,330.867,254.955L334.131,260.546" id="df72daf3532c27fe2dark-L_E_ST_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_ST_0" data-points="W3sieCI6MzE0LjU0Njg3NSwieSI6MTkwfSx7IngiOjMxNC41NDY4NzUsInkiOjIyN30seyJ4IjozMzYuMTQ3NTIxOTcyNjU2MjUsInkiOjI2NH1d" data-look="classic" marker-end="url(#df72daf3532c27fe2dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M580.121,62L580.121,66.167C580.121,70.333,580.121,78.667,580.121,88.333C580.121,98,580.121,109,580.121,114.5L580.121,120" id="df72daf3532c27fe2dark-L_T_S2_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_T_S2_0" data-points="W3sieCI6NTgwLjEyMTA5Mzc1LCJ5Ijo2Mn0seyJ4Ijo1ODAuMTIxMDkzNzUsInkiOjg3fSx7IngiOjU4MC4xMjEwOTM3NSwieSI6MTI0fV0=" data-look="classic" marker-end="url(#df72daf3532c27fe2dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M593.395,178L597.41,186.167C601.425,194.333,609.455,210.667,613.469,224.333C617.484,238,617.484,249,617.484,254.5L617.484,260" id="df72daf3532c27fe2dark-L_S2_M_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_S2_M_0" data-points="W3sieCI6NTkzLjM5NDg5MTAzNjE4NDIsInkiOjE3OH0seyJ4Ijo2MTcuNDg0Mzc1LCJ5IjoyMjd9LHsieCI6NjE3LjQ4NDM3NSwieSI6MjY0fV0=" data-look="classic" marker-end="url(#df72daf3532c27fe2dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M617.484,318L617.484,322.167C617.484,326.333,617.484,334.667,588.978,344.454C560.472,354.241,503.46,365.482,474.954,371.102L446.448,376.723" id="df72daf3532c27fe2dark-L_M_T1_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_M_T1_0" data-points="W3sieCI6NjE3LjQ4NDM3NSwieSI6MzE4fSx7IngiOjYxNy40ODQzNzUsInkiOjM0M30seyJ4Ijo0NDIuNTIzNDM3NSwieSI6Mzc3LjQ5NjcxMTg5MDUxNDg2fV0=" data-look="classic" marker-end="url(#df72daf3532c27fe2dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M541.268,178L529.517,186.167C517.765,194.333,494.261,210.667,471.645,224.684C449.029,238.701,427.3,250.402,416.435,256.253L405.571,262.103" id="df72daf3532c27fe2dark-L_S2_ST_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_S2_ST_0" data-points="W3sieCI6NTQxLjI2ODM0OTA5NTM5NDgsInkiOjE3OH0seyJ4Ijo0NzAuNzU3ODEyNSwieSI6MjI3fSx7IngiOjQwMi4wNDkwMTEyMzA0Njg3NSwieSI6MjY0fV0=" data-look="classic" marker-end="url(#df72daf3532c27fe2dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_C_S_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_S_T1_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_E_ST_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_T_S2_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_S2_M_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_M_T1_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(473.97144, 224.76675)"&gt;&lt;g class="label" data-id="L_S2_ST_0" transform="translate(-54.7265625, -12)"&gt;&lt;foreignObject width="109.453125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;never re-seeds&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="df72daf3532c27fe2dark-flowchart-C-0" data-look="classic" transform="translate(100.984375, 151)"&gt;&lt;rect class="basic label-container" style="" x="-59.4765625" y="-27" width="118.953125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-29.4765625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="58.953125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;connect&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2dark-flowchart-S-1" data-look="classic" transform="translate(100.984375, 291)"&gt;&lt;rect class="basic label-container" style="" x="-92.984375" y="-27" width="185.96875" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-62.984375, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="125.96875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;session.snapshot&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2dark-flowchart-T1-3" data-look="classic" transform="translate(353.75, 395)"&gt;&lt;rect class="basic label-container" style="" x="-88.7734375" y="-27" width="177.546875" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-58.7734375, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="117.546875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;tokens assigned&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2dark-flowchart-E-4" data-look="classic" transform="translate(314.546875, 151)"&gt;&lt;rect class="basic label-container" style="" x="-102.6015625" y="-39" width="205.203125" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-72.6015625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="145.203125" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;pushed events&lt;br&gt;pane_closed, status&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2dark-flowchart-ST-5" data-look="classic" transform="translate(351.91015625, 291)"&gt;&lt;rect class="basic label-container" style="" x="-72.0625" y="-27" width="144.125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-42.0625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="84.125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;cache state&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2dark-flowchart-T-6" data-look="classic" transform="translate(580.12109375, 35)"&gt;&lt;rect class="basic label-container" style="" x="-63.2421875" y="-27" width="126.484375" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-33.2421875, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="66.484375" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;10s timer&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2dark-flowchart-S2-7" data-look="classic" transform="translate(580.12109375, 151)"&gt;&lt;rect class="basic label-container" style="" x="-85.09375" y="-27" width="170.1875" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-55.09375, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="110.1875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;snapshot again&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="df72daf3532c27fe2dark-flowchart-M-9" data-look="classic" transform="translate(617.484375, 291)"&gt;&lt;rect class="basic label-container" style="" x="-96.6640625" y="-27" width="193.328125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-66.6640625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="133.328125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;merge tokens only&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id="df72daf3532c27fe2dark-drop-shadow" height="130%" width="130%"&gt;&lt;feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#FFFFFF"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id="df72daf3532c27fe2dark-drop-shadow-small" height="150%" width="150%"&gt;&lt;feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#FFFFFF"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;linearGradient id="df72daf3532c27fe2dark-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"&gt;&lt;stop offset="0%" stop-color="#cccccc" stop-opacity="1"&gt;&lt;/stop&gt;&lt;stop offset="100%" stop-color="hsl(180, 0%, 18.3529411765%)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;/linearGradient&gt;&lt;/svg&gt;&lt;/div&gt;&#10;&lt;p&gt;The fix is a periodic snapshot on a 10-second default, and the merge is the load-bearing part:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ts" data-lang="ts"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt;/** Token re-read period; 0 disables it. Default 10s — roughly&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; * twice Claude Code&amp;#39;s default statusline refresh, so the donut&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cm"&gt; * trails the real percentage by at most one report. */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;tokensRefreshMs?&lt;/span&gt;: &lt;span class="kt"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// ...&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tokensRefreshMs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;opts&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tokensRefreshMs&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="nx"&gt;_000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;The timer&amp;rsquo;s snapshot can be &lt;em&gt;older&lt;/em&gt; than pushed events the cache has already applied. Re-seeding from it would let a stale read undo a pane close that a newer event had already processed, resurrecting a pane that is gone. There is a test pinning exactly that, and its comment says why:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ts" data-lang="ts"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// The refresh re-reads a full snapshot but must merge tokens ONLY:&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// re-seeding would let a stale snapshot undo a close that a newer&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// pushed event already applied.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;One correction to my own framing, because I described this as &amp;ldquo;tokens only&amp;rdquo; for a while and it stopped being true. The merge now also carries the &lt;code&gt;focused&lt;/code&gt; flag, deliberately and with its own justification comment. If you go looking at that function expecting the name to be the specification, it will not be.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Lessons&#10; &lt;div id="lessons" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#lessons" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A suspiciously round number in a noisy display means the display is not reading anything. Zero says &amp;ldquo;nothing arrived&amp;rdquo;, and a plausible number says &amp;ldquo;this works&amp;rdquo;. Round says &amp;ldquo;orphan&amp;rdquo;.&lt;/li&gt;&#10;&lt;li&gt;Silent-by-design is right for a statusline and it removes your only failure signal. A wrong field name in a script built never to break a prompt produces no error, no output, and no report, on every turn, indefinitely.&lt;/li&gt;&#10;&lt;li&gt;When a correct fix produces no visible change, consider that you fixed one of two bugs before concluding you fixed none. Two independent causes of one cosmetic symptom is the case where evidence points backwards.&lt;/li&gt;&#10;&lt;li&gt;Probe the live server instead of reading its schema. &amp;ldquo;Does this call emit an event at all&amp;rdquo; is a question a schema cannot answer and a five-minute experiment can.&lt;/li&gt;&#10;&lt;li&gt;Reject the obvious event on measurement, not taste, and write down the measurement. &lt;code&gt;pane.updated&lt;/code&gt; carried the field I wanted and did not fire for the case I needed.&lt;/li&gt;&#10;&lt;li&gt;A periodic re-read must merge, never re-seed. A refresh that is older than the events you have already applied will happily undo them.&lt;/li&gt;&#10;&lt;li&gt;If a fallback exists, test the ordering, not just the fallback. Otherwise it is a second way to be quietly wrong.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h2 class="relative group"&gt;References&#10; &lt;div id="references" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#references" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Claude Code statusline docs, source of truth for the payload schema: &lt;a href="https://code.claude.com/docs/en/statusline" target="_blank" rel="noreferrer"&gt;https://code.claude.com/docs/en/statusline&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;The post that printed the correct field name three months before I got it wrong: &lt;a href="https://nick-liu.com/posts/statusline-side-channel/" &gt;The Claude Code statusline is a per-turn telemetry side channel&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;The rebuild this ring belongs to: &lt;a href="https://nick-liu.com/posts/herddeck-substrate-bet/" &gt;I deleted six subsystems by swapping one dependency.&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;HerdDeck statusline delegate: &lt;a href="https://github.com/nickboy/herddeck/blob/main/scripts/herddeck-statusline.sh" target="_blank" rel="noreferrer"&gt;&lt;code&gt;scripts/herddeck-statusline.sh&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;HerdDeck state cache, including &lt;code&gt;mergeTokensFromSnapshot&lt;/code&gt;: &lt;a href="https://github.com/nickboy/herddeck/blob/main/packages/daemon/src/stateCache.ts" target="_blank" rel="noreferrer"&gt;&lt;code&gt;packages/daemon/src/stateCache.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;HerdDeck target monitor, the refresh timer: &lt;a href="https://github.com/nickboy/herddeck/blob/main/packages/daemon/src/herdr/monitor.ts" target="_blank" rel="noreferrer"&gt;&lt;code&gt;packages/daemon/src/herdr/monitor.ts&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</content:encoded></item><item><title>Five wrong answers in one day. One nearly deleted 10 GB of coursework.</title><link>https://nick-liu.com/posts/null-is-not-no/</link><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><author>nickboy@users.noreply.github.com (Nick Liu)</author><guid>https://nick-liu.com/posts/null-is-not-no/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;`mdls kMDItemLastUsedDate` returned `(null)` for Microsoft Word. I read the null as "never opened" and put Office on a removal list: 10.1 GB, four apps. One last check saved me. My home directory held 150 Office documents, a conference presentation edited two weeks earlier, and a PowerPoint lock file, which only exists while the file is open. The proof that the null was misleading had been sitting in my own diagnostic report for an hour.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;That was one of five. In a single day of hardening this machine, five different&#10;tools told me things that were not true. None of the answers looked like an&#10;error. Each one arrived as a clean, confident finding, and under each one a&#10;check had quietly failed or asked the wrong question. All five had the same&#10;shape underneath. Once I could name the shape, I stopped falling for it.&lt;/p&gt;</description><content:encoded>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;`mdls kMDItemLastUsedDate` returned `(null)` for Microsoft Word. I read the null as "never opened" and put Office on a removal list: 10.1 GB, four apps. One last check saved me. My home directory held 150 Office documents, a conference presentation edited two weeks earlier, and a PowerPoint lock file, which only exists while the file is open. The proof that the null was misleading had been sitting in my own diagnostic report for an hour.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;That was one of five. In a single day of hardening this machine, five different&#10;tools told me things that were not true. None of the answers looked like an&#10;error. Each one arrived as a clean, confident finding, and under each one a&#10;check had quietly failed or asked the wrong question. All five had the same&#10;shape underneath. Once I could name the shape, I stopped falling for it.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Case 1: null means &amp;ldquo;I don&amp;rsquo;t know&amp;rdquo;, not &amp;ldquo;no&amp;rdquo;&#10; &lt;div id="case-1-null-means-i-dont-know-not-no" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#case-1-null-means-i-dont-know-not-no" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The plan was simple: free disk space by removing apps that had never been used.&#10;The evidence came from Spotlight metadata:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; mdls -name kMDItemLastUsedDate -raw &lt;span class="s2"&gt;&amp;#34;/Applications/Google Chrome.app&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;2026-08-15 20:18:18 +0000&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; mdls -name kMDItemLastUsedDate -raw &lt;span class="s2"&gt;&amp;#34;/Applications/Microsoft Word.app&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;(null)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Chrome had a date. Word did not. The conclusion looked solid, because the same&#10;command told the two apps apart: Chrome is in use, Word is not.&lt;/p&gt;&#10;&lt;p&gt;It was not solid. &lt;code&gt;kMDItemLastUsedDate&lt;/code&gt; is null when an app has never been&#10;opened, &lt;em&gt;and&lt;/em&gt; when Spotlight&amp;rsquo;s metadata store has been reset. My store had been&#10;reset. I even knew that, because four hours earlier I had written this line&#10;into my own diagnostic report:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;12:14:16.629 lsd _CSStoreCreateWithURL failed with error ... &amp;#34;The file&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; com.apple.LaunchServices-33554481-v2.csstore couldn&amp;#39;t be opened&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; because there is no such file.&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;The LaunchServices database was rebuilding at boot. In one section of my&#10;report, this was a strange log line. In another section, its consequences&#10;became hard evidence for deletion. I never connected the two.&lt;/p&gt;&#10;&lt;p&gt;What answers &amp;ldquo;is this app still needed&amp;rdquo; is user data:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; find ~/Documents ~/Desktop ~/Downloads -iname &lt;span class="s1"&gt;&amp;#39;*.docx&amp;#39;&lt;/span&gt; -o -iname &lt;span class="s1"&gt;&amp;#39;*.pptx&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; wc -l&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; 150&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; ls -t ~/Documents/**/*.pptx &lt;span class="p"&gt;|&lt;/span&gt; head -3&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;cs6460-final-GT.pptx&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;~$cs6460-milestone2-GT.pptx # lock file: exists only while the file is open&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;cs6460-milestone2-GT.pptx&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Documents, lock files, container contents. Things a person made on purpose. An&#10;index field is different: the OS is free to throw it away and rebuild it, and&#10;while that happens the field tells you nothing.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Case 2: a query that never ran is not a query that found nothing&#10; &lt;div id="case-2-a-query-that-never-ran-is-not-a-query-that-found-nothing" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#case-2-a-query-that-never-ran-is-not-a-query-that-found-nothing" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;My environment audit reported &amp;ldquo;no git remotes configured&amp;rdquo; for a repository&#10;that had pushed four signed commits and opened a pull request earlier the same&#10;day.&lt;/p&gt;&#10;&lt;p&gt;The check behind that sentence was this:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; ~ &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git remote -v&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;fatal: not a git repository (or any of the parent directories): .git&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;These dotfiles are managed with &lt;a href="https://yadm.io/" target="_blank" rel="noreferrer"&gt;yadm&lt;/a&gt;, and yadm keeps its&#10;bare repository in &lt;code&gt;~/.local/share/yadm/repo.git&lt;/code&gt;. &lt;code&gt;$HOME&lt;/code&gt; is the work tree,&#10;not a git directory. Plain &lt;code&gt;git&lt;/code&gt; in &lt;code&gt;$HOME&lt;/code&gt; cannot answer the question at all.&#10;Then &amp;ldquo;cannot answer&amp;rdquo; got recorded as &amp;ldquo;the answer is none&amp;rdquo;.&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; yadm remote -v&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;origin git@github.com:nickboy/dotfiles.git (fetch)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;origin git@github.com:nickboy/dotfiles.git (push)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;The tool did not lie. &lt;code&gt;fatal: not a git repository&lt;/code&gt; and empty output are two&#10;different results, but the code reading them treated both as &amp;ldquo;nothing there&amp;rdquo;.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Case 3: a 404 from the wrong endpoint&#10; &lt;div id="case-3-a-404-from-the-wrong-endpoint" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#case-3-a-404-from-the-wrong-endpoint" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Same audit, same day: &amp;ldquo;branch protection could not be determined&amp;rdquo;. The check&#10;had asked the classic API:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; gh api repos/nickboy/dotfiles/branches/master/protection&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;{&amp;#34;message&amp;#34;:&amp;#34;Branch not protected&amp;#34;,&amp;#34;status&amp;#34;:&amp;#34;404&amp;#34;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;That is a real 404, and the message reads like a finding. But GitHub has two&#10;protection mechanisms, and this repo uses the newer one:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; gh api repos/nickboy/dotfiles/rulesets --jq &lt;span class="s1"&gt;&amp;#39;.[] | &amp;#34;\(.name) \(.enforcement)&amp;#34;&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;Main Branch Protection active&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;A branch protected by a &lt;strong&gt;ruleset&lt;/strong&gt; returns 404 from &lt;code&gt;/branches/*/protection&lt;/code&gt;.&#10;Any tool that only checks the old endpoint will report every ruleset-protected&#10;branch as unprotected, in a sentence that sounds like it actually checked.&lt;/p&gt;&#10;&lt;p&gt;Asking the right endpoint paid off twice, because the true answer held a&#10;detail the false one would have hidden. The ruleset requires a pull request&#10;and four status checks, with no bypass actors. But&#10;&lt;code&gt;required_approving_review_count&lt;/code&gt; is &lt;code&gt;0&lt;/code&gt;, and there is no signature&#10;requirement. &amp;ldquo;Protected&amp;rdquo; here means &amp;ldquo;must go through a PR and CI&amp;rdquo;. It does not&#10;mean &amp;ldquo;must be reviewed&amp;rdquo;. My signed commits are a habit; the server never&#10;checks them. Recording how strong a control is beats recording that one&#10;exists.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Case 4: the number was real, the units were not&#10; &lt;div id="case-4-the-number-was-real-the-units-were-not" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#case-4-the-number-was-real-the-units-were-not" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;My health check started with a headline number: &lt;code&gt;WindowServer&lt;/code&gt; was eating&#10;62.4% CPU, the biggest single CPU user on the machine. The number came from&#10;&lt;code&gt;ps&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; ps -Ao pid,%cpu,comm &lt;span class="p"&gt;|&lt;/span&gt; grep WindowServer&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; 436 62.4 .../SkyLight.framework/Resources/WindowServer&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;On macOS, &lt;code&gt;ps %cpu&lt;/code&gt; is a &lt;strong&gt;decaying average&lt;/strong&gt;. It leans hard toward the last&#10;minute, not toward the life of the process. The cumulative figure is CPU time&#10;divided by elapsed time:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; ps -o &lt;span class="nv"&gt;time&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;,etime&lt;span class="o"&gt;=&lt;/span&gt; -p &lt;span class="m"&gt;436&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; 26:03.57 01:02:14 # 1563s CPU / 3734s elapsed = 41.9%&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;So 42%, not 62%. The next morning brought a bigger correction, after sixteen&#10;hours of normal use:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WindowServer 6.6% (16.4 hours)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ghostty 3.3% (16.4 hours)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Six point six. My original 62% came from an hour in which &lt;em&gt;I&lt;/em&gt; was the load. I&#10;was running diagnostics nonstop, with Activity Monitor open and a backup&#10;copying files in the background. I had measured the observer and blamed the&#10;system. The whole &amp;ldquo;WindowServer is the problem&amp;rdquo; section of that report was an&#10;accident of timing.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Case 5: the benchmark that measured nothing happening&#10; &lt;div id="case-5-the-benchmark-that-measured-nothing-happening" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#case-5-the-benchmark-that-measured-nothing-happening" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;ll&lt;/code&gt; felt slow. The alias behind it is &lt;code&gt;eza&lt;/code&gt; with a long list of flags,&#10;including &lt;code&gt;--git&lt;/code&gt;. I benchmarked it and got a number that ended the&#10;discussion:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;eza --all --long --git --icons ... 8.4 ms&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Eight milliseconds. Nothing to fix. Except the same command, in the same&#10;directory, also reported this:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; eza --all --long --git ... ~/Downloads &lt;span class="p"&gt;|&lt;/span&gt; wc -lc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; 0 0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Zero lines, zero bytes, exit 0, and 128 ms of system time. The benchmark had&#10;run inside the sandboxed shell my coding agent uses, and that sandbox blocks&#10;the metadata and git reads that &lt;code&gt;--long --git&lt;/code&gt; needs. &lt;code&gt;eza&lt;/code&gt; was making&#10;syscalls, and the sandbox refused every one of them. My benchmark timed the&#10;result with great precision: a program doing nothing, very fast.&lt;/p&gt;&#10;&lt;p&gt;I re-ran everything in a real terminal:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;directory&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;size&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;with &lt;code&gt;--git&lt;/code&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;without&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;nickboy.github.io&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;47 entries, &lt;strong&gt;263 tracked&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;68.8 ms&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;13.9 ms&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;claudedeck&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;125 tracked&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;49.0 ms&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;20.8 ms&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;Downloads&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;622 entries, &lt;strong&gt;not a repo&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;49.6 ms&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;39.8 ms&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;div class="chart"&gt;&#10; &lt;canvas data-chart="&#10;type: &amp;#39;bar&amp;#39;,&#10;data: {&#10; labels: [&amp;#39;nickboy.github.io (47 entries, 263 tracked)&amp;#39;, &amp;#39;claudedeck (125 tracked)&amp;#39;, &amp;#39;Downloads (622 entries, not a repo)&amp;#39;],&#10; datasets: [{&#10; label: &amp;#39;with --git&amp;#39;,&#10; data: [68.8, 49.0, 49.6],&#10; backgroundColor: &amp;#39;#6366f1&amp;#39;,&#10; borderRadius: 4,&#10; categoryPercentage: 0.7,&#10; barPercentage: 0.9&#10; }, {&#10; label: &amp;#39;without --git&amp;#39;,&#10; data: [13.9, 20.8, 39.8],&#10; backgroundColor: &amp;#39;#d97706&amp;#39;,&#10; borderRadius: 4,&#10; categoryPercentage: 0.7,&#10; barPercentage: 0.9&#10; }]&#10;},&#10;options: {&#10; indexAxis: &amp;#39;y&amp;#39;,&#10; responsive: true,&#10; plugins: {&#10; title: { display: true, text: &amp;#39;eza wall time by directory, same flags, real terminal&amp;#39;, color: &amp;#39;#9ca3af&amp;#39;, font: { size: 15 } },&#10; legend: { display: true, labels: { color: &amp;#39;#9ca3af&amp;#39; } }&#10; },&#10; scales: {&#10; x: { ticks: { color: &amp;#39;#9ca3af&amp;#39; }, grid: { color: &amp;#39;rgba(156, 163, 175, 0.15)&amp;#39; }, title: { display: true, text: &amp;#39;milliseconds&amp;#39;, color: &amp;#39;#9ca3af&amp;#39; } },&#10; y: { ticks: { color: &amp;#39;#9ca3af&amp;#39; }, grid: { display: false } }&#10; }&#10;}&#10;"&gt;&lt;/canvas&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;Inside a repo, &lt;code&gt;--git&lt;/code&gt; costs 2x to 5x, and the cost follows the &lt;strong&gt;repository&lt;/strong&gt;,&#10;not the directory being listed: &lt;code&gt;eza&lt;/code&gt; resolves git status for every tracked&#10;file to fill one column. Listing a 47-entry folder inside a 263-file repo pays&#10;for all 263 files. My everyday alias paid that price in every project&#10;directory, which is exactly where I type it most.&lt;/p&gt;&#10;&lt;p&gt;The flag moved to an opt-in alias, &lt;code&gt;llg&lt;/code&gt;. It also came out of &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;l&lt;/code&gt;, &lt;code&gt;lt&lt;/code&gt;&#10;and &lt;code&gt;tree&lt;/code&gt; completely, because the git column only renders in long view. For&#10;those four, the output is byte-identical with and without the flag. I verified&#10;that instead of assuming it:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt;eza --git ... &lt;span class="p"&gt;|&lt;/span&gt; md5&lt;span class="k"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt;eza ... &lt;span class="p"&gt;|&lt;/span&gt; md5&lt;span class="k"&gt;)&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;no-op&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;no-op&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Dead config, carried for months, costing a git query on every call.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The common shape&#10; &lt;div id="the-common-shape" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-common-shape" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Five cases, one sentence:&lt;/p&gt;&#10;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;A query that failed and a query that found nothing are different results.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&lt;p&gt;Every case was a tool reporting an absence. In none of them had anyone checked&#10;whether the question ever reached the thing it was asking about.&lt;/p&gt;&#10;&lt;div class="not-prose diagram diagram-light"&gt;&lt;svg id="d485109fa288d8dcflight" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 625.328125px;" viewBox="0 0 625.328125 676" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#d485109fa288d8dcflight{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#d485109fa288d8dcflight .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#d485109fa288d8dcflight .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#d485109fa288d8dcflight .error-icon{fill:rgb(255, 255, 255);}#d485109fa288d8dcflight .error-text{fill:#000000;stroke:#000000;}#d485109fa288d8dcflight .edge-thickness-normal{stroke-width:1px;}#d485109fa288d8dcflight .edge-thickness-thick{stroke-width:3.5px;}#d485109fa288d8dcflight .edge-pattern-solid{stroke-dasharray:0;}#d485109fa288d8dcflight .edge-thickness-invisible{stroke-width:0;fill:none;}#d485109fa288d8dcflight .edge-pattern-dashed{stroke-dasharray:3;}#d485109fa288d8dcflight .edge-pattern-dotted{stroke-dasharray:2;}#d485109fa288d8dcflight .marker{fill:rgb(74, 86, 92);stroke:rgb(74, 86, 92);}#d485109fa288d8dcflight .marker.cross{stroke:rgb(74, 86, 92);}#d485109fa288d8dcflight svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#d485109fa288d8dcflight p{margin:0;}#d485109fa288d8dcflight .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#333;}#d485109fa288d8dcflight .cluster-label text{fill:#000000;}#d485109fa288d8dcflight .cluster-label span{color:#000000;}#d485109fa288d8dcflight .cluster-label span p{background-color:transparent;}#d485109fa288d8dcflight .label text,#d485109fa288d8dcflight span{fill:#333;color:#333;}#d485109fa288d8dcflight .node rect,#d485109fa288d8dcflight .node circle,#d485109fa288d8dcflight .node ellipse,#d485109fa288d8dcflight .node polygon,#d485109fa288d8dcflight .node path{fill:rgb(255, 255, 255);stroke:rgb(204, 216, 222);stroke-width:1px;}#d485109fa288d8dcflight .rough-node .label text,#d485109fa288d8dcflight .node .label text,#d485109fa288d8dcflight .image-shape .label,#d485109fa288d8dcflight .icon-shape .label{text-anchor:middle;}#d485109fa288d8dcflight .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#d485109fa288d8dcflight .rough-node .label,#d485109fa288d8dcflight .node .label,#d485109fa288d8dcflight .image-shape .label,#d485109fa288d8dcflight .icon-shape .label{text-align:center;}#d485109fa288d8dcflight .node.clickable{cursor:pointer;}#d485109fa288d8dcflight .root .anchor path{fill:rgb(74, 86, 92)!important;stroke-width:0;stroke:rgb(74, 86, 92);}#d485109fa288d8dcflight .arrowheadPath{fill:#000000;}#d485109fa288d8dcflight .edgePath .path{stroke:rgb(74, 86, 92);stroke-width:1px;}#d485109fa288d8dcflight .flowchart-link{stroke:rgb(74, 86, 92);fill:none;}#d485109fa288d8dcflight .edgeLabel{background-color:rgb(182, 240, 255);text-align:center;}#d485109fa288d8dcflight .edgeLabel p{background-color:rgb(182, 240, 255);}#d485109fa288d8dcflight .edgeLabel rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#d485109fa288d8dcflight .labelBkg{background-color:rgba(182, 240, 255, 0.5);}#d485109fa288d8dcflight .cluster rect{fill:rgb(255, 255, 255);stroke:rgb(129, 146, 154);stroke-width:1px;}#d485109fa288d8dcflight .cluster text{fill:#000000;}#d485109fa288d8dcflight .cluster span{color:#000000;}#d485109fa288d8dcflight div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:12px;background:rgb(255, 255, 255);border:1px solid rgb(129, 146, 154);border-radius:2px;pointer-events:none;z-index:100;}#d485109fa288d8dcflight .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#d485109fa288d8dcflight rect.text{fill:none;stroke-width:0;}#d485109fa288d8dcflight .icon-shape,#d485109fa288d8dcflight .image-shape{background-color:rgb(182, 240, 255);text-align:center;}#d485109fa288d8dcflight .icon-shape p,#d485109fa288d8dcflight .image-shape p{background-color:rgb(182, 240, 255);padding:2px;}#d485109fa288d8dcflight .icon-shape .label rect,#d485109fa288d8dcflight .image-shape .label rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#d485109fa288d8dcflight .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#d485109fa288d8dcflight .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#d485109fa288d8dcflight .node .neo-node{stroke:rgb(204, 216, 222);}#d485109fa288d8dcflight [data-look="neo"].node rect,#d485109fa288d8dcflight [data-look="neo"].cluster rect,#d485109fa288d8dcflight [data-look="neo"].node polygon{stroke:url(#d485109fa288d8dcflight-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d485109fa288d8dcflight [data-look="neo"].swimlane.cluster rect{filter:none;}#d485109fa288d8dcflight [data-look="neo"].node path{stroke:url(#d485109fa288d8dcflight-gradient);stroke-width:1px;}#d485109fa288d8dcflight [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d485109fa288d8dcflight [data-look="neo"].node .neo-line path{stroke:rgb(204, 216, 222);filter:none;}#d485109fa288d8dcflight [data-look="neo"].node circle{stroke:url(#d485109fa288d8dcflight-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d485109fa288d8dcflight [data-look="neo"].node circle .state-start{fill:#000000;}#d485109fa288d8dcflight [data-look="neo"].icon-shape .icon{fill:url(#d485109fa288d8dcflight-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d485109fa288d8dcflight [data-look="neo"].icon-shape .icon-neo path{stroke:url(#d485109fa288d8dcflight-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d485109fa288d8dcflight :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="d485109fa288d8dcflight_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcflight_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcflight_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"&gt;&lt;path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcflight_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"&gt;&lt;polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcflight_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcflight_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcflight_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcflight_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcflight_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcflight_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcflight_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcflight_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class="root"&gt;&lt;g class="clusters"&gt;&lt;g class="cluster" id="d485109fa288d8dcflight-R" data-look="classic"&gt;&lt;rect style="" x="318.96875" y="8" width="298.359375" height="660"&gt;&lt;/rect&gt;&lt;g class="cluster-label" transform="translate(383.3359375, 8)"&gt;&lt;foreignObject width="169.625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;what actually answered&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="cluster" id="d485109fa288d8dcflight-Q" data-look="classic"&gt;&lt;rect style="" x="8" y="20" width="260.96875" height="636"&gt;&lt;/rect&gt;&lt;g class="cluster-label" transform="translate(65.7578125, 20)"&gt;&lt;foreignObject width="145.453125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;the question I asked&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;path d="M233.875,82L239.724,82C245.573,82,257.271,82,267.286,82C277.302,82,285.635,82,293.969,82C302.302,82,310.635,82,319.698,82C328.76,82,338.552,82,343.448,82L348.344,82" id="d485109fa288d8dcflight-L_A1_B1_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A1_B1_0" data-points="W3sieCI6MjMzLjg3NSwieSI6ODJ9LHsieCI6MjY4Ljk2ODc1LCJ5Ijo4Mn0seyJ4IjoyOTMuOTY4NzUsInkiOjgyfSx7IngiOjMxOC45Njg3NSwieSI6ODJ9LHsieCI6MzUyLjM0Mzc1LCJ5Ijo4Mn1d" data-look="classic" marker-end="url(#d485109fa288d8dcflight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M228.406,210L235.167,210C241.927,210,255.448,210,266.375,210C277.302,210,285.635,210,293.969,210C302.302,210,310.635,210,321.4,210C332.164,210,345.359,210,351.957,210L358.555,210" id="d485109fa288d8dcflight-L_A2_B2_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A2_B2_0" data-points="W3sieCI6MjI4LjQwNjI1LCJ5IjoyMTB9LHsieCI6MjY4Ljk2ODc1LCJ5IjoyMTB9LHsieCI6MjkzLjk2ODc1LCJ5IjoyMTB9LHsieCI6MzE4Ljk2ODc1LCJ5IjoyMTB9LHsieCI6MzYyLjU1NDY4NzUsInkiOjIxMH1d" data-look="classic" marker-end="url(#d485109fa288d8dcflight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M242.961,338L247.296,338C251.63,338,260.299,338,268.801,338C277.302,338,285.635,338,293.969,338C302.302,338,310.635,338,318.302,338C325.969,338,332.969,338,336.469,338L339.969,338" id="d485109fa288d8dcflight-L_A3_B3_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A3_B3_0" data-points="W3sieCI6MjQyLjk2MDkzNzUsInkiOjMzOH0seyJ4IjoyNjguOTY4NzUsInkiOjMzOH0seyJ4IjoyOTMuOTY4NzUsInkiOjMzOH0seyJ4IjozMTguOTY4NzUsInkiOjMzOH0seyJ4IjozNDMuOTY4NzUsInkiOjMzOH1d" data-look="classic" marker-end="url(#d485109fa288d8dcflight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M243.969,466L248.135,466C252.302,466,260.635,466,268.969,466C277.302,466,285.635,466,293.969,466C302.302,466,310.635,466,320.749,466C330.862,466,342.755,466,348.702,466L354.648,466" id="d485109fa288d8dcflight-L_A4_B4_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A4_B4_0" data-points="W3sieCI6MjQzLjk2ODc1LCJ5Ijo0NjZ9LHsieCI6MjY4Ljk2ODc1LCJ5Ijo0NjZ9LHsieCI6MjkzLjk2ODc1LCJ5Ijo0NjZ9LHsieCI6MzE4Ljk2ODc1LCJ5Ijo0NjZ9LHsieCI6MzU4LjY0ODQzNzUsInkiOjQ2Nn1d" data-look="classic" marker-end="url(#d485109fa288d8dcflight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M216.922,594L225.596,594C234.271,594,251.62,594,264.461,594C277.302,594,285.635,594,293.969,594C302.302,594,310.635,594,320.806,594C330.977,594,342.984,594,348.988,594L354.992,594" id="d485109fa288d8dcflight-L_A5_B5_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A5_B5_0" data-points="W3sieCI6MjE2LjkyMTg3NSwieSI6NTk0fSx7IngiOjI2OC45Njg3NSwieSI6NTk0fSx7IngiOjI5My45Njg3NSwieSI6NTk0fSx7IngiOjMxOC45Njg3NSwieSI6NTk0fSx7IngiOjM1OC45OTIxODc1LCJ5Ijo1OTR9XQ==" data-look="classic" marker-end="url(#d485109fa288d8dcflight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A1_B1_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A2_B2_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A3_B3_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A4_B4_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A5_B5_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="d485109fa288d8dcflight-flowchart-A1-0" data-look="classic" transform="translate(138.484375, 82)"&gt;&lt;rect class="basic label-container" style="" x="-95.390625" y="-27" width="190.78125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-65.390625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="130.78125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;is Word still used?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcflight-flowchart-A2-1" data-look="classic" transform="translate(138.484375, 210)"&gt;&lt;rect class="basic label-container" style="" x="-89.921875" y="-27" width="179.84375" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-59.921875, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="119.84375" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;any git remotes?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcflight-flowchart-A3-2" data-look="classic" transform="translate(138.484375, 338)"&gt;&lt;rect class="basic label-container" style="" x="-104.4765625" y="-27" width="208.953125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-74.4765625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="148.953125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;is master protected?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcflight-flowchart-A4-3" data-look="classic" transform="translate(138.484375, 466)"&gt;&lt;rect class="basic label-container" style="" x="-105.484375" y="-39" width="210.96875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-75.484375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="150.96875" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;how much CPU does&lt;br&gt;WindowServer use?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcflight-flowchart-A5-4" data-look="classic" transform="translate(138.484375, 594)"&gt;&lt;rect class="basic label-container" style="" x="-78.4375" y="-27" width="156.875" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-48.4375, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="96.875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;how fast is ll?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcflight-flowchart-B1-5" data-look="classic" transform="translate(468.1484375, 82)"&gt;&lt;rect class="basic label-container" style="" x="-115.8046875" y="-39" width="231.609375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-85.8046875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="171.609375" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;a Spotlight index&lt;br&gt;that had just been reset&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcflight-flowchart-B2-6" data-look="classic" transform="translate(468.1484375, 210)"&gt;&lt;rect class="basic label-container" style="" x="-105.59375" y="-39" width="211.1875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-75.59375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="151.1875" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;$HOME, which is not&lt;br&gt;a git directory&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcflight-flowchart-B3-7" data-look="classic" transform="translate(468.1484375, 338)"&gt;&lt;rect class="basic label-container" style="" x="-124.1796875" y="-39" width="248.359375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-94.1796875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="188.359375" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;the old protection API,&lt;br&gt;which cannot see rulesets&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcflight-flowchart-B4-8" data-look="classic" transform="translate(468.1484375, 466)"&gt;&lt;rect class="basic label-container" style="" x="-109.5" y="-39" width="219" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-79.5, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="159" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;a decaying average of&lt;br&gt;the last minute&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcflight-flowchart-B5-9" data-look="classic" transform="translate(468.1484375, 594)"&gt;&lt;rect class="basic label-container" style="" x="-109.15625" y="-39" width="218.3125" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-79.15625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="158.3125" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;a sandbox that blocks&lt;br&gt;the real syscalls&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id="d485109fa288d8dcflight-drop-shadow" height="130%" width="130%"&gt;&lt;feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id="d485109fa288d8dcflight-drop-shadow-small" height="150%" width="150%"&gt;&lt;feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;linearGradient id="d485109fa288d8dcflight-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"&gt;&lt;stop offset="0%" stop-color="rgb(204, 216, 222)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;stop offset="100%" stop-color="rgb(28, 209, 255)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;/linearGradient&gt;&lt;/svg&gt;&lt;/div&gt;&#10; &lt;div class="not-prose diagram diagram-dark"&gt;&lt;svg id="d485109fa288d8dcfdark" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 625.328125px;" viewBox="0 0 625.328125 676" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#d485109fa288d8dcfdark{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#d485109fa288d8dcfdark .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#d485109fa288d8dcfdark .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#d485109fa288d8dcfdark .error-icon{fill:#a44141;}#d485109fa288d8dcfdark .error-text{fill:#ddd;stroke:#ddd;}#d485109fa288d8dcfdark .edge-thickness-normal{stroke-width:1px;}#d485109fa288d8dcfdark .edge-thickness-thick{stroke-width:3.5px;}#d485109fa288d8dcfdark .edge-pattern-solid{stroke-dasharray:0;}#d485109fa288d8dcfdark .edge-thickness-invisible{stroke-width:0;fill:none;}#d485109fa288d8dcfdark .edge-pattern-dashed{stroke-dasharray:3;}#d485109fa288d8dcfdark .edge-pattern-dotted{stroke-dasharray:2;}#d485109fa288d8dcfdark .marker{fill:lightgrey;stroke:lightgrey;}#d485109fa288d8dcfdark .marker.cross{stroke:lightgrey;}#d485109fa288d8dcfdark svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#d485109fa288d8dcfdark p{margin:0;}#d485109fa288d8dcfdark .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#ccc;}#d485109fa288d8dcfdark .cluster-label text{fill:#F9FFFE;}#d485109fa288d8dcfdark .cluster-label span{color:#F9FFFE;}#d485109fa288d8dcfdark .cluster-label span p{background-color:transparent;}#d485109fa288d8dcfdark .label text,#d485109fa288d8dcfdark span{fill:#ccc;color:#ccc;}#d485109fa288d8dcfdark .node rect,#d485109fa288d8dcfdark .node circle,#d485109fa288d8dcfdark .node ellipse,#d485109fa288d8dcfdark .node polygon,#d485109fa288d8dcfdark .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#d485109fa288d8dcfdark .rough-node .label text,#d485109fa288d8dcfdark .node .label text,#d485109fa288d8dcfdark .image-shape .label,#d485109fa288d8dcfdark .icon-shape .label{text-anchor:middle;}#d485109fa288d8dcfdark .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#d485109fa288d8dcfdark .rough-node .label,#d485109fa288d8dcfdark .node .label,#d485109fa288d8dcfdark .image-shape .label,#d485109fa288d8dcfdark .icon-shape .label{text-align:center;}#d485109fa288d8dcfdark .node.clickable{cursor:pointer;}#d485109fa288d8dcfdark .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#d485109fa288d8dcfdark .arrowheadPath{fill:lightgrey;}#d485109fa288d8dcfdark .edgePath .path{stroke:lightgrey;stroke-width:1px;}#d485109fa288d8dcfdark .flowchart-link{stroke:lightgrey;fill:none;}#d485109fa288d8dcfdark .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#d485109fa288d8dcfdark .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#d485109fa288d8dcfdark .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#d485109fa288d8dcfdark .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#d485109fa288d8dcfdark .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#d485109fa288d8dcfdark .cluster text{fill:#F9FFFE;}#d485109fa288d8dcfdark .cluster span{color:#F9FFFE;}#d485109fa288d8dcfdark div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#d485109fa288d8dcfdark .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#d485109fa288d8dcfdark rect.text{fill:none;stroke-width:0;}#d485109fa288d8dcfdark .icon-shape,#d485109fa288d8dcfdark .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#d485109fa288d8dcfdark .icon-shape p,#d485109fa288d8dcfdark .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#d485109fa288d8dcfdark .icon-shape .label rect,#d485109fa288d8dcfdark .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#d485109fa288d8dcfdark .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#d485109fa288d8dcfdark .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#d485109fa288d8dcfdark .node .neo-node{stroke:#ccc;}#d485109fa288d8dcfdark [data-look="neo"].node rect,#d485109fa288d8dcfdark [data-look="neo"].cluster rect,#d485109fa288d8dcfdark [data-look="neo"].node polygon{stroke:url(#d485109fa288d8dcfdark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d485109fa288d8dcfdark [data-look="neo"].swimlane.cluster rect{filter:none;}#d485109fa288d8dcfdark [data-look="neo"].node path{stroke:url(#d485109fa288d8dcfdark-gradient);stroke-width:1px;}#d485109fa288d8dcfdark [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d485109fa288d8dcfdark [data-look="neo"].node .neo-line path{stroke:#ccc;filter:none;}#d485109fa288d8dcfdark [data-look="neo"].node circle{stroke:url(#d485109fa288d8dcfdark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d485109fa288d8dcfdark [data-look="neo"].node circle .state-start{fill:#000000;}#d485109fa288d8dcfdark [data-look="neo"].icon-shape .icon{fill:url(#d485109fa288d8dcfdark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d485109fa288d8dcfdark [data-look="neo"].icon-shape .icon-neo path{stroke:url(#d485109fa288d8dcfdark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d485109fa288d8dcfdark :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="d485109fa288d8dcfdark_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcfdark_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcfdark_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"&gt;&lt;path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcfdark_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"&gt;&lt;polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcfdark_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcfdark_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcfdark_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcfdark_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcfdark_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcfdark_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcfdark_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d485109fa288d8dcfdark_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class="root"&gt;&lt;g class="clusters"&gt;&lt;g class="cluster" id="d485109fa288d8dcfdark-R" data-look="classic"&gt;&lt;rect style="" x="318.96875" y="8" width="298.359375" height="660"&gt;&lt;/rect&gt;&lt;g class="cluster-label" transform="translate(383.3359375, 8)"&gt;&lt;foreignObject width="169.625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;what actually answered&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="cluster" id="d485109fa288d8dcfdark-Q" data-look="classic"&gt;&lt;rect style="" x="8" y="20" width="260.96875" height="636"&gt;&lt;/rect&gt;&lt;g class="cluster-label" transform="translate(65.7578125, 20)"&gt;&lt;foreignObject width="145.453125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;the question I asked&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;path d="M233.875,82L239.724,82C245.573,82,257.271,82,267.286,82C277.302,82,285.635,82,293.969,82C302.302,82,310.635,82,319.698,82C328.76,82,338.552,82,343.448,82L348.344,82" id="d485109fa288d8dcfdark-L_A1_B1_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A1_B1_0" data-points="W3sieCI6MjMzLjg3NSwieSI6ODJ9LHsieCI6MjY4Ljk2ODc1LCJ5Ijo4Mn0seyJ4IjoyOTMuOTY4NzUsInkiOjgyfSx7IngiOjMxOC45Njg3NSwieSI6ODJ9LHsieCI6MzUyLjM0Mzc1LCJ5Ijo4Mn1d" data-look="classic" marker-end="url(#d485109fa288d8dcfdark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M228.406,210L235.167,210C241.927,210,255.448,210,266.375,210C277.302,210,285.635,210,293.969,210C302.302,210,310.635,210,321.4,210C332.164,210,345.359,210,351.957,210L358.555,210" id="d485109fa288d8dcfdark-L_A2_B2_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A2_B2_0" data-points="W3sieCI6MjI4LjQwNjI1LCJ5IjoyMTB9LHsieCI6MjY4Ljk2ODc1LCJ5IjoyMTB9LHsieCI6MjkzLjk2ODc1LCJ5IjoyMTB9LHsieCI6MzE4Ljk2ODc1LCJ5IjoyMTB9LHsieCI6MzYyLjU1NDY4NzUsInkiOjIxMH1d" data-look="classic" marker-end="url(#d485109fa288d8dcfdark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M242.961,338L247.296,338C251.63,338,260.299,338,268.801,338C277.302,338,285.635,338,293.969,338C302.302,338,310.635,338,318.302,338C325.969,338,332.969,338,336.469,338L339.969,338" id="d485109fa288d8dcfdark-L_A3_B3_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A3_B3_0" data-points="W3sieCI6MjQyLjk2MDkzNzUsInkiOjMzOH0seyJ4IjoyNjguOTY4NzUsInkiOjMzOH0seyJ4IjoyOTMuOTY4NzUsInkiOjMzOH0seyJ4IjozMTguOTY4NzUsInkiOjMzOH0seyJ4IjozNDMuOTY4NzUsInkiOjMzOH1d" data-look="classic" marker-end="url(#d485109fa288d8dcfdark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M243.969,466L248.135,466C252.302,466,260.635,466,268.969,466C277.302,466,285.635,466,293.969,466C302.302,466,310.635,466,320.749,466C330.862,466,342.755,466,348.702,466L354.648,466" id="d485109fa288d8dcfdark-L_A4_B4_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A4_B4_0" data-points="W3sieCI6MjQzLjk2ODc1LCJ5Ijo0NjZ9LHsieCI6MjY4Ljk2ODc1LCJ5Ijo0NjZ9LHsieCI6MjkzLjk2ODc1LCJ5Ijo0NjZ9LHsieCI6MzE4Ljk2ODc1LCJ5Ijo0NjZ9LHsieCI6MzU4LjY0ODQzNzUsInkiOjQ2Nn1d" data-look="classic" marker-end="url(#d485109fa288d8dcfdark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M216.922,594L225.596,594C234.271,594,251.62,594,264.461,594C277.302,594,285.635,594,293.969,594C302.302,594,310.635,594,320.806,594C330.977,594,342.984,594,348.988,594L354.992,594" id="d485109fa288d8dcfdark-L_A5_B5_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A5_B5_0" data-points="W3sieCI6MjE2LjkyMTg3NSwieSI6NTk0fSx7IngiOjI2OC45Njg3NSwieSI6NTk0fSx7IngiOjI5My45Njg3NSwieSI6NTk0fSx7IngiOjMxOC45Njg3NSwieSI6NTk0fSx7IngiOjM1OC45OTIxODc1LCJ5Ijo1OTR9XQ==" data-look="classic" marker-end="url(#d485109fa288d8dcfdark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A1_B1_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A2_B2_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A3_B3_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A4_B4_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A5_B5_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="d485109fa288d8dcfdark-flowchart-A1-0" data-look="classic" transform="translate(138.484375, 82)"&gt;&lt;rect class="basic label-container" style="" x="-95.390625" y="-27" width="190.78125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-65.390625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="130.78125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;is Word still used?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcfdark-flowchart-A2-1" data-look="classic" transform="translate(138.484375, 210)"&gt;&lt;rect class="basic label-container" style="" x="-89.921875" y="-27" width="179.84375" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-59.921875, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="119.84375" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;any git remotes?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcfdark-flowchart-A3-2" data-look="classic" transform="translate(138.484375, 338)"&gt;&lt;rect class="basic label-container" style="" x="-104.4765625" y="-27" width="208.953125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-74.4765625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="148.953125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;is master protected?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcfdark-flowchart-A4-3" data-look="classic" transform="translate(138.484375, 466)"&gt;&lt;rect class="basic label-container" style="" x="-105.484375" y="-39" width="210.96875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-75.484375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="150.96875" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;how much CPU does&lt;br&gt;WindowServer use?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcfdark-flowchart-A5-4" data-look="classic" transform="translate(138.484375, 594)"&gt;&lt;rect class="basic label-container" style="" x="-78.4375" y="-27" width="156.875" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-48.4375, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="96.875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;how fast is ll?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcfdark-flowchart-B1-5" data-look="classic" transform="translate(468.1484375, 82)"&gt;&lt;rect class="basic label-container" style="" x="-115.8046875" y="-39" width="231.609375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-85.8046875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="171.609375" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;a Spotlight index&lt;br&gt;that had just been reset&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcfdark-flowchart-B2-6" data-look="classic" transform="translate(468.1484375, 210)"&gt;&lt;rect class="basic label-container" style="" x="-105.59375" y="-39" width="211.1875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-75.59375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="151.1875" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;$HOME, which is not&lt;br&gt;a git directory&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcfdark-flowchart-B3-7" data-look="classic" transform="translate(468.1484375, 338)"&gt;&lt;rect class="basic label-container" style="" x="-124.1796875" y="-39" width="248.359375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-94.1796875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="188.359375" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;the old protection API,&lt;br&gt;which cannot see rulesets&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcfdark-flowchart-B4-8" data-look="classic" transform="translate(468.1484375, 466)"&gt;&lt;rect class="basic label-container" style="" x="-109.5" y="-39" width="219" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-79.5, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="159" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;a decaying average of&lt;br&gt;the last minute&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d485109fa288d8dcfdark-flowchart-B5-9" data-look="classic" transform="translate(468.1484375, 594)"&gt;&lt;rect class="basic label-container" style="" x="-109.15625" y="-39" width="218.3125" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-79.15625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="158.3125" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;a sandbox that blocks&lt;br&gt;the real syscalls&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id="d485109fa288d8dcfdark-drop-shadow" height="130%" width="130%"&gt;&lt;feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#FFFFFF"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id="d485109fa288d8dcfdark-drop-shadow-small" height="150%" width="150%"&gt;&lt;feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#FFFFFF"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;linearGradient id="d485109fa288d8dcfdark-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"&gt;&lt;stop offset="0%" stop-color="#cccccc" stop-opacity="1"&gt;&lt;/stop&gt;&lt;stop offset="100%" stop-color="hsl(180, 0%, 18.3529411765%)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;/linearGradient&gt;&lt;/svg&gt;&lt;/div&gt;&#10;&lt;p&gt;&amp;ldquo;Absence of evidence is not evidence of absence&amp;rdquo; is an old phrase. The working&#10;version is more direct: &lt;strong&gt;evidence gathered by a broken method is not evidence&#10;at all&lt;/strong&gt;, and a broken method usually exits 0.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The test that could not fail&#10; &lt;div id="the-test-that-could-not-fail" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-test-that-could-not-fail" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The same day turned up a bug that had survived for a year because the test&#10;guarding it was written backwards.&lt;/p&gt;&#10;&lt;p&gt;Ghostty on macOS reads both &lt;code&gt;~/.config/ghostty/config&lt;/code&gt; and&#10;&lt;code&gt;~/Library/Application Support/com.mitchellh.ghostty/config&lt;/code&gt;. My bootstrap&#10;script had symlinked the second to the first, so the same file was parsed&#10;twice. For single-value keys the last value wins, so nothing looked wrong. But&#10;repeatable keys append:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;$&lt;/span&gt; ghostty +show-config &lt;span class="p"&gt;|&lt;/span&gt; grep -c &lt;span class="s1"&gt;&amp;#39;^custom-shader = &amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;4 # the file declares 2&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Two extra full-screen shader passes on every frame, for a year. And the test&#10;suite stayed green the whole time, because it contained this:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;GHOSTTY_LINK&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/Library/Application Support/com.mitchellh.ghostty/config&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -e &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$GHOSTTY_LINK&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -L &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$GHOSTTY_LINK&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; run_test &lt;span class="s2"&gt;&amp;#34;Ghostty config is symlink&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;[ -L \&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$GHOSTTY_LINK&lt;/span&gt;&lt;span class="s2"&gt;\&amp;#34; ]&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Two problems in four lines. The assertion checks the &lt;strong&gt;opposite&lt;/strong&gt; of the&#10;correct rule, because the symlink should not exist at all. And the assertion&#10;sits inside a guard, so when I deleted the symlink, the test did not fail. It&#10;silently stopped running. The first post in this series was a catalog of&#10;safety nets that had quietly died. This test is the sharpest example I have&#10;found since: it disappeared at the exact moment it finally had something to&#10;say.&lt;/p&gt;&#10;&lt;p&gt;The replacement tests the property instead of the mechanism:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;run_test &lt;span class="s2"&gt;&amp;#34;Ghostty config is not parsed twice (custom-shader not duplicated)&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;[ &amp;#39;&lt;/span&gt;&lt;span class="nv"&gt;$LOADED_SHADERS&lt;/span&gt;&lt;span class="s2"&gt;&amp;#39; -eq &amp;#39;&lt;/span&gt;&lt;span class="nv"&gt;$CFG_SHADERS&lt;/span&gt;&lt;span class="s2"&gt;&amp;#39; ]&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Whatever causes a double parse next time (this symlink, a different symlink,&#10;an include directive, some future Ghostty change), the count stops matching&#10;and the test goes red. I put the symlink back once, on purpose, and watched&#10;the test fail before I trusted it.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Lessons&#10; &lt;div id="lessons" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#lessons" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Null, empty, and 404 are answers about the &lt;em&gt;query&lt;/em&gt;, not always about the&#10;world. Before treating one as a finding, confirm the query reached the&#10;right place.&lt;/li&gt;&#10;&lt;li&gt;Decide &amp;ldquo;is this app still needed&amp;rdquo; from data a person created. An index the&#10;OS can reset is not a record of anything.&lt;/li&gt;&#10;&lt;li&gt;Know which average your tool reports. &lt;code&gt;ps %cpu&lt;/code&gt; on macOS leans toward the&#10;last minute; cumulative load is CPU time divided by elapsed time.&lt;/li&gt;&#10;&lt;li&gt;Measure where the work really happens. A sandbox that blocks the syscalls&#10;under test produces a fast, precise, meaningless number.&lt;/li&gt;&#10;&lt;li&gt;Never measure a system while you are the heaviest thing running on it.&lt;/li&gt;&#10;&lt;li&gt;Test the property, not the mechanism. The symlink was one way to get a&#10;double parse; the count catches all of them.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h2 class="relative group"&gt;References&#10; &lt;div id="references" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#references" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/eza-community/eza" target="_blank" rel="noreferrer"&gt;eza&lt;/a&gt; (&lt;code&gt;--git&lt;/code&gt; cost measured on&#10;v0.23.5)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://yadm.io/" target="_blank" rel="noreferrer"&gt;yadm&lt;/a&gt; (bare repo location:&#10;&lt;code&gt;~/.local/share/yadm/repo.git&lt;/code&gt;)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://docs.github.com/rest/repos/rules" target="_blank" rel="noreferrer"&gt;GitHub rulesets API&lt;/a&gt; (rulesets&#10;are invisible to the older &lt;code&gt;/branches/*/protection&lt;/code&gt; endpoint)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://ghostty.org/docs/config" target="_blank" rel="noreferrer"&gt;Ghostty configuration&lt;/a&gt; (macOS reads both&#10;the XDG path and the Application Support path)&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;ps(1)&lt;/code&gt; on macOS (&lt;code&gt;%cpu&lt;/code&gt; is documented as a decaying average)&lt;/li&gt;&#10;&lt;li&gt;The repo and its test suite:&#10;&lt;a href="https://github.com/nickboy/dotfiles" target="_blank" rel="noreferrer"&gt;nickboy/dotfiles&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</content:encoded></item><item><title>My commands vanished with exit 0. The culprit was a file named env.</title><link>https://nick-liu.com/posts/silent-failures-env-shadow/</link><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><author>nickboy@users.noreply.github.com (Nick Liu)</author><guid>https://nick-liu.com/posts/silent-failures-env-shadow/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;`env -u VAR command` did nothing. Exit code 0, no output, no error. A different command, same thing. A different variable, same thing. Any invocation that started with `env` just quietly evaporated. What finally made the problem visible was a `git init` that reported success while creating no `.git` directory at all.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;That was a year ago. The case closed last month, and the culprit was not uv, not some third-party installer, not anything exotic. It was this repo&amp;rsquo;s own bootstrap script. The thing that caught it was the regression test I had written for the original incident.&lt;/p&gt;</description><content:encoded>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;`env -u VAR command` did nothing. Exit code 0, no output, no error. A different command, same thing. A different variable, same thing. Any invocation that started with `env` just quietly evaporated. What finally made the problem visible was a `git init` that reported success while creating no `.git` directory at all.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;That was a year ago. The case closed last month, and the culprit was not uv, not some third-party installer, not anything exotic. It was this repo&amp;rsquo;s own bootstrap script. The thing that caught it was the regression test I had written for the original incident.&lt;/p&gt;&#10;&lt;p&gt;This post is three silent failures from the same repo, plus that ending. They share a shape worth naming.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Case 1: the executable that should have been sourced&#10; &lt;div id="case-1-the-executable-that-should-have-been-sourced" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#case-1-the-executable-that-should-have-been-sourced" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;uv&amp;rsquo;s installer drops a file at &lt;code&gt;~/.local/bin/env&lt;/code&gt;. It is a PATH snippet, a few &lt;code&gt;export&lt;/code&gt; lines meant to be sourced by your shell profile. It is not a program.&lt;/p&gt;&#10;&lt;p&gt;At some point, something gave it an executable bit. I could not figure out what at the time, so that part of the case stayed open. But the consequences were mechanical from there:&lt;/p&gt;&#10;&lt;div class="not-prose diagram diagram-light"&gt;&lt;svg id="d8345951872e82ea1light" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 276px;" viewBox="0 0 276 902" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#d8345951872e82ea1light{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#d8345951872e82ea1light .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#d8345951872e82ea1light .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#d8345951872e82ea1light .error-icon{fill:rgb(255, 255, 255);}#d8345951872e82ea1light .error-text{fill:#000000;stroke:#000000;}#d8345951872e82ea1light .edge-thickness-normal{stroke-width:1px;}#d8345951872e82ea1light .edge-thickness-thick{stroke-width:3.5px;}#d8345951872e82ea1light .edge-pattern-solid{stroke-dasharray:0;}#d8345951872e82ea1light .edge-thickness-invisible{stroke-width:0;fill:none;}#d8345951872e82ea1light .edge-pattern-dashed{stroke-dasharray:3;}#d8345951872e82ea1light .edge-pattern-dotted{stroke-dasharray:2;}#d8345951872e82ea1light .marker{fill:rgb(74, 86, 92);stroke:rgb(74, 86, 92);}#d8345951872e82ea1light .marker.cross{stroke:rgb(74, 86, 92);}#d8345951872e82ea1light svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#d8345951872e82ea1light p{margin:0;}#d8345951872e82ea1light .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#333;}#d8345951872e82ea1light .cluster-label text{fill:#000000;}#d8345951872e82ea1light .cluster-label span{color:#000000;}#d8345951872e82ea1light .cluster-label span p{background-color:transparent;}#d8345951872e82ea1light .label text,#d8345951872e82ea1light span{fill:#333;color:#333;}#d8345951872e82ea1light .node rect,#d8345951872e82ea1light .node circle,#d8345951872e82ea1light .node ellipse,#d8345951872e82ea1light .node polygon,#d8345951872e82ea1light .node path{fill:rgb(255, 255, 255);stroke:rgb(204, 216, 222);stroke-width:1px;}#d8345951872e82ea1light .rough-node .label text,#d8345951872e82ea1light .node .label text,#d8345951872e82ea1light .image-shape .label,#d8345951872e82ea1light .icon-shape .label{text-anchor:middle;}#d8345951872e82ea1light .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#d8345951872e82ea1light .rough-node .label,#d8345951872e82ea1light .node .label,#d8345951872e82ea1light .image-shape .label,#d8345951872e82ea1light .icon-shape .label{text-align:center;}#d8345951872e82ea1light .node.clickable{cursor:pointer;}#d8345951872e82ea1light .root .anchor path{fill:rgb(74, 86, 92)!important;stroke-width:0;stroke:rgb(74, 86, 92);}#d8345951872e82ea1light .arrowheadPath{fill:#000000;}#d8345951872e82ea1light .edgePath .path{stroke:rgb(74, 86, 92);stroke-width:1px;}#d8345951872e82ea1light .flowchart-link{stroke:rgb(74, 86, 92);fill:none;}#d8345951872e82ea1light .edgeLabel{background-color:rgb(182, 240, 255);text-align:center;}#d8345951872e82ea1light .edgeLabel p{background-color:rgb(182, 240, 255);}#d8345951872e82ea1light .edgeLabel rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#d8345951872e82ea1light .labelBkg{background-color:rgba(182, 240, 255, 0.5);}#d8345951872e82ea1light .cluster rect{fill:rgb(255, 255, 255);stroke:rgb(129, 146, 154);stroke-width:1px;}#d8345951872e82ea1light .cluster text{fill:#000000;}#d8345951872e82ea1light .cluster span{color:#000000;}#d8345951872e82ea1light div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:12px;background:rgb(255, 255, 255);border:1px solid rgb(129, 146, 154);border-radius:2px;pointer-events:none;z-index:100;}#d8345951872e82ea1light .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#d8345951872e82ea1light rect.text{fill:none;stroke-width:0;}#d8345951872e82ea1light .icon-shape,#d8345951872e82ea1light .image-shape{background-color:rgb(182, 240, 255);text-align:center;}#d8345951872e82ea1light .icon-shape p,#d8345951872e82ea1light .image-shape p{background-color:rgb(182, 240, 255);padding:2px;}#d8345951872e82ea1light .icon-shape .label rect,#d8345951872e82ea1light .image-shape .label rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#d8345951872e82ea1light .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#d8345951872e82ea1light .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#d8345951872e82ea1light .node .neo-node{stroke:rgb(204, 216, 222);}#d8345951872e82ea1light [data-look="neo"].node rect,#d8345951872e82ea1light [data-look="neo"].cluster rect,#d8345951872e82ea1light [data-look="neo"].node polygon{stroke:url(#d8345951872e82ea1light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d8345951872e82ea1light [data-look="neo"].swimlane.cluster rect{filter:none;}#d8345951872e82ea1light [data-look="neo"].node path{stroke:url(#d8345951872e82ea1light-gradient);stroke-width:1px;}#d8345951872e82ea1light [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d8345951872e82ea1light [data-look="neo"].node .neo-line path{stroke:rgb(204, 216, 222);filter:none;}#d8345951872e82ea1light [data-look="neo"].node circle{stroke:url(#d8345951872e82ea1light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d8345951872e82ea1light [data-look="neo"].node circle .state-start{fill:#000000;}#d8345951872e82ea1light [data-look="neo"].icon-shape .icon{fill:url(#d8345951872e82ea1light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d8345951872e82ea1light [data-look="neo"].icon-shape .icon-neo path{stroke:url(#d8345951872e82ea1light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d8345951872e82ea1light :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="d8345951872e82ea1light_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1light_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1light_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"&gt;&lt;path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1light_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"&gt;&lt;polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1light_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1light_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1light_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1light_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1light_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1light_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1light_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1light_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class="root"&gt;&lt;g class="clusters"&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;path d="M138,134L138,138.167C138,142.333,138,150.667,138,158.333C138,166,138,173,138,176.5L138,180" id="d8345951872e82ea1light-L_A_B_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A_B_0" data-points="W3sieCI6MTM4LCJ5IjoxMzR9LHsieCI6MTM4LCJ5IjoxNTl9LHsieCI6MTM4LCJ5IjoxODR9XQ==" data-look="classic" marker-end="url(#d8345951872e82ea1light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M138,310L138,314.167C138,318.333,138,326.667,138,334.333C138,342,138,349,138,352.5L138,356" id="d8345951872e82ea1light-L_B_C_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_B_C_0" data-points="W3sieCI6MTM4LCJ5IjozMTB9LHsieCI6MTM4LCJ5IjozMzV9LHsieCI6MTM4LCJ5IjozNjB9XQ==" data-look="classic" marker-end="url(#d8345951872e82ea1light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M138,462L138,466.167C138,470.333,138,478.667,138,486.333C138,494,138,501,138,504.5L138,508" id="d8345951872e82ea1light-L_C_D_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_C_D_0" data-points="W3sieCI6MTM4LCJ5Ijo0NjJ9LHsieCI6MTM4LCJ5Ijo0ODd9LHsieCI6MTM4LCJ5Ijo1MTJ9XQ==" data-look="classic" marker-end="url(#d8345951872e82ea1light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M138,566L138,570.167C138,574.333,138,582.667,138,590.333C138,598,138,605,138,608.5L138,612" id="d8345951872e82ea1light-L_D_E_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_D_E_0" data-points="W3sieCI6MTM4LCJ5Ijo1NjZ9LHsieCI6MTM4LCJ5Ijo1OTF9LHsieCI6MTM4LCJ5Ijo2MTZ9XQ==" data-look="classic" marker-end="url(#d8345951872e82ea1light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M138,766L138,770.167C138,774.333,138,782.667,138,790.333C138,798,138,805,138,808.5L138,812" id="d8345951872e82ea1light-L_E_F_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_F_0" data-points="W3sieCI6MTM4LCJ5Ijo3NjZ9LHsieCI6MTM4LCJ5Ijo3OTF9LHsieCI6MTM4LCJ5Ijo4MTZ9XQ==" data-look="classic" marker-end="url(#d8345951872e82ea1light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A_B_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_B_C_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_C_D_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_D_E_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_E_F_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="d8345951872e82ea1light-flowchart-A-0" data-look="classic" transform="translate(138, 71)"&gt;&lt;rect class="basic label-container" style="" x="-130" y="-63" width="260" height="126"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-100, -48)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="200" height="96"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;uv installer drops ~/.local/bin/env&lt;br&gt;(a PATH snippet, meant to be sourced)&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d8345951872e82ea1light-flowchart-B-1" data-look="classic" transform="translate(138, 247)"&gt;&lt;rect class="basic label-container" style="" x="-130" y="-63" width="260" height="126"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-100, -48)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="200" height="96"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;something marks it executable&lt;br&gt;(culprit unknown, case left open)&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d8345951872e82ea1light-flowchart-C-3" data-look="classic" transform="translate(138, 411)"&gt;&lt;rect class="basic label-container" style="" x="-130" y="-51" width="260" height="102"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-100, -36)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="200" height="72"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;~/.local/bin sits second in PATH,&lt;br&gt;ahead of /usr/bin&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d8345951872e82ea1light-flowchart-D-5" data-look="classic" transform="translate(138, 539)"&gt;&lt;rect class="basic label-container" style="" x="-129.828125" y="-27" width="259.65625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-99.828125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="199.65625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;it now shadows /usr/bin/env&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d8345951872e82ea1light-flowchart-E-7" data-look="classic" transform="translate(138, 691)"&gt;&lt;rect class="basic label-container" style="" x="-130" y="-75" width="260" height="150"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-100, -60)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="200" height="120"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;'env ... cmd' runs the snippet instead:&lt;br&gt;sets a few variables, exits 0,&lt;br&gt;never runs cmd&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d8345951872e82ea1light-flowchart-F-9" data-look="classic" transform="translate(138, 855)"&gt;&lt;rect class="basic label-container" style="" x="-129.4140625" y="-39" width="258.828125" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-99.4140625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="198.828125" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;symptom: git init succeeds,&lt;br&gt;no .git exists&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id="d8345951872e82ea1light-drop-shadow" height="130%" width="130%"&gt;&lt;feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id="d8345951872e82ea1light-drop-shadow-small" height="150%" width="150%"&gt;&lt;feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;linearGradient id="d8345951872e82ea1light-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"&gt;&lt;stop offset="0%" stop-color="rgb(204, 216, 222)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;stop offset="100%" stop-color="rgb(28, 209, 255)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;/linearGradient&gt;&lt;/svg&gt;&lt;/div&gt;&#10; &lt;div class="not-prose diagram diagram-dark"&gt;&lt;svg id="d8345951872e82ea1dark" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 276px;" viewBox="0 0 276 902" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#d8345951872e82ea1dark{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#d8345951872e82ea1dark .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#d8345951872e82ea1dark .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#d8345951872e82ea1dark .error-icon{fill:#a44141;}#d8345951872e82ea1dark .error-text{fill:#ddd;stroke:#ddd;}#d8345951872e82ea1dark .edge-thickness-normal{stroke-width:1px;}#d8345951872e82ea1dark .edge-thickness-thick{stroke-width:3.5px;}#d8345951872e82ea1dark .edge-pattern-solid{stroke-dasharray:0;}#d8345951872e82ea1dark .edge-thickness-invisible{stroke-width:0;fill:none;}#d8345951872e82ea1dark .edge-pattern-dashed{stroke-dasharray:3;}#d8345951872e82ea1dark .edge-pattern-dotted{stroke-dasharray:2;}#d8345951872e82ea1dark .marker{fill:lightgrey;stroke:lightgrey;}#d8345951872e82ea1dark .marker.cross{stroke:lightgrey;}#d8345951872e82ea1dark svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#d8345951872e82ea1dark p{margin:0;}#d8345951872e82ea1dark .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#ccc;}#d8345951872e82ea1dark .cluster-label text{fill:#F9FFFE;}#d8345951872e82ea1dark .cluster-label span{color:#F9FFFE;}#d8345951872e82ea1dark .cluster-label span p{background-color:transparent;}#d8345951872e82ea1dark .label text,#d8345951872e82ea1dark span{fill:#ccc;color:#ccc;}#d8345951872e82ea1dark .node rect,#d8345951872e82ea1dark .node circle,#d8345951872e82ea1dark .node ellipse,#d8345951872e82ea1dark .node polygon,#d8345951872e82ea1dark .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#d8345951872e82ea1dark .rough-node .label text,#d8345951872e82ea1dark .node .label text,#d8345951872e82ea1dark .image-shape .label,#d8345951872e82ea1dark .icon-shape .label{text-anchor:middle;}#d8345951872e82ea1dark .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#d8345951872e82ea1dark .rough-node .label,#d8345951872e82ea1dark .node .label,#d8345951872e82ea1dark .image-shape .label,#d8345951872e82ea1dark .icon-shape .label{text-align:center;}#d8345951872e82ea1dark .node.clickable{cursor:pointer;}#d8345951872e82ea1dark .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#d8345951872e82ea1dark .arrowheadPath{fill:lightgrey;}#d8345951872e82ea1dark .edgePath .path{stroke:lightgrey;stroke-width:1px;}#d8345951872e82ea1dark .flowchart-link{stroke:lightgrey;fill:none;}#d8345951872e82ea1dark .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#d8345951872e82ea1dark .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#d8345951872e82ea1dark .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#d8345951872e82ea1dark .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#d8345951872e82ea1dark .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#d8345951872e82ea1dark .cluster text{fill:#F9FFFE;}#d8345951872e82ea1dark .cluster span{color:#F9FFFE;}#d8345951872e82ea1dark div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#d8345951872e82ea1dark .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#d8345951872e82ea1dark rect.text{fill:none;stroke-width:0;}#d8345951872e82ea1dark .icon-shape,#d8345951872e82ea1dark .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#d8345951872e82ea1dark .icon-shape p,#d8345951872e82ea1dark .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#d8345951872e82ea1dark .icon-shape .label rect,#d8345951872e82ea1dark .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#d8345951872e82ea1dark .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#d8345951872e82ea1dark .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#d8345951872e82ea1dark .node .neo-node{stroke:#ccc;}#d8345951872e82ea1dark [data-look="neo"].node rect,#d8345951872e82ea1dark [data-look="neo"].cluster rect,#d8345951872e82ea1dark [data-look="neo"].node polygon{stroke:url(#d8345951872e82ea1dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d8345951872e82ea1dark [data-look="neo"].swimlane.cluster rect{filter:none;}#d8345951872e82ea1dark [data-look="neo"].node path{stroke:url(#d8345951872e82ea1dark-gradient);stroke-width:1px;}#d8345951872e82ea1dark [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d8345951872e82ea1dark [data-look="neo"].node .neo-line path{stroke:#ccc;filter:none;}#d8345951872e82ea1dark [data-look="neo"].node circle{stroke:url(#d8345951872e82ea1dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d8345951872e82ea1dark [data-look="neo"].node circle .state-start{fill:#000000;}#d8345951872e82ea1dark [data-look="neo"].icon-shape .icon{fill:url(#d8345951872e82ea1dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d8345951872e82ea1dark [data-look="neo"].icon-shape .icon-neo path{stroke:url(#d8345951872e82ea1dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d8345951872e82ea1dark :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="d8345951872e82ea1dark_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1dark_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1dark_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"&gt;&lt;path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1dark_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"&gt;&lt;polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1dark_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1dark_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1dark_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1dark_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1dark_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1dark_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1dark_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d8345951872e82ea1dark_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class="root"&gt;&lt;g class="clusters"&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;path d="M138,134L138,138.167C138,142.333,138,150.667,138,158.333C138,166,138,173,138,176.5L138,180" id="d8345951872e82ea1dark-L_A_B_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A_B_0" data-points="W3sieCI6MTM4LCJ5IjoxMzR9LHsieCI6MTM4LCJ5IjoxNTl9LHsieCI6MTM4LCJ5IjoxODR9XQ==" data-look="classic" marker-end="url(#d8345951872e82ea1dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M138,310L138,314.167C138,318.333,138,326.667,138,334.333C138,342,138,349,138,352.5L138,356" id="d8345951872e82ea1dark-L_B_C_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_B_C_0" data-points="W3sieCI6MTM4LCJ5IjozMTB9LHsieCI6MTM4LCJ5IjozMzV9LHsieCI6MTM4LCJ5IjozNjB9XQ==" data-look="classic" marker-end="url(#d8345951872e82ea1dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M138,462L138,466.167C138,470.333,138,478.667,138,486.333C138,494,138,501,138,504.5L138,508" id="d8345951872e82ea1dark-L_C_D_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_C_D_0" data-points="W3sieCI6MTM4LCJ5Ijo0NjJ9LHsieCI6MTM4LCJ5Ijo0ODd9LHsieCI6MTM4LCJ5Ijo1MTJ9XQ==" data-look="classic" marker-end="url(#d8345951872e82ea1dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M138,566L138,570.167C138,574.333,138,582.667,138,590.333C138,598,138,605,138,608.5L138,612" id="d8345951872e82ea1dark-L_D_E_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_D_E_0" data-points="W3sieCI6MTM4LCJ5Ijo1NjZ9LHsieCI6MTM4LCJ5Ijo1OTF9LHsieCI6MTM4LCJ5Ijo2MTZ9XQ==" data-look="classic" marker-end="url(#d8345951872e82ea1dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M138,766L138,770.167C138,774.333,138,782.667,138,790.333C138,798,138,805,138,808.5L138,812" id="d8345951872e82ea1dark-L_E_F_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_F_0" data-points="W3sieCI6MTM4LCJ5Ijo3NjZ9LHsieCI6MTM4LCJ5Ijo3OTF9LHsieCI6MTM4LCJ5Ijo4MTZ9XQ==" data-look="classic" marker-end="url(#d8345951872e82ea1dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A_B_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_B_C_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_C_D_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_D_E_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_E_F_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="d8345951872e82ea1dark-flowchart-A-0" data-look="classic" transform="translate(138, 71)"&gt;&lt;rect class="basic label-container" style="" x="-130" y="-63" width="260" height="126"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-100, -48)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="200" height="96"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;uv installer drops ~/.local/bin/env&lt;br&gt;(a PATH snippet, meant to be sourced)&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d8345951872e82ea1dark-flowchart-B-1" data-look="classic" transform="translate(138, 247)"&gt;&lt;rect class="basic label-container" style="" x="-130" y="-63" width="260" height="126"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-100, -48)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="200" height="96"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;something marks it executable&lt;br&gt;(culprit unknown, case left open)&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d8345951872e82ea1dark-flowchart-C-3" data-look="classic" transform="translate(138, 411)"&gt;&lt;rect class="basic label-container" style="" x="-130" y="-51" width="260" height="102"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-100, -36)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="200" height="72"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;~/.local/bin sits second in PATH,&lt;br&gt;ahead of /usr/bin&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d8345951872e82ea1dark-flowchart-D-5" data-look="classic" transform="translate(138, 539)"&gt;&lt;rect class="basic label-container" style="" x="-129.828125" y="-27" width="259.65625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-99.828125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="199.65625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;it now shadows /usr/bin/env&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d8345951872e82ea1dark-flowchart-E-7" data-look="classic" transform="translate(138, 691)"&gt;&lt;rect class="basic label-container" style="" x="-130" y="-75" width="260" height="150"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-100, -60)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="200" height="120"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;'env ... cmd' runs the snippet instead:&lt;br&gt;sets a few variables, exits 0,&lt;br&gt;never runs cmd&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d8345951872e82ea1dark-flowchart-F-9" data-look="classic" transform="translate(138, 855)"&gt;&lt;rect class="basic label-container" style="" x="-129.4140625" y="-39" width="258.828125" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-99.4140625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="198.828125" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;symptom: git init succeeds,&lt;br&gt;no .git exists&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id="d8345951872e82ea1dark-drop-shadow" height="130%" width="130%"&gt;&lt;feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#FFFFFF"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id="d8345951872e82ea1dark-drop-shadow-small" height="150%" width="150%"&gt;&lt;feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#FFFFFF"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;linearGradient id="d8345951872e82ea1dark-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"&gt;&lt;stop offset="0%" stop-color="#cccccc" stop-opacity="1"&gt;&lt;/stop&gt;&lt;stop offset="100%" stop-color="hsl(180, 0%, 18.3529411765%)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;/linearGradient&gt;&lt;/svg&gt;&lt;/div&gt;&#10;&lt;p&gt;Every &lt;code&gt;env -u X cmd&lt;/code&gt;, every shebang-adjacent &lt;code&gt;env&lt;/code&gt; trick, every script that spelled out &lt;code&gt;env&lt;/code&gt; for portability: all of them ran a five-line PATH snippet and stopped. With exit 0, because the snippet ran fine. It was just never asked to run your command, since sourcing semantics and executing semantics are different contracts.&lt;/p&gt;&#10;&lt;p&gt;The fix was one line:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod -x ~/.local/bin/env&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Finding the line took the better part of a debugging session. So the incident became a permanent test, with the story written into the comment:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# uv&amp;#39;s installer drops a PATH snippet at ~/.local/bin/env meant to be&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# SOURCED; if it ever becomes executable it shadows /usr/bin/env (PATH&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# puts ~/.local/bin second) and silently swallows every &amp;#39;env ... cmd&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# invocation with exit 0. That exact trap cost a debugging session.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;run_test &lt;span class="s2"&gt;&amp;#34;env resolves to /usr/bin/env (no executable shim)&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;[ \&amp;#34;\$(command -v env)\&amp;#34; = /usr/bin/env ]&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;There is also a generalized version: a scan that flags any executable in &lt;code&gt;~/.local/bin&lt;/code&gt; shadowing a system command. The specific trap gets a named test; the class of trap gets a sweep.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Case 2: the fixture that reformatted my real repo&#10; &lt;div id="case-2-the-fixture-that-reformatted-my-real-repo" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#case-2-the-fixture-that-reformatted-my-real-repo" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;I was writing a fixture test for the secret scanner: create a throwaway git repo in a temp directory, plant a fake credential, confirm the scanner catches it. Standard stuff.&lt;/p&gt;&#10;&lt;p&gt;The test runs inside the yadm pre-commit hook. yadm exports &lt;code&gt;GIT_DIR&lt;/code&gt; and &lt;code&gt;GIT_WORK_TREE&lt;/code&gt; for its own purposes, and here is the part I did not respect enough: those environment variables outrank &lt;code&gt;git -C &amp;lt;path&amp;gt;&lt;/code&gt;. The &lt;code&gt;-C&lt;/code&gt; flag changes the working directory; the environment still decides which repository you are talking to.&lt;/p&gt;&#10;&lt;p&gt;So the fixture&amp;rsquo;s &lt;code&gt;git init&lt;/code&gt; reinitialized the real yadm repository. It flipped &lt;code&gt;core.bare&lt;/code&gt; and broke the repo&amp;rsquo;s configuration. Recovery turned out to be one setting, with zero history lost:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yadm gitconfig core.bare false&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;But the lesson went into the suite in capital letters:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# CRITICAL: every call strips GIT_DIR/GIT_WORK_TREE — the yadm&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# pre_commit hook exports them, and an ambient GIT_DIR silently&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# redirects fixture git commands at the REAL yadm repo (this once&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# flipped its core.bare).&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;GL_GIT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;env -u GIT_DIR -u GIT_WORK_TREE git&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$GL_GIT&lt;/span&gt; -C &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$GL_TMP&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; init -q&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;The suite now also runs a hostile-environment simulation: it deliberately plants a decoy &lt;code&gt;GIT_DIR&lt;/code&gt; and confirms the fixtures ignore it. And the fake credential is assembled at runtime, so no secret-shaped literal ever exists in the repo for a scanner to trip on:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;aws_key = &amp;#34;%s%s&amp;#34;\n&amp;#39;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;AKIA&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ZZZQK9X2M4P7L3TQ&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$GL_TMP&lt;/span&gt;&lt;span class="s2"&gt;/leak.txt&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Case 3: the file manager that shrugged&#10; &lt;div id="case-3-the-file-manager-that-shrugged" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#case-3-the-file-manager-that-shrugged" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;yazi 26 renamed a fetcher config field from &lt;code&gt;id&lt;/code&gt; to &lt;code&gt;group&lt;/code&gt;. My config still said &lt;code&gt;id&lt;/code&gt;. When yazi hits a config it cannot parse, it does not error; it falls back to its presets and carries on looking almost normal. The git and mactag columns just stopped being enriched, and I only noticed weeks later, by accident.&lt;/p&gt;&#10;&lt;p&gt;The canary here is two words:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yazi --version &lt;span class="c1"&gt;# exits 1 when the config fails to parse&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;That exit-code behavior is something I tested, not something I read somewhere. It now runs in the test suite and again after upgrades, as a schema check. When yazi next renames a field, the failure will be loud and same-day instead of silent and discovered by luck.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The ending: a year later, the case closed itself&#10; &lt;div id="the-ending-a-year-later-the-case-closed-itself" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-ending-a-year-later-the-case-closed-itself" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Here is where case 1 gets its resolution, and it did not come from detective work.&lt;/p&gt;&#10;&lt;p&gt;An unrelated idempotency audit of the bootstrap script added one final step to it: after bootstrapping, run the full test suite as self-verification. The very first self-verification run came back red.&lt;/p&gt;&#10;&lt;p&gt;The bootstrap script contained a blanket &lt;code&gt;chmod +x ~/.local/bin/*&lt;/code&gt;. The &amp;ldquo;scripts must be executable&amp;rdquo; convention, applied to a whole directory. It had just re-armed the uv trap, a year after I defused it, and it had presumably been the original armer all along. One line took down three tests at once: the &lt;code&gt;env&lt;/code&gt; resolution test, the PATH shadow sweep, and the gitleaks fixtures, whose &lt;code&gt;env -u&lt;/code&gt; calls were being swallowed again.&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# before: the whole directory gets the executable bit.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# uv&amp;#39;s source-me env snippet is in there, so the trap gets&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# re-armed on every bootstrap run.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x ~/.local/bin/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# after: only scripts yadm actually tracks get chmod&amp;#39;d.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# untracked files (including uv&amp;#39;s env) never gain the bit.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;The full lifecycle reads like this: symptom, defusal, regression test, then a year of quiet, then the test catches the original root cause in the act of reoffending, and the root cause gets fixed. The gap between step three and step four was twelve months. The gap between &amp;ldquo;bootstrap gained self-verification&amp;rdquo; and &amp;ldquo;cold case closed&amp;rdquo; was a few minutes.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The common shape&#10; &lt;div id="the-common-shape" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-common-shape" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;All three cases had no error message. All three returned success. All three were a system helpfully falling back to something instead of failing: a snippet standing in for a binary, an environment variable standing in for a flag, presets standing in for a config.&lt;/p&gt;&#10;&lt;p&gt;Silent fallback is the expensive kind of bug. A loud failure costs you five minutes. A quiet substitution costs you weeks, because nothing marks the moment where reality diverged from your model of it.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Institutionalizing the paranoia&#10; &lt;div id="institutionalizing-the-paranoia" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#institutionalizing-the-paranoia" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Every incident in this post exists in the test suite as a named check. The suite grew from 74 checks to 105 across this overhaul, and almost all of that growth is &amp;ldquo;we got bitten here&amp;rdquo; items. Case 1 is the proof that the habit pays twice: the test written to protect the future is the same one that closed the past.&lt;/p&gt;&#10;&lt;p&gt;The other byproduct is a small document, &lt;code&gt;docs/upgrade-watch.md&lt;/code&gt;, pairing every config file that tracks an upstream schema with a canary that fails loudly:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| Config file | Canary |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| --------------------------- | ----------------------- |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| ~/.config/yazi/yazi.toml | yazi --version |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| ~/.config/atuin/config.toml | atuin doctor |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| ~/.tmux.conf | throwaway-server parse |&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| ~/.local/bin/env (uv) | suite `env` check |&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Lessons&#10; &lt;div id="lessons" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#lessons" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Environment variables outrank the flags on your command line. &lt;code&gt;git -C&lt;/code&gt; does not protect you from an ambient &lt;code&gt;GIT_DIR&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;A file that is meant to be sourced becomes a command-swallowing trap the moment it gains an executable bit and a good PATH position.&lt;/li&gt;&#10;&lt;li&gt;Tools that silently fall back to defaults on a bad config need a canary with a real exit code. Test the canary&amp;rsquo;s behavior; do not assume it.&lt;/li&gt;&#10;&lt;li&gt;Write the regression test even when the root cause is still unknown. Mine waited a year and then caught the culprit red-handed.&lt;/li&gt;&#10;&lt;li&gt;Bootstrap scripts should only touch files they own. A wildcard &lt;code&gt;chmod&lt;/code&gt; is a loaded gun pointed at the future.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h2 class="relative group"&gt;References&#10; &lt;div id="references" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#references" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/astral-sh/uv" target="_blank" rel="noreferrer"&gt;uv&lt;/a&gt; (the installer that ships the &lt;code&gt;~/.local/bin/env&lt;/code&gt; snippet)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/sxyazi/yazi" target="_blank" rel="noreferrer"&gt;yazi&lt;/a&gt; (the config-schema rename landed in yazi 26; exit-code canary behavior verified on this machine)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://yadm.io/docs/hooks" target="_blank" rel="noreferrer"&gt;yadm hooks documentation&lt;/a&gt; (the pre-commit hook environment where &lt;code&gt;GIT_DIR&lt;/code&gt;/&lt;code&gt;GIT_WORK_TREE&lt;/code&gt; are exported)&lt;/li&gt;&#10;&lt;li&gt;The repo and its test suite: &lt;a href="https://github.com/nickboy/dotfiles" target="_blank" rel="noreferrer"&gt;nickboy/dotfiles&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</content:encoded></item><item><title>My diagrams rendered on refresh and vanished on click. The head never loaded.</title><link>https://nick-liu.com/posts/htmx-vendor-bundles-blowfish/</link><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><author>nickboy@users.noreply.github.com (Nick Liu)</author><guid>https://nick-liu.com/posts/htmx-vendor-bundles-blowfish/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;A reader clicking from my homepage to a post with a diagram got a block of raw mermaid source. The same reader pasting that post's URL directly got a rendered diagram. Same page, same build, same browser. The difference was the click, and the bug had been live on this site for months across every diagram, every math formula, and every chart, because I had only ever tested pages by loading them directly.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="tested-with" role="note"&gt;&#10; &lt;span class="tested-with-icon" aria-hidden="true"&gt;🧪&lt;/span&gt;&#10; &lt;span&gt;Tested with &lt;strong&gt;Blowfish&lt;/strong&gt; &lt;code&gt;2.10x&lt;/code&gt; · htmx 2.0.10&lt;/span&gt;&#10;&lt;/div&gt;&#10;&#10;&#10;&lt;h2 class="relative group"&gt;Two features, both reasonable, one collision&#10; &lt;div id="two-features-both-reasonable-one-collision" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#two-features-both-reasonable-one-collision" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;This site has htmx&amp;rsquo;s &lt;code&gt;hx-boost&lt;/code&gt; on the body: internal navigation swaps page content in place instead of doing full page loads, which keeps transitions smooth. Separately, the Blowfish theme is smart about heavy libraries: mermaid, KaTeX, and Chart.js bundles are only included on pages that use them, injected into the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; of exactly those pages.&lt;/p&gt;</description><content:encoded>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;A reader clicking from my homepage to a post with a diagram got a block of raw mermaid source. The same reader pasting that post's URL directly got a rendered diagram. Same page, same build, same browser. The difference was the click, and the bug had been live on this site for months across every diagram, every math formula, and every chart, because I had only ever tested pages by loading them directly.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="tested-with" role="note"&gt;&#10; &lt;span class="tested-with-icon" aria-hidden="true"&gt;🧪&lt;/span&gt;&#10; &lt;span&gt;Tested with &lt;strong&gt;Blowfish&lt;/strong&gt; &lt;code&gt;2.10x&lt;/code&gt; · htmx 2.0.10&lt;/span&gt;&#10;&lt;/div&gt;&#10;&#10;&#10;&lt;h2 class="relative group"&gt;Two features, both reasonable, one collision&#10; &lt;div id="two-features-both-reasonable-one-collision" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#two-features-both-reasonable-one-collision" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;This site has htmx&amp;rsquo;s &lt;code&gt;hx-boost&lt;/code&gt; on the body: internal navigation swaps page content in place instead of doing full page loads, which keeps transitions smooth. Separately, the Blowfish theme is smart about heavy libraries: mermaid, KaTeX, and Chart.js bundles are only included on pages that use them, injected into the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; of exactly those pages.&lt;/p&gt;&#10;&lt;p&gt;Each feature is sensible alone. Together they have a hole in the middle:&lt;/p&gt;&#10;&lt;div class="not-prose diagram diagram-light"&gt;&lt;svg id="d4c0c6133c60e0204light" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 2504.984375px;" viewBox="0 0 2504.984375 188" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#d4c0c6133c60e0204light{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#d4c0c6133c60e0204light .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#d4c0c6133c60e0204light .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#d4c0c6133c60e0204light .error-icon{fill:rgb(255, 255, 255);}#d4c0c6133c60e0204light .error-text{fill:#000000;stroke:#000000;}#d4c0c6133c60e0204light .edge-thickness-normal{stroke-width:1px;}#d4c0c6133c60e0204light .edge-thickness-thick{stroke-width:3.5px;}#d4c0c6133c60e0204light .edge-pattern-solid{stroke-dasharray:0;}#d4c0c6133c60e0204light .edge-thickness-invisible{stroke-width:0;fill:none;}#d4c0c6133c60e0204light .edge-pattern-dashed{stroke-dasharray:3;}#d4c0c6133c60e0204light .edge-pattern-dotted{stroke-dasharray:2;}#d4c0c6133c60e0204light .marker{fill:rgb(74, 86, 92);stroke:rgb(74, 86, 92);}#d4c0c6133c60e0204light .marker.cross{stroke:rgb(74, 86, 92);}#d4c0c6133c60e0204light svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#d4c0c6133c60e0204light p{margin:0;}#d4c0c6133c60e0204light .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#333;}#d4c0c6133c60e0204light .cluster-label text{fill:#000000;}#d4c0c6133c60e0204light .cluster-label span{color:#000000;}#d4c0c6133c60e0204light .cluster-label span p{background-color:transparent;}#d4c0c6133c60e0204light .label text,#d4c0c6133c60e0204light span{fill:#333;color:#333;}#d4c0c6133c60e0204light .node rect,#d4c0c6133c60e0204light .node circle,#d4c0c6133c60e0204light .node ellipse,#d4c0c6133c60e0204light .node polygon,#d4c0c6133c60e0204light .node path{fill:rgb(255, 255, 255);stroke:rgb(204, 216, 222);stroke-width:1px;}#d4c0c6133c60e0204light .rough-node .label text,#d4c0c6133c60e0204light .node .label text,#d4c0c6133c60e0204light .image-shape .label,#d4c0c6133c60e0204light .icon-shape .label{text-anchor:middle;}#d4c0c6133c60e0204light .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#d4c0c6133c60e0204light .rough-node .label,#d4c0c6133c60e0204light .node .label,#d4c0c6133c60e0204light .image-shape .label,#d4c0c6133c60e0204light .icon-shape .label{text-align:center;}#d4c0c6133c60e0204light .node.clickable{cursor:pointer;}#d4c0c6133c60e0204light .root .anchor path{fill:rgb(74, 86, 92)!important;stroke-width:0;stroke:rgb(74, 86, 92);}#d4c0c6133c60e0204light .arrowheadPath{fill:#000000;}#d4c0c6133c60e0204light .edgePath .path{stroke:rgb(74, 86, 92);stroke-width:1px;}#d4c0c6133c60e0204light .flowchart-link{stroke:rgb(74, 86, 92);fill:none;}#d4c0c6133c60e0204light .edgeLabel{background-color:rgb(182, 240, 255);text-align:center;}#d4c0c6133c60e0204light .edgeLabel p{background-color:rgb(182, 240, 255);}#d4c0c6133c60e0204light .edgeLabel rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#d4c0c6133c60e0204light .labelBkg{background-color:rgba(182, 240, 255, 0.5);}#d4c0c6133c60e0204light .cluster rect{fill:rgb(255, 255, 255);stroke:rgb(129, 146, 154);stroke-width:1px;}#d4c0c6133c60e0204light .cluster text{fill:#000000;}#d4c0c6133c60e0204light .cluster span{color:#000000;}#d4c0c6133c60e0204light div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:12px;background:rgb(255, 255, 255);border:1px solid rgb(129, 146, 154);border-radius:2px;pointer-events:none;z-index:100;}#d4c0c6133c60e0204light .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#d4c0c6133c60e0204light rect.text{fill:none;stroke-width:0;}#d4c0c6133c60e0204light .icon-shape,#d4c0c6133c60e0204light .image-shape{background-color:rgb(182, 240, 255);text-align:center;}#d4c0c6133c60e0204light .icon-shape p,#d4c0c6133c60e0204light .image-shape p{background-color:rgb(182, 240, 255);padding:2px;}#d4c0c6133c60e0204light .icon-shape .label rect,#d4c0c6133c60e0204light .image-shape .label rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#d4c0c6133c60e0204light .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#d4c0c6133c60e0204light .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#d4c0c6133c60e0204light .node .neo-node{stroke:rgb(204, 216, 222);}#d4c0c6133c60e0204light [data-look="neo"].node rect,#d4c0c6133c60e0204light [data-look="neo"].cluster rect,#d4c0c6133c60e0204light [data-look="neo"].node polygon{stroke:url(#d4c0c6133c60e0204light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d4c0c6133c60e0204light [data-look="neo"].swimlane.cluster rect{filter:none;}#d4c0c6133c60e0204light [data-look="neo"].node path{stroke:url(#d4c0c6133c60e0204light-gradient);stroke-width:1px;}#d4c0c6133c60e0204light [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d4c0c6133c60e0204light [data-look="neo"].node .neo-line path{stroke:rgb(204, 216, 222);filter:none;}#d4c0c6133c60e0204light [data-look="neo"].node circle{stroke:url(#d4c0c6133c60e0204light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d4c0c6133c60e0204light [data-look="neo"].node circle .state-start{fill:#000000;}#d4c0c6133c60e0204light [data-look="neo"].icon-shape .icon{fill:url(#d4c0c6133c60e0204light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d4c0c6133c60e0204light [data-look="neo"].icon-shape .icon-neo path{stroke:url(#d4c0c6133c60e0204light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d4c0c6133c60e0204light :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="d4c0c6133c60e0204light_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204light_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204light_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"&gt;&lt;path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204light_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"&gt;&lt;polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204light_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204light_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204light_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204light_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204light_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204light_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204light_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204light_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class="root"&gt;&lt;g class="clusters"&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="root" transform="translate(0, 0)"&gt;&lt;g class="clusters"&gt;&lt;g class="cluster" id="d4c0c6133c60e0204light-N" data-look="classic"&gt;&lt;rect style="" x="8" y="8" width="1569.375" height="172"&gt;&lt;/rect&gt;&lt;g class="cluster-label" transform="translate(720.65625, 8)"&gt;&lt;foreignObject width="144.0625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;hx-boost navigation&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;path d="M302.109,94L308.359,94C314.609,94,327.109,94,338.943,94C350.776,94,361.943,94,367.526,94L373.109,94" id="d4c0c6133c60e0204light-L_D_E_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_D_E_0" data-points="W3sieCI6MzAyLjEwOTM3NSwieSI6OTR9LHsieCI6MzM5LjYwOTM3NSwieSI6OTR9LHsieCI6Mzc3LjEwOTM3NSwieSI6OTR9XQ==" data-look="classic" marker-end="url(#d4c0c6133c60e0204light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M592.25,94L598.5,94C604.75,94,617.25,94,629.083,94C640.917,94,652.083,94,657.667,94L663.25,94" id="d4c0c6133c60e0204light-L_E_F_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_F_0" data-points="W3sieCI6NTkyLjI1LCJ5Ijo5NH0seyJ4Ijo2MjkuNzUsInkiOjk0fSx7IngiOjY2Ny4yNSwieSI6OTR9XQ==" data-look="classic" marker-end="url(#d4c0c6133c60e0204light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M927.25,94L933.5,94C939.75,94,952.25,94,964.083,94C975.917,94,987.083,94,992.667,94L998.25,94" id="d4c0c6133c60e0204light-L_F_G_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_F_G_0" data-points="W3sieCI6OTI3LjI1LCJ5Ijo5NH0seyJ4Ijo5NjQuNzUsInkiOjk0fSx7IngiOjEwMDIuMjUsInkiOjk0fV0=" data-look="classic" marker-end="url(#d4c0c6133c60e0204light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M1262.25,94L1268.5,94C1274.75,94,1287.25,94,1299.083,94C1310.917,94,1322.083,94,1327.667,94L1333.25,94" id="d4c0c6133c60e0204light-L_G_H_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_G_H_0" data-points="W3sieCI6MTI2Mi4yNSwieSI6OTR9LHsieCI6MTI5OS43NSwieSI6OTR9LHsieCI6MTMzNy4yNSwieSI6OTR9XQ==" data-look="classic" marker-end="url(#d4c0c6133c60e0204light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_D_E_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_E_F_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_F_G_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_G_H_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="d4c0c6133c60e0204light-flowchart-D-3" data-look="classic" transform="translate(173.8046875, 94)"&gt;&lt;rect class="basic label-container" style="" x="-128.3046875" y="-27" width="256.609375" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-98.3046875, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="196.609375" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;htmx fetches the new page&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d4c0c6133c60e0204light-flowchart-E-4" data-look="classic" transform="translate(484.6796875, 94)"&gt;&lt;rect class="basic label-container" style="" x="-107.5703125" y="-27" width="215.140625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-77.5703125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="155.140625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;swaps the BODY only&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d4c0c6133c60e0204light-flowchart-F-6" data-look="classic" transform="translate(797.25, 94)"&gt;&lt;rect class="basic label-container" style="" x="-130" y="-51" width="260" height="102"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-100, -36)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="200" height="72"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;the new head, and its&lt;br&gt;bundle script, never execute&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d4c0c6133c60e0204light-flowchart-G-8" data-look="classic" transform="translate(1132.25, 94)"&gt;&lt;rect class="basic label-container" style="" x="-130" y="-51" width="260" height="102"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-100, -36)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="200" height="72"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;typeof mermaid is undefined,&lt;br&gt;re-init guard silently skips&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d4c0c6133c60e0204light-flowchart-H-10" data-look="classic" transform="translate(1438.5625, 94)"&gt;&lt;rect class="basic label-container" style="" x="-101.3125" y="-39" width="202.625" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-71.3125, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="142.625" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;raw diagram source&lt;br&gt;on the page&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="root" transform="translate(1619.375, 12)"&gt;&lt;g class="clusters"&gt;&lt;g class="cluster" id="d4c0c6133c60e0204light-L" data-look="classic"&gt;&lt;rect style="" x="8" y="8" width="869.609375" height="148"&gt;&lt;/rect&gt;&lt;g class="cluster-label" transform="translate(372.1796875, 8)"&gt;&lt;foreignObject width="141.25" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;direct load / refresh&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;path d="M290.828,82L297.078,82C303.328,82,315.828,82,327.661,82C339.495,82,350.661,82,356.245,82L361.828,82" id="d4c0c6133c60e0204light-L_A_B_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A_B_0" data-points="W3sieCI6MjkwLjgyODEyNSwieSI6ODJ9LHsieCI6MzI4LjMyODEyNSwieSI6ODJ9LHsieCI6MzY1LjgyODEyNSwieSI6ODJ9XQ==" data-look="classic" marker-end="url(#d4c0c6133c60e0204light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M586.469,82L592.719,82C598.969,82,611.469,82,623.302,82C635.135,82,646.302,82,651.885,82L657.469,82" id="d4c0c6133c60e0204light-L_B_C_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_B_C_0" data-points="W3sieCI6NTg2LjQ2ODc1LCJ5Ijo4Mn0seyJ4Ijo2MjMuOTY4NzUsInkiOjgyfSx7IngiOjY2MS40Njg3NSwieSI6ODJ9XQ==" data-look="classic" marker-end="url(#d4c0c6133c60e0204light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A_B_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_B_C_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="d4c0c6133c60e0204light-flowchart-A-0" data-look="classic" transform="translate(168.1640625, 82)"&gt;&lt;rect class="basic label-container" style="" x="-122.6640625" y="-27" width="245.328125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-92.6640625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="185.328125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;browser parses full HTML&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d4c0c6133c60e0204light-flowchart-B-1" data-look="classic" transform="translate(476.1484375, 82)"&gt;&lt;rect class="basic label-container" style="" x="-110.3203125" y="-39" width="220.640625" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-80.3203125, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="160.640625" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;head scripts execute,&lt;br&gt;mermaid bundle loads&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d4c0c6133c60e0204light-flowchart-C-2" data-look="classic" transform="translate(750.7890625, 82)"&gt;&lt;rect class="basic label-container" style="" x="-89.3203125" y="-27" width="178.640625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-59.3203125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="118.640625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;diagram renders&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id="d4c0c6133c60e0204light-drop-shadow" height="130%" width="130%"&gt;&lt;feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id="d4c0c6133c60e0204light-drop-shadow-small" height="150%" width="150%"&gt;&lt;feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;linearGradient id="d4c0c6133c60e0204light-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"&gt;&lt;stop offset="0%" stop-color="rgb(204, 216, 222)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;stop offset="100%" stop-color="rgb(28, 209, 255)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;/linearGradient&gt;&lt;/svg&gt;&lt;/div&gt;&#10; &lt;div class="not-prose diagram diagram-dark"&gt;&lt;svg id="d4c0c6133c60e0204dark" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 2504.984375px;" viewBox="0 0 2504.984375 188" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#d4c0c6133c60e0204dark{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#d4c0c6133c60e0204dark .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#d4c0c6133c60e0204dark .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#d4c0c6133c60e0204dark .error-icon{fill:#a44141;}#d4c0c6133c60e0204dark .error-text{fill:#ddd;stroke:#ddd;}#d4c0c6133c60e0204dark .edge-thickness-normal{stroke-width:1px;}#d4c0c6133c60e0204dark .edge-thickness-thick{stroke-width:3.5px;}#d4c0c6133c60e0204dark .edge-pattern-solid{stroke-dasharray:0;}#d4c0c6133c60e0204dark .edge-thickness-invisible{stroke-width:0;fill:none;}#d4c0c6133c60e0204dark .edge-pattern-dashed{stroke-dasharray:3;}#d4c0c6133c60e0204dark .edge-pattern-dotted{stroke-dasharray:2;}#d4c0c6133c60e0204dark .marker{fill:lightgrey;stroke:lightgrey;}#d4c0c6133c60e0204dark .marker.cross{stroke:lightgrey;}#d4c0c6133c60e0204dark svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#d4c0c6133c60e0204dark p{margin:0;}#d4c0c6133c60e0204dark .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#ccc;}#d4c0c6133c60e0204dark .cluster-label text{fill:#F9FFFE;}#d4c0c6133c60e0204dark .cluster-label span{color:#F9FFFE;}#d4c0c6133c60e0204dark .cluster-label span p{background-color:transparent;}#d4c0c6133c60e0204dark .label text,#d4c0c6133c60e0204dark span{fill:#ccc;color:#ccc;}#d4c0c6133c60e0204dark .node rect,#d4c0c6133c60e0204dark .node circle,#d4c0c6133c60e0204dark .node ellipse,#d4c0c6133c60e0204dark .node polygon,#d4c0c6133c60e0204dark .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#d4c0c6133c60e0204dark .rough-node .label text,#d4c0c6133c60e0204dark .node .label text,#d4c0c6133c60e0204dark .image-shape .label,#d4c0c6133c60e0204dark .icon-shape .label{text-anchor:middle;}#d4c0c6133c60e0204dark .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#d4c0c6133c60e0204dark .rough-node .label,#d4c0c6133c60e0204dark .node .label,#d4c0c6133c60e0204dark .image-shape .label,#d4c0c6133c60e0204dark .icon-shape .label{text-align:center;}#d4c0c6133c60e0204dark .node.clickable{cursor:pointer;}#d4c0c6133c60e0204dark .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#d4c0c6133c60e0204dark .arrowheadPath{fill:lightgrey;}#d4c0c6133c60e0204dark .edgePath .path{stroke:lightgrey;stroke-width:1px;}#d4c0c6133c60e0204dark .flowchart-link{stroke:lightgrey;fill:none;}#d4c0c6133c60e0204dark .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#d4c0c6133c60e0204dark .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#d4c0c6133c60e0204dark .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#d4c0c6133c60e0204dark .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#d4c0c6133c60e0204dark .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#d4c0c6133c60e0204dark .cluster text{fill:#F9FFFE;}#d4c0c6133c60e0204dark .cluster span{color:#F9FFFE;}#d4c0c6133c60e0204dark div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#d4c0c6133c60e0204dark .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#d4c0c6133c60e0204dark rect.text{fill:none;stroke-width:0;}#d4c0c6133c60e0204dark .icon-shape,#d4c0c6133c60e0204dark .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#d4c0c6133c60e0204dark .icon-shape p,#d4c0c6133c60e0204dark .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#d4c0c6133c60e0204dark .icon-shape .label rect,#d4c0c6133c60e0204dark .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#d4c0c6133c60e0204dark .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#d4c0c6133c60e0204dark .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#d4c0c6133c60e0204dark .node .neo-node{stroke:#ccc;}#d4c0c6133c60e0204dark [data-look="neo"].node rect,#d4c0c6133c60e0204dark [data-look="neo"].cluster rect,#d4c0c6133c60e0204dark [data-look="neo"].node polygon{stroke:url(#d4c0c6133c60e0204dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d4c0c6133c60e0204dark [data-look="neo"].swimlane.cluster rect{filter:none;}#d4c0c6133c60e0204dark [data-look="neo"].node path{stroke:url(#d4c0c6133c60e0204dark-gradient);stroke-width:1px;}#d4c0c6133c60e0204dark [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d4c0c6133c60e0204dark [data-look="neo"].node .neo-line path{stroke:#ccc;filter:none;}#d4c0c6133c60e0204dark [data-look="neo"].node circle{stroke:url(#d4c0c6133c60e0204dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d4c0c6133c60e0204dark [data-look="neo"].node circle .state-start{fill:#000000;}#d4c0c6133c60e0204dark [data-look="neo"].icon-shape .icon{fill:url(#d4c0c6133c60e0204dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d4c0c6133c60e0204dark [data-look="neo"].icon-shape .icon-neo path{stroke:url(#d4c0c6133c60e0204dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d4c0c6133c60e0204dark :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="d4c0c6133c60e0204dark_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204dark_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204dark_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"&gt;&lt;path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204dark_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"&gt;&lt;polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204dark_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204dark_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204dark_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204dark_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204dark_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204dark_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204dark_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="d4c0c6133c60e0204dark_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class="root"&gt;&lt;g class="clusters"&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="root" transform="translate(0, 0)"&gt;&lt;g class="clusters"&gt;&lt;g class="cluster" id="d4c0c6133c60e0204dark-N" data-look="classic"&gt;&lt;rect style="" x="8" y="8" width="1569.375" height="172"&gt;&lt;/rect&gt;&lt;g class="cluster-label" transform="translate(720.65625, 8)"&gt;&lt;foreignObject width="144.0625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;hx-boost navigation&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;path d="M302.109,94L308.359,94C314.609,94,327.109,94,338.943,94C350.776,94,361.943,94,367.526,94L373.109,94" id="d4c0c6133c60e0204dark-L_D_E_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_D_E_0" data-points="W3sieCI6MzAyLjEwOTM3NSwieSI6OTR9LHsieCI6MzM5LjYwOTM3NSwieSI6OTR9LHsieCI6Mzc3LjEwOTM3NSwieSI6OTR9XQ==" data-look="classic" marker-end="url(#d4c0c6133c60e0204dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M592.25,94L598.5,94C604.75,94,617.25,94,629.083,94C640.917,94,652.083,94,657.667,94L663.25,94" id="d4c0c6133c60e0204dark-L_E_F_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_F_0" data-points="W3sieCI6NTkyLjI1LCJ5Ijo5NH0seyJ4Ijo2MjkuNzUsInkiOjk0fSx7IngiOjY2Ny4yNSwieSI6OTR9XQ==" data-look="classic" marker-end="url(#d4c0c6133c60e0204dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M927.25,94L933.5,94C939.75,94,952.25,94,964.083,94C975.917,94,987.083,94,992.667,94L998.25,94" id="d4c0c6133c60e0204dark-L_F_G_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_F_G_0" data-points="W3sieCI6OTI3LjI1LCJ5Ijo5NH0seyJ4Ijo5NjQuNzUsInkiOjk0fSx7IngiOjEwMDIuMjUsInkiOjk0fV0=" data-look="classic" marker-end="url(#d4c0c6133c60e0204dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M1262.25,94L1268.5,94C1274.75,94,1287.25,94,1299.083,94C1310.917,94,1322.083,94,1327.667,94L1333.25,94" id="d4c0c6133c60e0204dark-L_G_H_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_G_H_0" data-points="W3sieCI6MTI2Mi4yNSwieSI6OTR9LHsieCI6MTI5OS43NSwieSI6OTR9LHsieCI6MTMzNy4yNSwieSI6OTR9XQ==" data-look="classic" marker-end="url(#d4c0c6133c60e0204dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_D_E_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_E_F_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_F_G_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_G_H_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="d4c0c6133c60e0204dark-flowchart-D-3" data-look="classic" transform="translate(173.8046875, 94)"&gt;&lt;rect class="basic label-container" style="" x="-128.3046875" y="-27" width="256.609375" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-98.3046875, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="196.609375" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;htmx fetches the new page&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d4c0c6133c60e0204dark-flowchart-E-4" data-look="classic" transform="translate(484.6796875, 94)"&gt;&lt;rect class="basic label-container" style="" x="-107.5703125" y="-27" width="215.140625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-77.5703125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="155.140625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;swaps the BODY only&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d4c0c6133c60e0204dark-flowchart-F-6" data-look="classic" transform="translate(797.25, 94)"&gt;&lt;rect class="basic label-container" style="" x="-130" y="-51" width="260" height="102"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-100, -36)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="200" height="72"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;the new head, and its&lt;br&gt;bundle script, never execute&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d4c0c6133c60e0204dark-flowchart-G-8" data-look="classic" transform="translate(1132.25, 94)"&gt;&lt;rect class="basic label-container" style="" x="-130" y="-51" width="260" height="102"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-100, -36)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="200" height="72"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;typeof mermaid is undefined,&lt;br&gt;re-init guard silently skips&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d4c0c6133c60e0204dark-flowchart-H-10" data-look="classic" transform="translate(1438.5625, 94)"&gt;&lt;rect class="basic label-container" style="" x="-101.3125" y="-39" width="202.625" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-71.3125, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="142.625" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;raw diagram source&lt;br&gt;on the page&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="root" transform="translate(1619.375, 12)"&gt;&lt;g class="clusters"&gt;&lt;g class="cluster" id="d4c0c6133c60e0204dark-L" data-look="classic"&gt;&lt;rect style="" x="8" y="8" width="869.609375" height="148"&gt;&lt;/rect&gt;&lt;g class="cluster-label" transform="translate(372.1796875, 8)"&gt;&lt;foreignObject width="141.25" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;direct load / refresh&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;path d="M290.828,82L297.078,82C303.328,82,315.828,82,327.661,82C339.495,82,350.661,82,356.245,82L361.828,82" id="d4c0c6133c60e0204dark-L_A_B_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A_B_0" data-points="W3sieCI6MjkwLjgyODEyNSwieSI6ODJ9LHsieCI6MzI4LjMyODEyNSwieSI6ODJ9LHsieCI6MzY1LjgyODEyNSwieSI6ODJ9XQ==" data-look="classic" marker-end="url(#d4c0c6133c60e0204dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M586.469,82L592.719,82C598.969,82,611.469,82,623.302,82C635.135,82,646.302,82,651.885,82L657.469,82" id="d4c0c6133c60e0204dark-L_B_C_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_B_C_0" data-points="W3sieCI6NTg2LjQ2ODc1LCJ5Ijo4Mn0seyJ4Ijo2MjMuOTY4NzUsInkiOjgyfSx7IngiOjY2MS40Njg3NSwieSI6ODJ9XQ==" data-look="classic" marker-end="url(#d4c0c6133c60e0204dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A_B_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_B_C_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="d4c0c6133c60e0204dark-flowchart-A-0" data-look="classic" transform="translate(168.1640625, 82)"&gt;&lt;rect class="basic label-container" style="" x="-122.6640625" y="-27" width="245.328125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-92.6640625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="185.328125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;browser parses full HTML&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d4c0c6133c60e0204dark-flowchart-B-1" data-look="classic" transform="translate(476.1484375, 82)"&gt;&lt;rect class="basic label-container" style="" x="-110.3203125" y="-39" width="220.640625" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-80.3203125, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="160.640625" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;head scripts execute,&lt;br&gt;mermaid bundle loads&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d4c0c6133c60e0204dark-flowchart-C-2" data-look="classic" transform="translate(750.7890625, 82)"&gt;&lt;rect class="basic label-container" style="" x="-89.3203125" y="-27" width="178.640625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-59.3203125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="118.640625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;diagram renders&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id="d4c0c6133c60e0204dark-drop-shadow" height="130%" width="130%"&gt;&lt;feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#FFFFFF"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id="d4c0c6133c60e0204dark-drop-shadow-small" height="150%" width="150%"&gt;&lt;feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#FFFFFF"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;linearGradient id="d4c0c6133c60e0204dark-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"&gt;&lt;stop offset="0%" stop-color="#cccccc" stop-opacity="1"&gt;&lt;/stop&gt;&lt;stop offset="100%" stop-color="hsl(180, 0%, 18.3529411765%)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;/linearGradient&gt;&lt;/svg&gt;&lt;/div&gt;&#10;&lt;p&gt;&lt;code&gt;hx-boost&lt;/code&gt; &lt;a href="https://htmx.org/attributes/hx-boost/" target="_blank" rel="noreferrer"&gt;replaces the body and updates the title&lt;/a&gt;; it does not merge the incoming head. So when you navigate from a page without diagrams to a page with them, the one script tag that would have loaded the mermaid bundle is in the part of the document that gets thrown away. My re-render code even had a guard, &lt;code&gt;if (typeof mermaid !== 'undefined')&lt;/code&gt;, which is exactly the kind of guard that turns a loud failure into a silent one. It skipped, politely, every time.&lt;/p&gt;&#10;&lt;p&gt;Direct loads worked because the full document parses normally. Which is why months of my own testing missed it: I test pages by URL. Readers arrive by link.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The fix: steal the bundle URL from the response you already have&#10; &lt;div id="the-fix-steal-the-bundle-url-from-the-response-you-already-have" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-fix-steal-the-bundle-url-from-the-response-you-already-have" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The swapped-in page&amp;rsquo;s HTML passes through htmx&amp;rsquo;s hands, head included, before the body is extracted. The fix reads the bundle URL out of that response and injects the script once:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;ensureVendorThenRender&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;evt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;srcPattern&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;isReady&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;render&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isReady&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;render&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;xhr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;evt&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;evt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;detail&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;evt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;detail&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;xhr&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;xhr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;responseText&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;match&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;html&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;html&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;srcPattern&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;match&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;injectedVendors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;match&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]])&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;injectedVendors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;match&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;script&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;match&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;render&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Called from the &lt;code&gt;htmx:afterSettle&lt;/code&gt; handler with a pattern like &lt;code&gt;/\/js\/mermaid\.bundle\.[^&amp;quot;']+\.js/&lt;/code&gt;, once per library. Fingerprinted filenames come along for free since the pattern matches whatever hash the current build produced.&lt;/p&gt;&#10;&lt;p&gt;Charts needed a second layer. The theme&amp;rsquo;s chart shortcode wraps its &lt;code&gt;new Chart(...)&lt;/code&gt; call in a &lt;code&gt;DOMContentLoaded&lt;/code&gt; listener, and after an htmx swap that event is ancient history; the listener registers and waits forever. So the chart path re-inserts each inline chart script with &lt;code&gt;addEventListener&lt;/code&gt; temporarily patched to invoke &lt;code&gt;DOMContentLoaded&lt;/code&gt; callbacks immediately, plus a &lt;code&gt;Chart.getChart()&lt;/code&gt; check so nothing draws twice. It is not elegant. It is honest about the constraint: the shortcode&amp;rsquo;s markup is the theme&amp;rsquo;s, and the fix has to meet it where it is.&lt;/p&gt;&#10;&lt;p&gt;If you want the pattern&amp;rsquo;s shape as a takeaway: &lt;strong&gt;conditionally loaded assets and partial navigation are individually fine and jointly broken, and neither feature&amp;rsquo;s documentation will warn you about the other.&lt;/strong&gt; Any site combining per-page bundles with hx-boost, Turbo, or SPA-style routing has this class of bug available to it.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The tests were their own debugging story&#10; &lt;div id="the-tests-were-their-own-debugging-story" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-tests-were-their-own-debugging-story" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;I added three Playwright regression tests, each walking the failing path on purpose: land on a listing page without the library, click through to a post with it, assert the rendered artifact exists (&lt;code&gt;pre.mermaid svg&lt;/code&gt;, &lt;code&gt;.katex&lt;/code&gt;, a live &lt;code&gt;Chart.getChart()&lt;/code&gt; instance). Two traps surfaced on the way, and they cost more time than the fix itself.&lt;/p&gt;&#10;&lt;p&gt;First, the clicks kept landing on the wrong page. Blowfish&amp;rsquo;s article cards stretch the post link across the whole card and stack tag links on top of it, and Playwright&amp;rsquo;s coordinate-based click aimed at the card&amp;rsquo;s center, which happened to be a tag chip. The katex test spent several runs waiting for math on &lt;code&gt;/tags/georgia-tech/&lt;/code&gt;. The cure is &lt;code&gt;locator.dispatchEvent('click')&lt;/code&gt;, which delivers the event to the exact anchor regardless of what floats above it, plus a &lt;code&gt;waitForURL&lt;/code&gt; assertion so a wrong destination fails fast with a readable error instead of a timeout.&lt;/p&gt;&#10;&lt;p&gt;Second, my shell habit was eating the exit code. &lt;code&gt;npx playwright test | tail&lt;/code&gt; reports &lt;code&gt;tail&lt;/code&gt;&amp;rsquo;s status, which is always zero, and a failing suite sailed through my terminal looking green twice before I noticed. Redirect to a file and check the real exit code. CI was never fooled, because CI does not pipe; only my eyeballs were.&lt;/p&gt;&#10;&lt;p&gt;The affected pages, for the record, included every post in my &lt;a href="https://nick-liu.com/posts/ml-gradient-descent/" &gt;ML math series&lt;/a&gt; and the diagram in the &lt;a href="https://nick-liu.com/posts/first-claude-code-hook/" &gt;hooks post&lt;/a&gt;. All fixed by the same three functions, all guarded by the same three tests.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Lessons&#10; &lt;div id="lessons" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#lessons" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Per-page asset loading plus body-swap navigation is a bug class, not a bug. If your head is conditional and your navigation is partial, budget for the collision.&lt;/li&gt;&#10;&lt;li&gt;A &lt;code&gt;typeof x !== 'undefined'&lt;/code&gt; guard converts a crash you would notice into a skip you will not. Guards need a fallback path, not just an exit.&lt;/li&gt;&#10;&lt;li&gt;Test the click path, not only the URL path. Direct loads exercise the document pipeline; in-site navigation exercises a completely different one.&lt;/li&gt;&#10;&lt;li&gt;In tests, dispatch events to the element you mean. Coordinate clicks trust the visual stack, and the visual stack lies on layered layouts.&lt;/li&gt;&#10;&lt;li&gt;Never pipe a test runner&amp;rsquo;s output when you care about its exit code.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h2 class="relative group"&gt;References&#10; &lt;div id="references" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#references" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://htmx.org/attributes/hx-boost/" target="_blank" rel="noreferrer"&gt;htmx: hx-boost attribute&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.chartjs.org/docs/latest/developers/api.html" target="_blank" rel="noreferrer"&gt;Chart.js: Chart.getChart API&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://playwright.dev/docs/api/class-locator#locator-dispatch-event" target="_blank" rel="noreferrer"&gt;Playwright: dispatchEvent&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;The fix and tests: &lt;code&gt;layouts/partials/extend-footer.html&lt;/code&gt; and &lt;code&gt;tests/site-enhancements.spec.ts&lt;/code&gt; in this site&amp;rsquo;s repo&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</content:encoded></item></channel></rss>