<?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>Testing on Nick Liu - Software Engineer</title><link>https://nick-liu.com/tags/testing/</link><description>Recent content in Testing 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>Wed, 05 Aug 2026 22:49:23 -0700</lastBuildDate><atom:link href="https://nick-liu.com/tags/testing/index.xml" rel="self" type="application/rss+xml"/><item><title>My dotfiles had a no-exceptions test gate. It had never run once.</title><link>https://nick-liu.com/posts/dotfiles-audit-dead-safety-nets/</link><pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate><author>nickboy@users.noreply.github.com (Nick Liu)</author><guid>https://nick-liu.com/posts/dotfiles-audit-dead-safety-nets/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;My dotfiles repo has a CLAUDE.md, and the CLAUDE.md has a rule in bold: every commit must pass the test suite, no exceptions. Within the first hour of an audit this July, I learned that this rule had been enforced exactly zero times since the day it was written. The hook file existed, its contents were correct, it even had its executable bit. It was just sitting at a path that yadm stopped reading a major version ago.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;No error message. No warning. To yadm, a hook in the wrong place and no hook at all are the same thing.&lt;/p&gt;</description><content:encoded>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;My dotfiles repo has a CLAUDE.md, and the CLAUDE.md has a rule in bold: every commit must pass the test suite, no exceptions. Within the first hour of an audit this July, I learned that this rule had been enforced exactly zero times since the day it was written. The hook file existed, its contents were correct, it even had its executable bit. It was just sitting at a path that yadm stopped reading a major version ago.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;No error message. No warning. To yadm, a hook in the wrong place and no hook at all are the same thing.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;This was supposed to be a cleanup&#10; &lt;div id="this-was-supposed-to-be-a-cleanup" 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="#this-was-supposed-to-be-a-cleanup" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The plan was modest: go through all 82 tracked files and delete some stale configuration. What actually happened was closer to an archaeology dig, and every layer had something dead in it that looked alive from the surface. Five findings, in the order they turned up.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Finding 1: the hook on the dead path&#10; &lt;div id="finding-1-the-hook-on-the-dead-path" 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="#finding-1-the-hook-on-the-dead-path" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;yadm 2.x read hooks from &lt;code&gt;~/.yadm/hooks/pre-commit&lt;/code&gt;, with a hyphen. yadm 3.x reads them from &lt;code&gt;$YADM_DIR/hooks/pre_&amp;lt;command&amp;gt;&lt;/code&gt;, so a commit hook lives at &lt;code&gt;~/.config/yadm/hooks/pre_commit&lt;/code&gt;, with an underscore. My machine runs yadm 3.5. My hook was still parked at the 2.x path.&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;# yadm 2.x (dead, but the file was still there)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/.yadm/hooks/pre-commit&#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;# what yadm 3.x actually reads: $YADM_DIR/hooks/pre_&amp;lt;command&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/.config/yadm/hooks/pre_commit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;A directory move and one character, hyphen to underscore, and a rule labeled &amp;ldquo;no exceptions&amp;rdquo; died quietly for about a year. The fix took a minute. The part worth keeping is the comment that now sits at the top of the hook, so the path contract is written where the next person (me) will trip over 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-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash&#10;&lt;/span&gt;&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;# yadm pre-commit hook (yadm 3.x reads $YADM_DIR/hooks/pre_&amp;lt;command&amp;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;# i.e. this file must live at ~/.config/yadm/hooks/pre_commit).&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;# Runs the full test suite (which includes markdownlint) before&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;# allowing a commit. Bypass in emergencies: yadm commit --no-verify&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;Finding 2: thirteen CI jobs, zero teeth&#10; &lt;div id="finding-2-thirteen-ci-jobs-zero-teeth" 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="#finding-2-thirteen-ci-jobs-zero-teeth" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The repo&amp;rsquo;s CI had 13 jobs. Thirteen green circles is a comforting sight. Then I looked at which ones could actually stop a bad commit, and the answer was none that mattered: the critical steps had &lt;code&gt;continue-on-error&lt;/code&gt; or a trailing &lt;code&gt;|| true&lt;/code&gt; scattered on them.&lt;/p&gt;&#10;&lt;p&gt;Thirteen jobs bought me a lot of reassurance and almost no protection. Whether a pipeline will actually refuse a bad commit is a separate property from how much of it there is, and nothing about the green circles tells you which one you have.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Finding 3: launchctl said yes and did nothing&#10; &lt;div id="finding-3-launchctl-said-yes-and-did-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="#finding-3-launchctl-said-yes-and-did-nothing" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The daily-maintenance launch agent had been silently stopped since July 3. The root cause is a genuinely nasty little contract: &lt;code&gt;launchctl load&lt;/code&gt; exits 0 even when the agent is disabled in the override database, so the command reports success while the service stays down.&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;# exits 0 even when the agent is disabled in the override database&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;launchctl load ~/Library/LaunchAgents/com.daily-maintenance.plist&#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;# what actually works: enable explicitly, then bootstrap&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;launchctl &lt;span class="nb"&gt;enable&lt;/span&gt; gui/&lt;span class="nv"&gt;$UID&lt;/span&gt;/com.daily-maintenance&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bash ~/install-daily-maintenance.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;&amp;ldquo;The command succeeded&amp;rdquo; and &amp;ldquo;the service is running&amp;rdquo; are separate claims. I now treat any launchd interaction that only checks exit codes as unverified.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Finding 4: the zombie updater&#10; &lt;div id="finding-4-the-zombie-updater" 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="#finding-4-the-zombie-updater" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;A duplicate brew-update automation had been running since February 2023. Two and a half years of doing the same work twice, and nobody noticed, because both copies succeeded. Redundant success is invisible in a way redundant failure never is.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Finding 5: the editor frozen in time, with a full paper trail&#10; &lt;div id="finding-5-the-editor-frozen-in-time-with-a-full-paper-trail" 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="#finding-5-the-editor-frozen-in-time-with-a-full-paper-trail" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;This one is the reason the post exists. Neovim had been frozen on the June 30 nightly build for five weeks before any symptom appeared. When it finally surfaced, it did so sideways: neo-tree called &lt;code&gt;nvim_win_resize&lt;/code&gt;, an API added in a newer nightly than the one I was running, and blew up with &amp;ldquo;attempt to call a nil value&amp;rdquo;.&lt;/p&gt;&#10;&lt;p&gt;The causal chain took a while to untangle:&lt;/p&gt;&#10;&lt;div class="not-prose diagram diagram-light"&gt;&lt;svg id="d2563c89c31935b48light" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 586px;" viewBox="0 0 586 950" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#d2563c89c31935b48light{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;}}#d2563c89c31935b48light .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#d2563c89c31935b48light .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#d2563c89c31935b48light .error-icon{fill:rgb(255, 255, 255);}#d2563c89c31935b48light .error-text{fill:#000000;stroke:#000000;}#d2563c89c31935b48light .edge-thickness-normal{stroke-width:1px;}#d2563c89c31935b48light .edge-thickness-thick{stroke-width:3.5px;}#d2563c89c31935b48light .edge-pattern-solid{stroke-dasharray:0;}#d2563c89c31935b48light .edge-thickness-invisible{stroke-width:0;fill:none;}#d2563c89c31935b48light .edge-pattern-dashed{stroke-dasharray:3;}#d2563c89c31935b48light .edge-pattern-dotted{stroke-dasharray:2;}#d2563c89c31935b48light .marker{fill:rgb(74, 86, 92);stroke:rgb(74, 86, 92);}#d2563c89c31935b48light .marker.cross{stroke:rgb(74, 86, 92);}#d2563c89c31935b48light svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#d2563c89c31935b48light p{margin:0;}#d2563c89c31935b48light .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#333;}#d2563c89c31935b48light .cluster-label text{fill:#000000;}#d2563c89c31935b48light .cluster-label span{color:#000000;}#d2563c89c31935b48light .cluster-label span p{background-color:transparent;}#d2563c89c31935b48light .label text,#d2563c89c31935b48light span{fill:#333;color:#333;}#d2563c89c31935b48light .node rect,#d2563c89c31935b48light .node circle,#d2563c89c31935b48light .node ellipse,#d2563c89c31935b48light .node polygon,#d2563c89c31935b48light .node path{fill:rgb(255, 255, 255);stroke:rgb(204, 216, 222);stroke-width:1px;}#d2563c89c31935b48light .rough-node .label text,#d2563c89c31935b48light .node .label text,#d2563c89c31935b48light .image-shape .label,#d2563c89c31935b48light .icon-shape .label{text-anchor:middle;}#d2563c89c31935b48light .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#d2563c89c31935b48light .rough-node .label,#d2563c89c31935b48light .node .label,#d2563c89c31935b48light .image-shape .label,#d2563c89c31935b48light .icon-shape .label{text-align:center;}#d2563c89c31935b48light .node.clickable{cursor:pointer;}#d2563c89c31935b48light .root .anchor path{fill:rgb(74, 86, 92)!important;stroke-width:0;stroke:rgb(74, 86, 92);}#d2563c89c31935b48light .arrowheadPath{fill:#000000;}#d2563c89c31935b48light .edgePath .path{stroke:rgb(74, 86, 92);stroke-width:1px;}#d2563c89c31935b48light .flowchart-link{stroke:rgb(74, 86, 92);fill:none;}#d2563c89c31935b48light .edgeLabel{background-color:rgb(182, 240, 255);text-align:center;}#d2563c89c31935b48light .edgeLabel p{background-color:rgb(182, 240, 255);}#d2563c89c31935b48light .edgeLabel rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#d2563c89c31935b48light .labelBkg{background-color:rgba(182, 240, 255, 0.5);}#d2563c89c31935b48light .cluster rect{fill:rgb(255, 255, 255);stroke:rgb(129, 146, 154);stroke-width:1px;}#d2563c89c31935b48light .cluster text{fill:#000000;}#d2563c89c31935b48light .cluster span{color:#000000;}#d2563c89c31935b48light 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;}#d2563c89c31935b48light .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#d2563c89c31935b48light rect.text{fill:none;stroke-width:0;}#d2563c89c31935b48light .icon-shape,#d2563c89c31935b48light .image-shape{background-color:rgb(182, 240, 255);text-align:center;}#d2563c89c31935b48light .icon-shape p,#d2563c89c31935b48light .image-shape p{background-color:rgb(182, 240, 255);padding:2px;}#d2563c89c31935b48light .icon-shape .label rect,#d2563c89c31935b48light .image-shape .label rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#d2563c89c31935b48light .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#d2563c89c31935b48light .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#d2563c89c31935b48light .node .neo-node{stroke:rgb(204, 216, 222);}#d2563c89c31935b48light [data-look="neo"].node rect,#d2563c89c31935b48light [data-look="neo"].cluster rect,#d2563c89c31935b48light [data-look="neo"].node polygon{stroke:url(#d2563c89c31935b48light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d2563c89c31935b48light [data-look="neo"].swimlane.cluster rect{filter:none;}#d2563c89c31935b48light [data-look="neo"].node path{stroke:url(#d2563c89c31935b48light-gradient);stroke-width:1px;}#d2563c89c31935b48light [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d2563c89c31935b48light [data-look="neo"].node .neo-line path{stroke:rgb(204, 216, 222);filter:none;}#d2563c89c31935b48light [data-look="neo"].node circle{stroke:url(#d2563c89c31935b48light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d2563c89c31935b48light [data-look="neo"].node circle .state-start{fill:#000000;}#d2563c89c31935b48light [data-look="neo"].icon-shape .icon{fill:url(#d2563c89c31935b48light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d2563c89c31935b48light [data-look="neo"].icon-shape .icon-neo path{stroke:url(#d2563c89c31935b48light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d2563c89c31935b48light :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="d2563c89c31935b48light_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="d2563c89c31935b48light_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="d2563c89c31935b48light_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="d2563c89c31935b48light_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="d2563c89c31935b48light_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="d2563c89c31935b48light_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="d2563c89c31935b48light_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="d2563c89c31935b48light_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="d2563c89c31935b48light_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="d2563c89c31935b48light_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="d2563c89c31935b48light_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="d2563c89c31935b48light_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="M293,110L293,114.167C293,118.333,293,126.667,293,134.333C293,142,293,149,293,152.5L293,156" id="d2563c89c31935b48light-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="W3sieCI6MjkzLCJ5IjoxMTB9LHsieCI6MjkzLCJ5IjoxMzV9LHsieCI6MjkzLCJ5IjoxNjB9XQ==" data-look="classic" marker-end="url(#d2563c89c31935b48light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M293,286L293,290.167C293,294.333,293,302.667,293,310.333C293,318,293,325,293,328.5L293,332" id="d2563c89c31935b48light-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="W3sieCI6MjkzLCJ5IjoyODZ9LHsieCI6MjkzLCJ5IjozMTF9LHsieCI6MjkzLCJ5IjozMzZ9XQ==" data-look="classic" marker-end="url(#d2563c89c31935b48light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M182.034,462L174.695,466.167C167.356,470.333,152.678,478.667,145.339,488.333C138,498,138,509,138,514.5L138,520" id="d2563c89c31935b48light-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="W3sieCI6MTgyLjAzNDA5MDkwOTA5MDksInkiOjQ2Mn0seyJ4IjoxMzgsInkiOjQ4N30seyJ4IjoxMzgsInkiOjUyNH1d" data-look="classic" marker-end="url(#d2563c89c31935b48light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M138,626L138,632.167C138,638.333,138,650.667,138,660.333C138,670,138,677,138,680.5L138,684" id="d2563c89c31935b48light-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="W3sieCI6MTM4LCJ5Ijo2MjZ9LHsieCI6MTM4LCJ5Ijo2NjN9LHsieCI6MTM4LCJ5Ijo2ODh9XQ==" data-look="classic" marker-end="url(#d2563c89c31935b48light_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="d2563c89c31935b48light-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(#d2563c89c31935b48light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M403.966,462L411.305,466.167C418.644,470.333,433.322,478.667,440.661,486.333C448,494,448,501,448,504.5L448,508" id="d2563c89c31935b48light-L_C_G_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_C_G_0" data-points="W3sieCI6NDAzLjk2NTkwOTA5MDkwOTEsInkiOjQ2Mn0seyJ4Ijo0NDgsInkiOjQ4N30seyJ4Ijo0NDgsInkiOjUxMn1d" data-look="classic" marker-end="url(#d2563c89c31935b48light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M448,638L448,642.167C448,646.333,448,654.667,448,664.333C448,674,448,685,448,690.5L448,696" id="d2563c89c31935b48light-L_G_H_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_G_H_0" data-points="W3sieCI6NDQ4LCJ5Ijo2Mzh9LHsieCI6NDQ4LCJ5Ijo2NjN9LHsieCI6NDQ4LCJ5Ijo3MDB9XQ==" data-look="classic" marker-end="url(#d2563c89c31935b48light_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 class="edgeLabel"&gt;&lt;g class="label" data-id="L_C_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="d2563c89c31935b48light-flowchart-A-0" data-look="classic" transform="translate(293, 59)"&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;bob compiles a fresh Neovim&lt;br&gt;nightly every day&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48light-flowchart-B-1" data-look="classic" transform="translate(293, 223)"&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;July: bob moves its data dir to&lt;br&gt;~/Library/Application Support/bob&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48light-flowchart-C-3" data-look="classic" transform="translate(293, 399)"&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;a half-finished install there wedges&lt;br&gt;every 'bob install nightly'&lt;br&gt;('Couldn't find bob.json')&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48light-flowchart-D-5" data-look="classic" transform="translate(138, 575)"&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;PATH still points at the abandoned&lt;br&gt;proxy under ~/.local/share&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48light-flowchart-E-7" data-look="classic" transform="translate(138, 727)"&gt;&lt;rect class="basic label-container" style="" x="-109.984375" y="-39" width="219.96875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-79.984375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="159.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;Neovim silently frozen&lt;br&gt;at the June 30 build&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48light-flowchart-F-9" data-look="classic" transform="translate(138, 879)"&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;five weeks later: neo-tree calls an&lt;br&gt;API that build does not have&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48light-flowchart-G-11" data-look="classic" transform="translate(448, 575)"&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;the failure was written to the&lt;br&gt;maintenance log every single day&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48light-flowchart-H-13" data-look="classic" transform="translate(448, 727)"&gt;&lt;rect class="basic label-container" style="" x="-99.4765625" y="-27" width="198.953125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-69.4765625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="138.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;and read by no one&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="d2563c89c31935b48light-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="d2563c89c31935b48light-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="d2563c89c31935b48light-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="d2563c89c31935b48dark" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 586px;" viewBox="0 0 586 950" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#d2563c89c31935b48dark{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;}}#d2563c89c31935b48dark .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#d2563c89c31935b48dark .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#d2563c89c31935b48dark .error-icon{fill:#a44141;}#d2563c89c31935b48dark .error-text{fill:#ddd;stroke:#ddd;}#d2563c89c31935b48dark .edge-thickness-normal{stroke-width:1px;}#d2563c89c31935b48dark .edge-thickness-thick{stroke-width:3.5px;}#d2563c89c31935b48dark .edge-pattern-solid{stroke-dasharray:0;}#d2563c89c31935b48dark .edge-thickness-invisible{stroke-width:0;fill:none;}#d2563c89c31935b48dark .edge-pattern-dashed{stroke-dasharray:3;}#d2563c89c31935b48dark .edge-pattern-dotted{stroke-dasharray:2;}#d2563c89c31935b48dark .marker{fill:lightgrey;stroke:lightgrey;}#d2563c89c31935b48dark .marker.cross{stroke:lightgrey;}#d2563c89c31935b48dark svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#d2563c89c31935b48dark p{margin:0;}#d2563c89c31935b48dark .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#ccc;}#d2563c89c31935b48dark .cluster-label text{fill:#F9FFFE;}#d2563c89c31935b48dark .cluster-label span{color:#F9FFFE;}#d2563c89c31935b48dark .cluster-label span p{background-color:transparent;}#d2563c89c31935b48dark .label text,#d2563c89c31935b48dark span{fill:#ccc;color:#ccc;}#d2563c89c31935b48dark .node rect,#d2563c89c31935b48dark .node circle,#d2563c89c31935b48dark .node ellipse,#d2563c89c31935b48dark .node polygon,#d2563c89c31935b48dark .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#d2563c89c31935b48dark .rough-node .label text,#d2563c89c31935b48dark .node .label text,#d2563c89c31935b48dark .image-shape .label,#d2563c89c31935b48dark .icon-shape .label{text-anchor:middle;}#d2563c89c31935b48dark .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#d2563c89c31935b48dark .rough-node .label,#d2563c89c31935b48dark .node .label,#d2563c89c31935b48dark .image-shape .label,#d2563c89c31935b48dark .icon-shape .label{text-align:center;}#d2563c89c31935b48dark .node.clickable{cursor:pointer;}#d2563c89c31935b48dark .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#d2563c89c31935b48dark .arrowheadPath{fill:lightgrey;}#d2563c89c31935b48dark .edgePath .path{stroke:lightgrey;stroke-width:1px;}#d2563c89c31935b48dark .flowchart-link{stroke:lightgrey;fill:none;}#d2563c89c31935b48dark .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#d2563c89c31935b48dark .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#d2563c89c31935b48dark .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#d2563c89c31935b48dark .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#d2563c89c31935b48dark .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#d2563c89c31935b48dark .cluster text{fill:#F9FFFE;}#d2563c89c31935b48dark .cluster span{color:#F9FFFE;}#d2563c89c31935b48dark 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;}#d2563c89c31935b48dark .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#d2563c89c31935b48dark rect.text{fill:none;stroke-width:0;}#d2563c89c31935b48dark .icon-shape,#d2563c89c31935b48dark .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#d2563c89c31935b48dark .icon-shape p,#d2563c89c31935b48dark .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#d2563c89c31935b48dark .icon-shape .label rect,#d2563c89c31935b48dark .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#d2563c89c31935b48dark .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#d2563c89c31935b48dark .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#d2563c89c31935b48dark .node .neo-node{stroke:#ccc;}#d2563c89c31935b48dark [data-look="neo"].node rect,#d2563c89c31935b48dark [data-look="neo"].cluster rect,#d2563c89c31935b48dark [data-look="neo"].node polygon{stroke:url(#d2563c89c31935b48dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d2563c89c31935b48dark [data-look="neo"].swimlane.cluster rect{filter:none;}#d2563c89c31935b48dark [data-look="neo"].node path{stroke:url(#d2563c89c31935b48dark-gradient);stroke-width:1px;}#d2563c89c31935b48dark [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d2563c89c31935b48dark [data-look="neo"].node .neo-line path{stroke:#ccc;filter:none;}#d2563c89c31935b48dark [data-look="neo"].node circle{stroke:url(#d2563c89c31935b48dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d2563c89c31935b48dark [data-look="neo"].node circle .state-start{fill:#000000;}#d2563c89c31935b48dark [data-look="neo"].icon-shape .icon{fill:url(#d2563c89c31935b48dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d2563c89c31935b48dark [data-look="neo"].icon-shape .icon-neo path{stroke:url(#d2563c89c31935b48dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d2563c89c31935b48dark :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="d2563c89c31935b48dark_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="d2563c89c31935b48dark_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="d2563c89c31935b48dark_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="d2563c89c31935b48dark_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="d2563c89c31935b48dark_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="d2563c89c31935b48dark_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="d2563c89c31935b48dark_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="d2563c89c31935b48dark_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="d2563c89c31935b48dark_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="d2563c89c31935b48dark_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="d2563c89c31935b48dark_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="d2563c89c31935b48dark_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="M293,110L293,114.167C293,118.333,293,126.667,293,134.333C293,142,293,149,293,152.5L293,156" id="d2563c89c31935b48dark-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="W3sieCI6MjkzLCJ5IjoxMTB9LHsieCI6MjkzLCJ5IjoxMzV9LHsieCI6MjkzLCJ5IjoxNjB9XQ==" data-look="classic" marker-end="url(#d2563c89c31935b48dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M293,286L293,290.167C293,294.333,293,302.667,293,310.333C293,318,293,325,293,328.5L293,332" id="d2563c89c31935b48dark-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="W3sieCI6MjkzLCJ5IjoyODZ9LHsieCI6MjkzLCJ5IjozMTF9LHsieCI6MjkzLCJ5IjozMzZ9XQ==" data-look="classic" marker-end="url(#d2563c89c31935b48dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M182.034,462L174.695,466.167C167.356,470.333,152.678,478.667,145.339,488.333C138,498,138,509,138,514.5L138,520" id="d2563c89c31935b48dark-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="W3sieCI6MTgyLjAzNDA5MDkwOTA5MDksInkiOjQ2Mn0seyJ4IjoxMzgsInkiOjQ4N30seyJ4IjoxMzgsInkiOjUyNH1d" data-look="classic" marker-end="url(#d2563c89c31935b48dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M138,626L138,632.167C138,638.333,138,650.667,138,660.333C138,670,138,677,138,680.5L138,684" id="d2563c89c31935b48dark-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="W3sieCI6MTM4LCJ5Ijo2MjZ9LHsieCI6MTM4LCJ5Ijo2NjN9LHsieCI6MTM4LCJ5Ijo2ODh9XQ==" data-look="classic" marker-end="url(#d2563c89c31935b48dark_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="d2563c89c31935b48dark-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(#d2563c89c31935b48dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M403.966,462L411.305,466.167C418.644,470.333,433.322,478.667,440.661,486.333C448,494,448,501,448,504.5L448,508" id="d2563c89c31935b48dark-L_C_G_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_C_G_0" data-points="W3sieCI6NDAzLjk2NTkwOTA5MDkwOTEsInkiOjQ2Mn0seyJ4Ijo0NDgsInkiOjQ4N30seyJ4Ijo0NDgsInkiOjUxMn1d" data-look="classic" marker-end="url(#d2563c89c31935b48dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M448,638L448,642.167C448,646.333,448,654.667,448,664.333C448,674,448,685,448,690.5L448,696" id="d2563c89c31935b48dark-L_G_H_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_G_H_0" data-points="W3sieCI6NDQ4LCJ5Ijo2Mzh9LHsieCI6NDQ4LCJ5Ijo2NjN9LHsieCI6NDQ4LCJ5Ijo3MDB9XQ==" data-look="classic" marker-end="url(#d2563c89c31935b48dark_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 class="edgeLabel"&gt;&lt;g class="label" data-id="L_C_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="d2563c89c31935b48dark-flowchart-A-0" data-look="classic" transform="translate(293, 59)"&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;bob compiles a fresh Neovim&lt;br&gt;nightly every day&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48dark-flowchart-B-1" data-look="classic" transform="translate(293, 223)"&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;July: bob moves its data dir to&lt;br&gt;~/Library/Application Support/bob&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48dark-flowchart-C-3" data-look="classic" transform="translate(293, 399)"&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;a half-finished install there wedges&lt;br&gt;every 'bob install nightly'&lt;br&gt;('Couldn't find bob.json')&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48dark-flowchart-D-5" data-look="classic" transform="translate(138, 575)"&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;PATH still points at the abandoned&lt;br&gt;proxy under ~/.local/share&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48dark-flowchart-E-7" data-look="classic" transform="translate(138, 727)"&gt;&lt;rect class="basic label-container" style="" x="-109.984375" y="-39" width="219.96875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-79.984375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="159.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;Neovim silently frozen&lt;br&gt;at the June 30 build&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48dark-flowchart-F-9" data-look="classic" transform="translate(138, 879)"&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;five weeks later: neo-tree calls an&lt;br&gt;API that build does not have&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48dark-flowchart-G-11" data-look="classic" transform="translate(448, 575)"&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;the failure was written to the&lt;br&gt;maintenance log every single day&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d2563c89c31935b48dark-flowchart-H-13" data-look="classic" transform="translate(448, 727)"&gt;&lt;rect class="basic label-container" style="" x="-99.4765625" y="-27" width="198.953125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-69.4765625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="138.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;and read by no one&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="d2563c89c31935b48dark-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="d2563c89c31935b48dark-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="d2563c89c31935b48dark-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 wedged install I confirmed against bob&amp;rsquo;s own dev-branch source rather than guessing. And there is a general trap in here for anyone on nightlies:&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-vim" data-lang="vim"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#34; trap: every 0.13-dev nightly satisfies this condition,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#34; so it gates nothing, including the weeks before the API existed&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="nx"&gt;has&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;nvim-0.13&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="c"&gt; &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;endif&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;&lt;code&gt;has(&amp;quot;nvim-0.13&amp;quot;)&lt;/code&gt; is true for every 0.13-dev build, first to last. As a version gate for a feature that landed mid-cycle, it is no gate at all.&lt;/p&gt;&#10;&lt;p&gt;The immediate fix was three parts: unwedge the stuck install, point PATH back at the real bob, and add a boot canary to the test suite:&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;# if the editor cannot start, this goes red today, not in five weeks&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;# when some plugin happens to call an API that is not there&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nvim --headless -c q&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;But the part that actually stings is this: the failure was in the maintenance log every day for a month, described accurately each time. It just landed in a file nobody reads. So the structural fix went to the output side. The maintenance summary now sends a desktop notification whenever any task fails, and the message layout assumes it will be truncated: log location first, at most three failures listed, the rest folded into a count.&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;# log location first (notifications get truncated, so the most&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;# important information leads), max 3 failures, rest folded&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;body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Failures logged in &lt;/span&gt;&lt;span class="nv"&gt;$LOG&lt;/span&gt;&lt;span class="s2"&gt;&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="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$total&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; -gt &lt;span class="m"&gt;3&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="nv"&gt;body&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;$body&lt;/span&gt;&lt;span class="s2"&gt; (+&lt;/span&gt;&lt;span class="k"&gt;$((&lt;/span&gt;total &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="k"&gt;))&lt;/span&gt;&lt;span class="s2"&gt; more)&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;What shipped&#10; &lt;div id="what-shipped" 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-shipped" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The cleanup turned into 22 single-concern commits, one problem per commit so that any of them can be reverted alone.&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;Metric&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Before&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;After&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Verified how&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;CI jobs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;13&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;coverage went up, not down: fed the gates a broken &lt;code&gt;.sh&lt;/code&gt;, a broken &lt;code&gt;.md&lt;/code&gt;, and a broken KDL config; all three rejected&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;Local test suite&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;none&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;74 checks&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;born in this audit; at 105 today&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;zsh startup&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;398 ms&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;254 ms&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;hyperfine --warmup 3 'zsh -i -c exit'&lt;/code&gt;&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;Working pre-commit gate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;no&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;yes&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;commits with failing tests are refused&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Two of those rows deserve a sentence. The CI shrink is the point of finding 2: fewer jobs, strictly more protection, and the protection is proven by deliberately feeding the pipeline broken files rather than by looking at green circles. And the startup number comes from hyperfine because an unreproducible number is a mood, not a measurement.&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;Automation you have never seen fail is indistinguishable from automation that does not exist. Their observable behavior is identical.&lt;/li&gt;&#10;&lt;li&gt;Validate a gate by deliberately breaking something it should catch. A gate that has only ever seen good inputs is unproven by construction.&lt;/li&gt;&#10;&lt;li&gt;Failures must arrive somewhere you actually look. A log line is not an alert; it is a diary entry.&lt;/li&gt;&#10;&lt;li&gt;Counting CI jobs measures reassurance. Counting what CI refuses measures protection.&lt;/li&gt;&#10;&lt;li&gt;When a tool renames its config path across a major version, every consumer of the old path fails silently. Write the path contract into the file itself.&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://yadm.io/docs/hooks" target="_blank" rel="noreferrer"&gt;yadm hooks documentation&lt;/a&gt; (the &lt;code&gt;pre_&amp;lt;command&amp;gt;&lt;/code&gt; naming and &lt;code&gt;$YADM_DIR&lt;/code&gt; lookup)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/sharkdp/hyperfine" target="_blank" rel="noreferrer"&gt;hyperfine&lt;/a&gt; (startup-time benchmarking)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/MordechaiHadad/bob" target="_blank" rel="noreferrer"&gt;bob&lt;/a&gt; (the Neovim version manager; wedge behavior confirmed against its dev-branch source)&lt;/li&gt;&#10;&lt;li&gt;The repo this all happened in: &lt;a href="https://github.com/nickboy/dotfiles" target="_blank" rel="noreferrer"&gt;nickboy/dotfiles&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;launchctl&lt;/code&gt; behavior observed on macOS on this machine; see &lt;code&gt;man launchctl&lt;/code&gt; for the &lt;code&gt;enable&lt;/code&gt;/&lt;code&gt;bootstrap&lt;/code&gt; subcommands&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</content:encoded></item><item><title>A crash is never a pass. Three rules that kept 1,095 eval runs honest.</title><link>https://nick-liu.com/posts/eval-harness-honesty-rules/</link><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><author>nickboy@users.noreply.github.com (Nick Liu)</author><guid>https://nick-liu.com/posts/eval-harness-honesty-rules/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;The scariest failure mode in an eval harness is not a wrong answer. It is a harness problem wearing a model problem's clothes. A test file that does not run looks exactly like a problem no model can solve. A sandbox flake looks exactly like a failed attempt. Before I trusted any number from my CS1 auditing tool, I had to make those confusions impossible, and it came down to three rules.&#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;Auditing AI-Solvability · Part 2 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/ai-resistant-cs1-problems/" title="I went looking for AI-resistant CS1 problems. The search came up empty."&gt;1&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/eval-harness-honesty-rules/" title="A crash is never a pass. Three rules that kept 1,095 eval runs honest." aria-current="step"&gt;2&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/cohens-kappa-zero-agreement/" title="Cohen&amp;#39;s kappa came back 0.00. The agreement was 6 out of 8."&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/obfuscated-spec-zero-width-characters/" title="I hid zero-width characters in a CS1 spec. The model did not blink."&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/python-pptx-official-template/" title="Do not restyle a deck to look official. Wipe the template and keep its masters."&gt;5&lt;/a&gt;&#10; &lt;/li&gt;&lt;/ol&gt;&#10; &lt;/nav&gt;&#10;&lt;p&gt;&lt;a href="https://nick-liu.com/posts/ai-resistant-cs1-problems/" &gt;Part 1 of this series&lt;/a&gt; reported scores from 1,095 sampled solutions. This post is about why I believe those scores. The harness lives in one Python module, and its docstring is a contract I wrote before the code:&lt;/p&gt;</description><content:encoded>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;The scariest failure mode in an eval harness is not a wrong answer. It is a harness problem wearing a model problem's clothes. A test file that does not run looks exactly like a problem no model can solve. A sandbox flake looks exactly like a failed attempt. Before I trusted any number from my CS1 auditing tool, I had to make those confusions impossible, and it came down to three rules.&#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;Auditing AI-Solvability · Part 2 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/ai-resistant-cs1-problems/" title="I went looking for AI-resistant CS1 problems. The search came up empty."&gt;1&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/eval-harness-honesty-rules/" title="A crash is never a pass. Three rules that kept 1,095 eval runs honest." aria-current="step"&gt;2&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/cohens-kappa-zero-agreement/" title="Cohen&amp;#39;s kappa came back 0.00. The agreement was 6 out of 8."&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/obfuscated-spec-zero-width-characters/" title="I hid zero-width characters in a CS1 spec. The model did not blink."&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/python-pptx-official-template/" title="Do not restyle a deck to look official. Wipe the template and keep its masters."&gt;5&lt;/a&gt;&#10; &lt;/li&gt;&lt;/ol&gt;&#10; &lt;/nav&gt;&#10;&lt;p&gt;&lt;a href="https://nick-liu.com/posts/ai-resistant-cs1-problems/" &gt;Part 1 of this series&lt;/a&gt; reported scores from 1,095 sampled solutions. This post is about why I believe those scores. The harness lives in one Python module, and its docstring is a contract I wrote before the code:&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;Honesty rules:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; * The model is shown only `item.spec`; the hidden tests are written into the sandbox&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; alongside the candidate but never given to the model.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; * A pre-flight check runs the *reference* solution against the hidden tests. If the&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reference does not pass, the item is malformed and the audit aborts (a HARNESS&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; problem, never silently scored). This guarantees the test file is sound, so during&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; the audit any candidate error (syntax, import, exception, failing assertion) is a&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; legitimate FAIL for pass@k.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; * `HARNESS_ERROR` is reserved for runs where the sandbox produced no usable verdict&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; (no report and no failing exit code). Such attempts are excluded from pass@k and&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reported separately, so they masquerade as neither pass nor fail.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Three rules. Each one exists because of a specific way a harness can lie.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Rule 1: run the reference solution first&#10; &lt;div id="rule-1-run-the-reference-solution-first" 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="#rule-1-run-the-reference-solution-first" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Before any model attempt is scored, the harness runs the problem&amp;rsquo;s own reference solution against the hidden tests:&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-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;preflight&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sandbox&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Sandbox&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limits&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Limits&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&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="s2"&gt;&amp;#34;&amp;#34;&amp;#34;Verify the reference solution passes the hidden tests. Returns the test count.&amp;#34;&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="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;_run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reference_code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sandbox&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limits&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="n"&gt;outcome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_passed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;detail&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;_classify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run&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="n"&gt;outcome&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;Outcome&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PASS&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;raise&lt;/span&gt; &lt;span class="n"&gt;HarnessError&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="s2"&gt;&amp;#34;pre-flight failed: the reference solution did not pass the hidden tests &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="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;detail&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;). Fix the item before auditing.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&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="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;stderr:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stderr&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&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="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;return&lt;/span&gt; &lt;span class="n"&gt;total&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;Without this gate, a broken test file is indistinguishable from a model that cannot solve the problem. You would conclude the problem is AI-resistant when your own tests do not run. In a project whose whole point was hunting for AI-resistant problems, this is the exact wrong conclusion to hand out for free. The gate turns that scenario into a loud abort instead of a quiet score of zero.&lt;/p&gt;&#10;&lt;p&gt;The gate also buys something subtle. Once the reference is known to pass, any error from a candidate solution (syntax error, import error, exception, failing assertion) is a legitimate FAIL. I do not have to wonder whose fault a stack trace is. The test file was proven sound minutes earlier.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Rule 2: three outcomes, not two&#10; &lt;div id="rule-2-three-outcomes-not-two" 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="#rule-2-three-outcomes-not-two" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Most harnesses classify an attempt as pass or fail. Mine has a third verdict, and the classification code shows where it comes from:&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-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;raw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_JSON_REPORT&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="n"&gt;raw&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="kc"&gt;None&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;# No machine-readable report. The test file is known-good (pre-flight), so a&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;# non-zero exit means the candidate broke collection/execution -&amp;gt; FAIL. A clean&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;# exit with no report is a genuine harness anomaly.&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="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit_code&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&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="kc"&gt;None&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;return&lt;/span&gt; &lt;span class="n"&gt;Outcome&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FAIL&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="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;no json report; pytest exit &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&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;return&lt;/span&gt; &lt;span class="n"&gt;Outcome&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HARNESS_ERROR&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="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;no json report produced&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;With only two buckets, a crash has to land somewhere, and both landings are lies. Count it as a pass and your scores inflate. Count it as a fail and infrastructure flakes become model failures. &lt;code&gt;HARNESS_ERROR&lt;/code&gt; attempts are excluded from the pass@k denominator and reported separately, so they masquerade as neither.&lt;/p&gt;&#10;&lt;div class="not-prose diagram diagram-light"&gt;&lt;svg id="dce964c3d75e1f37dlight" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 813.625px;" viewBox="0 0 813.625 690.046875" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#dce964c3d75e1f37dlight{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;}}#dce964c3d75e1f37dlight .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#dce964c3d75e1f37dlight .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#dce964c3d75e1f37dlight .error-icon{fill:rgb(255, 255, 255);}#dce964c3d75e1f37dlight .error-text{fill:#000000;stroke:#000000;}#dce964c3d75e1f37dlight .edge-thickness-normal{stroke-width:1px;}#dce964c3d75e1f37dlight .edge-thickness-thick{stroke-width:3.5px;}#dce964c3d75e1f37dlight .edge-pattern-solid{stroke-dasharray:0;}#dce964c3d75e1f37dlight .edge-thickness-invisible{stroke-width:0;fill:none;}#dce964c3d75e1f37dlight .edge-pattern-dashed{stroke-dasharray:3;}#dce964c3d75e1f37dlight .edge-pattern-dotted{stroke-dasharray:2;}#dce964c3d75e1f37dlight .marker{fill:rgb(74, 86, 92);stroke:rgb(74, 86, 92);}#dce964c3d75e1f37dlight .marker.cross{stroke:rgb(74, 86, 92);}#dce964c3d75e1f37dlight svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#dce964c3d75e1f37dlight p{margin:0;}#dce964c3d75e1f37dlight .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#333;}#dce964c3d75e1f37dlight .cluster-label text{fill:#000000;}#dce964c3d75e1f37dlight .cluster-label span{color:#000000;}#dce964c3d75e1f37dlight .cluster-label span p{background-color:transparent;}#dce964c3d75e1f37dlight .label text,#dce964c3d75e1f37dlight span{fill:#333;color:#333;}#dce964c3d75e1f37dlight .node rect,#dce964c3d75e1f37dlight .node circle,#dce964c3d75e1f37dlight .node ellipse,#dce964c3d75e1f37dlight .node polygon,#dce964c3d75e1f37dlight .node path{fill:rgb(255, 255, 255);stroke:rgb(204, 216, 222);stroke-width:1px;}#dce964c3d75e1f37dlight .rough-node .label text,#dce964c3d75e1f37dlight .node .label text,#dce964c3d75e1f37dlight .image-shape .label,#dce964c3d75e1f37dlight .icon-shape .label{text-anchor:middle;}#dce964c3d75e1f37dlight .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#dce964c3d75e1f37dlight .rough-node .label,#dce964c3d75e1f37dlight .node .label,#dce964c3d75e1f37dlight .image-shape .label,#dce964c3d75e1f37dlight .icon-shape .label{text-align:center;}#dce964c3d75e1f37dlight .node.clickable{cursor:pointer;}#dce964c3d75e1f37dlight .root .anchor path{fill:rgb(74, 86, 92)!important;stroke-width:0;stroke:rgb(74, 86, 92);}#dce964c3d75e1f37dlight .arrowheadPath{fill:#000000;}#dce964c3d75e1f37dlight .edgePath .path{stroke:rgb(74, 86, 92);stroke-width:1px;}#dce964c3d75e1f37dlight .flowchart-link{stroke:rgb(74, 86, 92);fill:none;}#dce964c3d75e1f37dlight .edgeLabel{background-color:rgb(182, 240, 255);text-align:center;}#dce964c3d75e1f37dlight .edgeLabel p{background-color:rgb(182, 240, 255);}#dce964c3d75e1f37dlight .edgeLabel rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#dce964c3d75e1f37dlight .labelBkg{background-color:rgba(182, 240, 255, 0.5);}#dce964c3d75e1f37dlight .cluster rect{fill:rgb(255, 255, 255);stroke:rgb(129, 146, 154);stroke-width:1px;}#dce964c3d75e1f37dlight .cluster text{fill:#000000;}#dce964c3d75e1f37dlight .cluster span{color:#000000;}#dce964c3d75e1f37dlight 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;}#dce964c3d75e1f37dlight .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#dce964c3d75e1f37dlight rect.text{fill:none;stroke-width:0;}#dce964c3d75e1f37dlight .icon-shape,#dce964c3d75e1f37dlight .image-shape{background-color:rgb(182, 240, 255);text-align:center;}#dce964c3d75e1f37dlight .icon-shape p,#dce964c3d75e1f37dlight .image-shape p{background-color:rgb(182, 240, 255);padding:2px;}#dce964c3d75e1f37dlight .icon-shape .label rect,#dce964c3d75e1f37dlight .image-shape .label rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#dce964c3d75e1f37dlight .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#dce964c3d75e1f37dlight .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#dce964c3d75e1f37dlight .node .neo-node{stroke:rgb(204, 216, 222);}#dce964c3d75e1f37dlight [data-look="neo"].node rect,#dce964c3d75e1f37dlight [data-look="neo"].cluster rect,#dce964c3d75e1f37dlight [data-look="neo"].node polygon{stroke:url(#dce964c3d75e1f37dlight-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37dlight [data-look="neo"].swimlane.cluster rect{filter:none;}#dce964c3d75e1f37dlight [data-look="neo"].node path{stroke:url(#dce964c3d75e1f37dlight-gradient);stroke-width:1px;}#dce964c3d75e1f37dlight [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37dlight [data-look="neo"].node .neo-line path{stroke:rgb(204, 216, 222);filter:none;}#dce964c3d75e1f37dlight [data-look="neo"].node circle{stroke:url(#dce964c3d75e1f37dlight-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37dlight [data-look="neo"].node circle .state-start{fill:#000000;}#dce964c3d75e1f37dlight [data-look="neo"].icon-shape .icon{fill:url(#dce964c3d75e1f37dlight-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37dlight [data-look="neo"].icon-shape .icon-neo path{stroke:url(#dce964c3d75e1f37dlight-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37dlight :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="dce964c3d75e1f37dlight_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="dce964c3d75e1f37dlight_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="dce964c3d75e1f37dlight_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="dce964c3d75e1f37dlight_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="dce964c3d75e1f37dlight_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="dce964c3d75e1f37dlight_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="dce964c3d75e1f37dlight_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="dce964c3d75e1f37dlight_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="dce964c3d75e1f37dlight_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="dce964c3d75e1f37dlight_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="dce964c3d75e1f37dlight_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="dce964c3d75e1f37dlight_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="M375.586,62L375.586,66.167C375.586,70.333,375.586,78.667,375.586,86.333C375.586,94,375.586,101,375.586,104.5L375.586,108" id="dce964c3d75e1f37dlight-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="W3sieCI6Mzc1LjU4NTkzNzUsInkiOjYyfSx7IngiOjM3NS41ODU5Mzc1LCJ5Ijo4N30seyJ4IjozNzUuNTg1OTM3NSwieSI6MTEyfV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M322.371,215.238L290.379,230.274C258.388,245.31,194.405,275.381,162.413,295.917C130.422,316.453,130.422,327.453,130.422,332.953L130.422,338.453" id="dce964c3d75e1f37dlight-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="W3sieCI6MzIyLjM3MDUwODEwODg3NzA2LCJ5IjoyMTUuMjM3Njk1NjA4ODc3MX0seyJ4IjoxMzAuNDIxODc1LCJ5IjozMDUuNDUzMTI1fSx7IngiOjEzMC40MjE4NzUsInkiOjM0Mi40NTMxMjV9XQ==" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M96.905,496.53L90.37,508.283C83.835,520.035,70.765,543.541,64.23,562.794C57.695,582.047,57.695,597.047,57.695,604.547L57.695,612.047" id="dce964c3d75e1f37dlight-L_C_P_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_P_0" data-points="W3sieCI6OTYuOTA0NzMxMzQ0Mjg2MiwieSI6NDk2LjUyOTczMTM0NDI4NjIzfSx7IngiOjU3LjY5NTMxMjUsInkiOjU2Ny4wNDY4NzV9LHsieCI6NTcuNjk1MzEyNSwieSI6NjE2LjA0Njg3NX1d" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M163.939,496.53L170.474,508.283C177.009,520.035,190.079,543.541,196.614,562.794C203.148,582.047,203.148,597.047,203.148,604.547L203.148,612.047" id="dce964c3d75e1f37dlight-L_C_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_C_F_0" data-points="W3sieCI6MTYzLjkzOTAxODY1NTcxMzgsInkiOjQ5Ni41Mjk3MzEzNDQyODYyM30seyJ4IjoyMDMuMTQ4NDM3NSwieSI6NTY3LjA0Njg3NX0seyJ4IjoyMDMuMTQ4NDM3NSwieSI6NjE2LjA0Njg3NX1d" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M423.147,220.892L445.005,234.986C466.864,249.079,510.58,277.266,532.439,300.436C554.297,323.607,554.297,341.76,554.297,350.837L554.297,359.914" id="dce964c3d75e1f37dlight-L_B_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_B_E_0" data-points="W3sieCI6NDIzLjE0Njg3MjQ2NjcxMDEsInkiOjIyMC44OTIxOTAwMzMyODk5Mn0seyJ4Ijo1NTQuMjk2ODc1LCJ5IjozMDUuNDUzMTI1fSx7IngiOjU1NC4yOTY4NzUsInkiOjM2My45MTQwNjI1fV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M517.006,471.295L500.024,487.254C483.043,503.212,449.08,535.13,432.099,556.588C415.117,578.047,415.117,589.047,415.117,594.547L415.117,600.047" id="dce964c3d75e1f37dlight-L_E_F2_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_F2_0" data-points="W3sieCI6NTE3LjAwNTg4NTQzMDIzMTIsInkiOjQ3MS4yOTQ5NDc5MzAyMzEyfSx7IngiOjQxNS4xMTcxODc1LCJ5Ijo1NjcuMDQ2ODc1fSx7IngiOjQxNS4xMTcxODc1LCJ5Ijo2MDQuMDQ2ODc1fV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M591.588,471.295L608.569,487.254C625.551,503.212,659.514,535.13,676.495,556.588C693.477,578.047,693.477,589.047,693.477,594.547L693.477,600.047" id="dce964c3d75e1f37dlight-L_E_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_E_H_0" data-points="W3sieCI6NTkxLjU4Nzg2NDU2OTc2ODgsInkiOjQ3MS4yOTQ5NDc5MzAyMzEyfSx7IngiOjY5My40NzY1NjI1LCJ5Ijo1NjcuMDQ2ODc1fSx7IngiOjY5My40NzY1NjI1LCJ5Ijo2MDQuMDQ2ODc1fV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_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" transform="translate(130.421875, 305.453125)"&gt;&lt;g class="label" data-id="L_B_C_0" transform="translate(-12.4765625, -12)"&gt;&lt;foreignObject width="24.953125" 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;yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(57.6953125, 567.046875)"&gt;&lt;g class="label" data-id="L_C_P_0" transform="translate(-12.4765625, -12)"&gt;&lt;foreignObject width="24.953125" 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;yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(203.1484375, 567.046875)"&gt;&lt;g class="label" data-id="L_C_F_0" transform="translate(-9.0859375, -12)"&gt;&lt;foreignObject width="18.171875" 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;no&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(554.296875, 305.453125)"&gt;&lt;g class="label" data-id="L_B_E_0" transform="translate(-9.0859375, -12)"&gt;&lt;foreignObject width="18.171875" 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;no&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(415.1171875, 567.046875)"&gt;&lt;g class="label" data-id="L_E_F2_0" transform="translate(-12.4765625, -12)"&gt;&lt;foreignObject width="24.953125" 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;yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(693.4765625, 567.046875)"&gt;&lt;g class="label" data-id="L_E_H_0" transform="translate(-9.0859375, -12)"&gt;&lt;foreignObject width="18.171875" 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;no&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="dce964c3d75e1f37dlight-flowchart-A-0" data-look="classic" transform="translate(375.5859375, 35)"&gt;&lt;rect class="basic label-container" style="" x="-104.75" y="-27" width="209.5" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-74.75, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="149.5" 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;sandbox run finishes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-B-1" data-look="classic" transform="translate(375.5859375, 190.2265625)"&gt;&lt;polygon points="78.2265625,0 156.453125,-78.2265625 78.2265625,-156.453125 0,-78.2265625" class="label-container" transform="translate(-77.7265625, 78.2265625)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-39.2265625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="78.453125" 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;json report&lt;br&gt;produced?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-C-3" data-look="classic" transform="translate(130.421875, 436.25)"&gt;&lt;polygon points="93.796875,0 187.59375,-93.796875 93.796875,-187.59375 0,-93.796875" class="label-container" transform="translate(-93.296875, 93.796875)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-54.796875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="109.59375" 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;all hidden tests&lt;br&gt;passed?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-P-5" data-look="classic" transform="translate(57.6953125, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-49.6953125" y="-27" width="99.390625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-19.6953125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="39.390625" 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;PASS&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-F-7" data-look="classic" transform="translate(203.1484375, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-45.7578125" y="-27" width="91.515625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-15.7578125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="31.515625" 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;FAIL&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-E-9" data-look="classic" transform="translate(554.296875, 436.25)"&gt;&lt;polygon points="72.3359375,0 144.671875,-72.3359375 72.3359375,-144.671875 0,-72.3359375" class="label-container" transform="translate(-71.8359375, 72.3359375)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-33.3359375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="66.671875" 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;exit code&lt;br&gt;nonzero?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-F2-11" data-look="classic" transform="translate(415.1171875, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-116.2109375" y="-39" width="232.421875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-86.2109375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="172.421875" 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;FAIL&lt;br&gt;candidate broke the run&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-H-13" data-look="classic" transform="translate(693.4765625, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-112.1484375" y="-39" width="224.296875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-82.1484375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="164.296875" 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;HARNESS_ERROR&lt;br&gt;excluded from pass@k&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="dce964c3d75e1f37dlight-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="dce964c3d75e1f37dlight-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="dce964c3d75e1f37dlight-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="dce964c3d75e1f37ddark" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 813.625px;" viewBox="0 0 813.625 690.046875" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#dce964c3d75e1f37ddark{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;}}#dce964c3d75e1f37ddark .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#dce964c3d75e1f37ddark .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#dce964c3d75e1f37ddark .error-icon{fill:#a44141;}#dce964c3d75e1f37ddark .error-text{fill:#ddd;stroke:#ddd;}#dce964c3d75e1f37ddark .edge-thickness-normal{stroke-width:1px;}#dce964c3d75e1f37ddark .edge-thickness-thick{stroke-width:3.5px;}#dce964c3d75e1f37ddark .edge-pattern-solid{stroke-dasharray:0;}#dce964c3d75e1f37ddark .edge-thickness-invisible{stroke-width:0;fill:none;}#dce964c3d75e1f37ddark .edge-pattern-dashed{stroke-dasharray:3;}#dce964c3d75e1f37ddark .edge-pattern-dotted{stroke-dasharray:2;}#dce964c3d75e1f37ddark .marker{fill:lightgrey;stroke:lightgrey;}#dce964c3d75e1f37ddark .marker.cross{stroke:lightgrey;}#dce964c3d75e1f37ddark svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#dce964c3d75e1f37ddark p{margin:0;}#dce964c3d75e1f37ddark .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#ccc;}#dce964c3d75e1f37ddark .cluster-label text{fill:#F9FFFE;}#dce964c3d75e1f37ddark .cluster-label span{color:#F9FFFE;}#dce964c3d75e1f37ddark .cluster-label span p{background-color:transparent;}#dce964c3d75e1f37ddark .label text,#dce964c3d75e1f37ddark span{fill:#ccc;color:#ccc;}#dce964c3d75e1f37ddark .node rect,#dce964c3d75e1f37ddark .node circle,#dce964c3d75e1f37ddark .node ellipse,#dce964c3d75e1f37ddark .node polygon,#dce964c3d75e1f37ddark .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#dce964c3d75e1f37ddark .rough-node .label text,#dce964c3d75e1f37ddark .node .label text,#dce964c3d75e1f37ddark .image-shape .label,#dce964c3d75e1f37ddark .icon-shape .label{text-anchor:middle;}#dce964c3d75e1f37ddark .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#dce964c3d75e1f37ddark .rough-node .label,#dce964c3d75e1f37ddark .node .label,#dce964c3d75e1f37ddark .image-shape .label,#dce964c3d75e1f37ddark .icon-shape .label{text-align:center;}#dce964c3d75e1f37ddark .node.clickable{cursor:pointer;}#dce964c3d75e1f37ddark .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#dce964c3d75e1f37ddark .arrowheadPath{fill:lightgrey;}#dce964c3d75e1f37ddark .edgePath .path{stroke:lightgrey;stroke-width:1px;}#dce964c3d75e1f37ddark .flowchart-link{stroke:lightgrey;fill:none;}#dce964c3d75e1f37ddark .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#dce964c3d75e1f37ddark .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#dce964c3d75e1f37ddark .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#dce964c3d75e1f37ddark .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#dce964c3d75e1f37ddark .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#dce964c3d75e1f37ddark .cluster text{fill:#F9FFFE;}#dce964c3d75e1f37ddark .cluster span{color:#F9FFFE;}#dce964c3d75e1f37ddark 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;}#dce964c3d75e1f37ddark .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#dce964c3d75e1f37ddark rect.text{fill:none;stroke-width:0;}#dce964c3d75e1f37ddark .icon-shape,#dce964c3d75e1f37ddark .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#dce964c3d75e1f37ddark .icon-shape p,#dce964c3d75e1f37ddark .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#dce964c3d75e1f37ddark .icon-shape .label rect,#dce964c3d75e1f37ddark .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#dce964c3d75e1f37ddark .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#dce964c3d75e1f37ddark .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#dce964c3d75e1f37ddark .node .neo-node{stroke:#ccc;}#dce964c3d75e1f37ddark [data-look="neo"].node rect,#dce964c3d75e1f37ddark [data-look="neo"].cluster rect,#dce964c3d75e1f37ddark [data-look="neo"].node polygon{stroke:url(#dce964c3d75e1f37ddark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37ddark [data-look="neo"].swimlane.cluster rect{filter:none;}#dce964c3d75e1f37ddark [data-look="neo"].node path{stroke:url(#dce964c3d75e1f37ddark-gradient);stroke-width:1px;}#dce964c3d75e1f37ddark [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37ddark [data-look="neo"].node .neo-line path{stroke:#ccc;filter:none;}#dce964c3d75e1f37ddark [data-look="neo"].node circle{stroke:url(#dce964c3d75e1f37ddark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37ddark [data-look="neo"].node circle .state-start{fill:#000000;}#dce964c3d75e1f37ddark [data-look="neo"].icon-shape .icon{fill:url(#dce964c3d75e1f37ddark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37ddark [data-look="neo"].icon-shape .icon-neo path{stroke:url(#dce964c3d75e1f37ddark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37ddark :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="dce964c3d75e1f37ddark_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="dce964c3d75e1f37ddark_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="dce964c3d75e1f37ddark_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="dce964c3d75e1f37ddark_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="dce964c3d75e1f37ddark_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="dce964c3d75e1f37ddark_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="dce964c3d75e1f37ddark_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="dce964c3d75e1f37ddark_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="dce964c3d75e1f37ddark_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="dce964c3d75e1f37ddark_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="dce964c3d75e1f37ddark_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="dce964c3d75e1f37ddark_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="M375.586,62L375.586,66.167C375.586,70.333,375.586,78.667,375.586,86.333C375.586,94,375.586,101,375.586,104.5L375.586,108" id="dce964c3d75e1f37ddark-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="W3sieCI6Mzc1LjU4NTkzNzUsInkiOjYyfSx7IngiOjM3NS41ODU5Mzc1LCJ5Ijo4N30seyJ4IjozNzUuNTg1OTM3NSwieSI6MTEyfV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M322.371,215.238L290.379,230.274C258.388,245.31,194.405,275.381,162.413,295.917C130.422,316.453,130.422,327.453,130.422,332.953L130.422,338.453" id="dce964c3d75e1f37ddark-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="W3sieCI6MzIyLjM3MDUwODEwODg3NzA2LCJ5IjoyMTUuMjM3Njk1NjA4ODc3MX0seyJ4IjoxMzAuNDIxODc1LCJ5IjozMDUuNDUzMTI1fSx7IngiOjEzMC40MjE4NzUsInkiOjM0Mi40NTMxMjV9XQ==" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M96.905,496.53L90.37,508.283C83.835,520.035,70.765,543.541,64.23,562.794C57.695,582.047,57.695,597.047,57.695,604.547L57.695,612.047" id="dce964c3d75e1f37ddark-L_C_P_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_P_0" data-points="W3sieCI6OTYuOTA0NzMxMzQ0Mjg2MiwieSI6NDk2LjUyOTczMTM0NDI4NjIzfSx7IngiOjU3LjY5NTMxMjUsInkiOjU2Ny4wNDY4NzV9LHsieCI6NTcuNjk1MzEyNSwieSI6NjE2LjA0Njg3NX1d" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M163.939,496.53L170.474,508.283C177.009,520.035,190.079,543.541,196.614,562.794C203.148,582.047,203.148,597.047,203.148,604.547L203.148,612.047" id="dce964c3d75e1f37ddark-L_C_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_C_F_0" data-points="W3sieCI6MTYzLjkzOTAxODY1NTcxMzgsInkiOjQ5Ni41Mjk3MzEzNDQyODYyM30seyJ4IjoyMDMuMTQ4NDM3NSwieSI6NTY3LjA0Njg3NX0seyJ4IjoyMDMuMTQ4NDM3NSwieSI6NjE2LjA0Njg3NX1d" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M423.147,220.892L445.005,234.986C466.864,249.079,510.58,277.266,532.439,300.436C554.297,323.607,554.297,341.76,554.297,350.837L554.297,359.914" id="dce964c3d75e1f37ddark-L_B_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_B_E_0" data-points="W3sieCI6NDIzLjE0Njg3MjQ2NjcxMDEsInkiOjIyMC44OTIxOTAwMzMyODk5Mn0seyJ4Ijo1NTQuMjk2ODc1LCJ5IjozMDUuNDUzMTI1fSx7IngiOjU1NC4yOTY4NzUsInkiOjM2My45MTQwNjI1fV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M517.006,471.295L500.024,487.254C483.043,503.212,449.08,535.13,432.099,556.588C415.117,578.047,415.117,589.047,415.117,594.547L415.117,600.047" id="dce964c3d75e1f37ddark-L_E_F2_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_F2_0" data-points="W3sieCI6NTE3LjAwNTg4NTQzMDIzMTIsInkiOjQ3MS4yOTQ5NDc5MzAyMzEyfSx7IngiOjQxNS4xMTcxODc1LCJ5Ijo1NjcuMDQ2ODc1fSx7IngiOjQxNS4xMTcxODc1LCJ5Ijo2MDQuMDQ2ODc1fV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M591.588,471.295L608.569,487.254C625.551,503.212,659.514,535.13,676.495,556.588C693.477,578.047,693.477,589.047,693.477,594.547L693.477,600.047" id="dce964c3d75e1f37ddark-L_E_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_E_H_0" data-points="W3sieCI6NTkxLjU4Nzg2NDU2OTc2ODgsInkiOjQ3MS4yOTQ5NDc5MzAyMzEyfSx7IngiOjY5My40NzY1NjI1LCJ5Ijo1NjcuMDQ2ODc1fSx7IngiOjY5My40NzY1NjI1LCJ5Ijo2MDQuMDQ2ODc1fV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_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" transform="translate(130.421875, 305.453125)"&gt;&lt;g class="label" data-id="L_B_C_0" transform="translate(-12.4765625, -12)"&gt;&lt;foreignObject width="24.953125" 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;yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(57.6953125, 567.046875)"&gt;&lt;g class="label" data-id="L_C_P_0" transform="translate(-12.4765625, -12)"&gt;&lt;foreignObject width="24.953125" 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;yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(203.1484375, 567.046875)"&gt;&lt;g class="label" data-id="L_C_F_0" transform="translate(-9.0859375, -12)"&gt;&lt;foreignObject width="18.171875" 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;no&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(554.296875, 305.453125)"&gt;&lt;g class="label" data-id="L_B_E_0" transform="translate(-9.0859375, -12)"&gt;&lt;foreignObject width="18.171875" 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;no&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(415.1171875, 567.046875)"&gt;&lt;g class="label" data-id="L_E_F2_0" transform="translate(-12.4765625, -12)"&gt;&lt;foreignObject width="24.953125" 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;yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(693.4765625, 567.046875)"&gt;&lt;g class="label" data-id="L_E_H_0" transform="translate(-9.0859375, -12)"&gt;&lt;foreignObject width="18.171875" 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;no&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="dce964c3d75e1f37ddark-flowchart-A-0" data-look="classic" transform="translate(375.5859375, 35)"&gt;&lt;rect class="basic label-container" style="" x="-104.75" y="-27" width="209.5" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-74.75, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="149.5" 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;sandbox run finishes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-B-1" data-look="classic" transform="translate(375.5859375, 190.2265625)"&gt;&lt;polygon points="78.2265625,0 156.453125,-78.2265625 78.2265625,-156.453125 0,-78.2265625" class="label-container" transform="translate(-77.7265625, 78.2265625)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-39.2265625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="78.453125" 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;json report&lt;br&gt;produced?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-C-3" data-look="classic" transform="translate(130.421875, 436.25)"&gt;&lt;polygon points="93.796875,0 187.59375,-93.796875 93.796875,-187.59375 0,-93.796875" class="label-container" transform="translate(-93.296875, 93.796875)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-54.796875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="109.59375" 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;all hidden tests&lt;br&gt;passed?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-P-5" data-look="classic" transform="translate(57.6953125, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-49.6953125" y="-27" width="99.390625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-19.6953125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="39.390625" 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;PASS&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-F-7" data-look="classic" transform="translate(203.1484375, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-45.7578125" y="-27" width="91.515625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-15.7578125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="31.515625" 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;FAIL&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-E-9" data-look="classic" transform="translate(554.296875, 436.25)"&gt;&lt;polygon points="72.3359375,0 144.671875,-72.3359375 72.3359375,-144.671875 0,-72.3359375" class="label-container" transform="translate(-71.8359375, 72.3359375)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-33.3359375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="66.671875" 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;exit code&lt;br&gt;nonzero?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-F2-11" data-look="classic" transform="translate(415.1171875, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-116.2109375" y="-39" width="232.421875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-86.2109375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="172.421875" 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;FAIL&lt;br&gt;candidate broke the run&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-H-13" data-look="classic" transform="translate(693.4765625, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-112.1484375" y="-39" width="224.296875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-82.1484375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="164.296875" 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;HARNESS_ERROR&lt;br&gt;excluded from pass@k&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="dce964c3d75e1f37ddark-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="dce964c3d75e1f37ddark-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="dce964c3d75e1f37ddark-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;Across all 1,095 attempts, the harness error counter finished at zero. I want to be careful about what that proves. It does not prove the third bucket was unnecessary. It proves the infrastructure held, and I can only say that because the bucket existed to catch anything that did not. A counter that stays at zero is not vestigial. It is the evidence.&lt;/p&gt;&#10;&lt;p&gt;The scoring itself uses the unbiased pass@k estimator from the Codex paper rather than the naive &amp;ldquo;did any of the first k pass&amp;rdquo;, which is biased. That function validates k against the sample count and returns 1.0 when a pass is guaranteed by counting alone.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Rule 3: report what the sandbox does not guarantee&#10; &lt;div id="rule-3-report-what-the-sandbox-does-not-guarantee" 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="#rule-3-report-what-the-sandbox-does-not-guarantee" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Every run record carries a capability string:&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;&amp;#34;capabilities&amp;#34;: &amp;#34;network_isolated=True filesystem_confined=True memory_enforced=False&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 honest part is the &lt;code&gt;False&lt;/code&gt;. macOS does not allow a hard memory cap the usual way, so the tool bounds memory by polling. It would have been easy to leave that field out, or worse, to print &lt;code&gt;True&lt;/code&gt; because polling exists. Instead the record says: this boundary is best-effort. If a reviewer ever asks whether a candidate could have exceeded memory limits undetected, the answer is in the data, not in my memory of how the sandbox worked.&lt;/p&gt;&#10;&lt;p&gt;A full record, for shape:&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-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&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="nt"&gt;&amp;#34;item_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;count-multiples-01&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="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;claude-haiku-4-5&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="nt"&gt;&amp;#34;date&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2026-07-16&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="nt"&gt;&amp;#34;n_scored&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&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="nt"&gt;&amp;#34;n_pass&amp;#34;&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="nt"&gt;&amp;#34;n_harness_error&amp;#34;&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="nt"&gt;&amp;#34;sandbox_backend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;local&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="nt"&gt;&amp;#34;capabilities&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;network_isolated=True filesystem_confined=True memory_enforced=False&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="nt"&gt;&amp;#34;passk&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.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="nt"&gt;&amp;#34;gate_k&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&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="nt"&gt;&amp;#34;theta&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&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="nt"&gt;&amp;#34;resistant&amp;#34;&lt;/span&gt;&lt;span class="p"&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="nt"&gt;&amp;#34;construct_clean&amp;#34;&lt;/span&gt;&lt;span class="p"&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="nt"&gt;&amp;#34;combined_verdict&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;AI-RESISTANT (construct-valid)&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="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;Model and date on every record. Part 1 showed the same problem scoring 0.00, 0.05, and 0.20 on three different days. Without the stamp, those would have been one contradictory number. With it, they are three measurements.&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 harness problem must never be silently scored. Abort loudly or record it as its own outcome, but never let it wear the model&amp;rsquo;s jersey.&lt;/li&gt;&#10;&lt;li&gt;Prove your test file with the reference solution before scoring anything. After that, every candidate error is legitimately the candidate&amp;rsquo;s.&lt;/li&gt;&#10;&lt;li&gt;Pass or fail is not enough. The third bucket exists so that crashes and flakes stop laundering themselves into your metrics.&lt;/li&gt;&#10;&lt;li&gt;Write down what your sandbox does not enforce. The embarrassing field in the record is the one that makes the record credible.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Part 3 covers the statistic that came back 0.00 when the agreement was 6 out of 8, and why the zero was correct.&lt;/p&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://arxiv.org/abs/2107.03374" target="_blank" rel="noreferrer"&gt;Chen et al. (2021), &amp;ldquo;Evaluating Large Language Models Trained on Code&amp;rdquo;&lt;/a&gt; (the unbiased pass@k estimator)&lt;/li&gt;&#10;&lt;li&gt;Code shown above: &lt;code&gt;src/cs1_auditor/harness.py&lt;/code&gt; and &lt;code&gt;src/cs1_auditor/metrics.py&lt;/code&gt; in the cs1-auditor project, excerpted verbatim&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</content:encoded></item></channel></rss>