<?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>Eza on Nick Liu - Software Engineer</title><link>https://nick-liu.com/tags/eza/</link><description>Recent content in Eza 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, 16 Aug 2026 17:24:04 -0700</lastBuildDate><atom:link href="https://nick-liu.com/tags/eza/index.xml" rel="self" type="application/rss+xml"/><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;
 
`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.

&lt;/div&gt;

&lt;p&gt;That was one of five. In a single day of hardening this machine, five different
tools told me things that were not true. None of the answers looked like an
error. Each one arrived as a clean, confident finding, and under each one a
check had quietly failed or asked the wrong question. All five had the same
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;
 
`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.

&lt;/div&gt;

&lt;p&gt;That was one of five. In a single day of hardening this machine, five different
tools told me things that were not true. None of the answers looked like an
error. Each one arrived as a clean, confident finding, and under each one a
check had quietly failed or asked the wrong question. All five had the same
shape underneath. Once I could name the shape, I stopped falling for it.&lt;/p&gt;

&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;
 &lt;div id="case-1-null-means-i-dont-know-not-no" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &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;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The plan was simple: free disk space by removing apps that had never been used.
The evidence came from Spotlight metadata:&lt;/p&gt;
&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;
&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
&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;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;(null)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Chrome had a date. Word did not. The conclusion looked solid, because the same
command told the two apps apart: Chrome is in use, Word is not.&lt;/p&gt;
&lt;p&gt;It was not solid. &lt;code&gt;kMDItemLastUsedDate&lt;/code&gt; is null when an app has never been
opened, &lt;em&gt;and&lt;/em&gt; when Spotlight&amp;rsquo;s metadata store has been reset. My store had been
reset. I even knew that, because four hours earlier I had written this line
into my own diagnostic report:&lt;/p&gt;
&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
&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
&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;
&lt;p&gt;The LaunchServices database was rebuilding at boot. In one section of my
report, this was a strange log line. In another section, its consequences
became hard evidence for deletion. I never connected the two.&lt;/p&gt;
&lt;p&gt;What answers &amp;ldquo;is this app still needed&amp;rdquo; is user data:&lt;/p&gt;
&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
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; 150
&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
&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
&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
&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
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Documents, lock files, container contents. Things a person made on purpose. An
index field is different: the OS is free to throw it away and rebuild it, and
while that happens the field tells you nothing.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Case 2: a query that never ran is not a query that found nothing
 &lt;div id="case-2-a-query-that-never-ran-is-not-a-query-that-found-nothing" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &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;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;My environment audit reported &amp;ldquo;no git remotes configured&amp;rdquo; for a repository
that had pushed four signed commits and opened a pull request earlier the same
day.&lt;/p&gt;
&lt;p&gt;The check behind that sentence was this:&lt;/p&gt;
&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
&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
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&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
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,
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.
Then &amp;ldquo;cannot answer&amp;rdquo; got recorded as &amp;ldquo;the answer is none&amp;rdquo;.&lt;/p&gt;
&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
&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)
&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)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The tool did not lie. &lt;code&gt;fatal: not a git repository&lt;/code&gt; and empty output are two
different results, but the code reading them treated both as &amp;ldquo;nothing there&amp;rdquo;.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Case 3: a 404 from the wrong endpoint
 &lt;div id="case-3-a-404-from-the-wrong-endpoint" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &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;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Same audit, same day: &amp;ldquo;branch protection could not be determined&amp;rdquo;. The check
had asked the classic API:&lt;/p&gt;
&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
&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;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;That is a real 404, and the message reads like a finding. But GitHub has two
protection mechanisms, and this repo uses the newer one:&lt;/p&gt;
&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;
&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
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&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;.
Any tool that only checks the old endpoint will report every ruleset-protected
branch as unprotected, in a sentence that sounds like it actually checked.&lt;/p&gt;
&lt;p&gt;Asking the right endpoint paid off twice, because the true answer held a
detail the false one would have hidden. The ruleset requires a pull request
and four status checks, with no bypass actors. But
&lt;code&gt;required_approving_review_count&lt;/code&gt; is &lt;code&gt;0&lt;/code&gt;, and there is no signature
requirement. &amp;ldquo;Protected&amp;rdquo; here means &amp;ldquo;must go through a PR and CI&amp;rdquo;. It does not
mean &amp;ldquo;must be reviewed&amp;rdquo;. My signed commits are a habit; the server never
checks them. Recording how strong a control is beats recording that one
exists.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Case 4: the number was real, the units were not
 &lt;div id="case-4-the-number-was-real-the-units-were-not" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &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;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;My health check started with a headline number: &lt;code&gt;WindowServer&lt;/code&gt; was eating
62.4% CPU, the biggest single CPU user on the machine. The number came from
&lt;code&gt;ps&lt;/code&gt;:&lt;/p&gt;
&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
&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
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&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
minute, not toward the life of the process. The cumulative figure is CPU time
divided by elapsed time:&lt;/p&gt;
&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;
&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%
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;So 42%, not 62%. The next morning brought a bigger correction, after sixteen
hours of normal use:&lt;/p&gt;
&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)
&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;
&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
was running diagnostics nonstop, with Activity Monitor open and a backup
copying files in the background. I had measured the observer and blamed the
system. The whole &amp;ldquo;WindowServer is the problem&amp;rdquo; section of that report was an
accident of timing.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Case 5: the benchmark that measured nothing happening
 &lt;div id="case-5-the-benchmark-that-measured-nothing-happening" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &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;
 &lt;/span&gt;
 
&lt;/h2&gt;
&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,
including &lt;code&gt;--git&lt;/code&gt;. I benchmarked it and got a number that ended the
discussion:&lt;/p&gt;
&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;
&lt;p&gt;Eight milliseconds. Nothing to fix. Except the same command, in the same
directory, also reported this:&lt;/p&gt;
&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
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt; 0 0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Zero lines, zero bytes, exit 0, and 128 ms of system time. The benchmark had
run inside the sandboxed shell my coding agent uses, and that sandbox blocks
the metadata and git reads that &lt;code&gt;--long --git&lt;/code&gt; needs. &lt;code&gt;eza&lt;/code&gt; was making
syscalls, and the sandbox refused every one of them. My benchmark timed the
result with great precision: a program doing nothing, very fast.&lt;/p&gt;
&lt;p&gt;I re-ran everything in a real terminal:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;directory&lt;/th&gt;
					&lt;th&gt;size&lt;/th&gt;
					&lt;th&gt;with &lt;code&gt;--git&lt;/code&gt;&lt;/th&gt;
					&lt;th&gt;without&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;nickboy.github.io&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;47 entries, &lt;strong&gt;263 tracked&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;68.8 ms&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;13.9 ms&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;claudedeck&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;125 tracked&lt;/td&gt;
					&lt;td&gt;49.0 ms&lt;/td&gt;
					&lt;td&gt;20.8 ms&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;Downloads&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;622 entries, &lt;strong&gt;not a repo&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;49.6 ms&lt;/td&gt;
					&lt;td&gt;39.8 ms&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="chart"&gt;
 &lt;canvas data-chart="
type: &amp;#39;bar&amp;#39;,
data: {
 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;],
 datasets: [{
 label: &amp;#39;with --git&amp;#39;,
 data: [68.8, 49.0, 49.6],
 backgroundColor: &amp;#39;#6366f1&amp;#39;,
 borderRadius: 4,
 categoryPercentage: 0.7,
 barPercentage: 0.9
 }, {
 label: &amp;#39;without --git&amp;#39;,
 data: [13.9, 20.8, 39.8],
 backgroundColor: &amp;#39;#d97706&amp;#39;,
 borderRadius: 4,
 categoryPercentage: 0.7,
 barPercentage: 0.9
 }]
},
options: {
 indexAxis: &amp;#39;y&amp;#39;,
 responsive: true,
 plugins: {
 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 } },
 legend: { display: true, labels: { color: &amp;#39;#9ca3af&amp;#39; } }
 },
 scales: {
 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; } },
 y: { ticks: { color: &amp;#39;#9ca3af&amp;#39; }, grid: { display: false } }
 }
}
"&gt;&lt;/canvas&gt;
&lt;/div&gt;

&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;,
not the directory being listed: &lt;code&gt;eza&lt;/code&gt; resolves git status for every tracked
file to fill one column. Listing a 47-entry folder inside a 263-file repo pays
for all 263 files. My everyday alias paid that price in every project
directory, which is exactly where I type it most.&lt;/p&gt;
&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;
and &lt;code&gt;tree&lt;/code&gt; completely, because the git column only renders in long view. For
those four, the output is byte-identical with and without the flag. I verified
that instead of assuming it:&lt;/p&gt;
&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;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;no-op
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Dead config, carried for months, costing a git query on every call.&lt;/p&gt;

&lt;h2 class="relative group"&gt;The common shape
 &lt;div id="the-common-shape" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-common-shape" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Five cases, one sentence:&lt;/p&gt;
&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;
&lt;/blockquote&gt;&lt;p&gt;Every case was a tool reporting an absence. In none of them had anyone checked
whether the question ever reached the thing it was asking about.&lt;/p&gt;
&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;
 &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;
&lt;p&gt;&amp;ldquo;Absence of evidence is not evidence of absence&amp;rdquo; is an old phrase. The working
version is more direct: &lt;strong&gt;evidence gathered by a broken method is not evidence
at all&lt;/strong&gt;, and a broken method usually exits 0.&lt;/p&gt;

&lt;h2 class="relative group"&gt;The test that could not fail
 &lt;div id="the-test-that-could-not-fail" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &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;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The same day turned up a bug that had survived for a year because the test
guarding it was written backwards.&lt;/p&gt;
&lt;p&gt;Ghostty on macOS reads both &lt;code&gt;~/.config/ghostty/config&lt;/code&gt; and
&lt;code&gt;~/Library/Application Support/com.mitchellh.ghostty/config&lt;/code&gt;. My bootstrap
script had symlinked the second to the first, so the same file was parsed
twice. For single-value keys the last value wins, so nothing looked wrong. But
repeatable keys append:&lt;/p&gt;
&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;
&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
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Two extra full-screen shader passes on every frame, for a year. And the test
suite stayed green the whole time, because it contained this:&lt;/p&gt;
&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;
&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;
&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;
&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;
&lt;p&gt;Two problems in four lines. The assertion checks the &lt;strong&gt;opposite&lt;/strong&gt; of the
correct rule, because the symlink should not exist at all. And the assertion
sits inside a guard, so when I deleted the symlink, the test did not fail. It
silently stopped running. The first post in this series was a catalog of
safety nets that had quietly died. This test is the sharpest example I have
found since: it disappeared at the exact moment it finally had something to
say.&lt;/p&gt;
&lt;p&gt;The replacement tests the property instead of the mechanism:&lt;/p&gt;
&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;\
&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;
&lt;p&gt;Whatever causes a double parse next time (this symlink, a different symlink,
an include directive, some future Ghostty change), the count stops matching
and the test goes red. I put the symlink back once, on purpose, and watched
the test fail before I trusted it.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Lessons
 &lt;div id="lessons" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#lessons" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Null, empty, and 404 are answers about the &lt;em&gt;query&lt;/em&gt;, not always about the
world. Before treating one as a finding, confirm the query reached the
right place.&lt;/li&gt;
&lt;li&gt;Decide &amp;ldquo;is this app still needed&amp;rdquo; from data a person created. An index the
OS can reset is not a record of anything.&lt;/li&gt;
&lt;li&gt;Know which average your tool reports. &lt;code&gt;ps %cpu&lt;/code&gt; on macOS leans toward the
last minute; cumulative load is CPU time divided by elapsed time.&lt;/li&gt;
&lt;li&gt;Measure where the work really happens. A sandbox that blocks the syscalls
under test produces a fast, precise, meaningless number.&lt;/li&gt;
&lt;li&gt;Never measure a system while you are the heaviest thing running on it.&lt;/li&gt;
&lt;li&gt;Test the property, not the mechanism. The symlink was one way to get a
double parse; the count catches all of them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;References
 &lt;div id="references" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#references" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&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
v0.23.5)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yadm.io/" target="_blank" rel="noreferrer"&gt;yadm&lt;/a&gt; (bare repo location:
&lt;code&gt;~/.local/share/yadm/repo.git&lt;/code&gt;)&lt;/li&gt;
&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
are invisible to the older &lt;code&gt;/branches/*/protection&lt;/code&gt; endpoint)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ghostty.org/docs/config" target="_blank" rel="noreferrer"&gt;Ghostty configuration&lt;/a&gt; (macOS reads both
the XDG path and the Application Support path)&lt;/li&gt;
&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;
&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;
&lt;/ul&gt;</content:encoded></item></channel></rss>