<?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>Ai-Evals on Nick Liu - Software Engineer</title><link>https://nick-liu.com/tags/ai-evals/</link><description>Recent content in Ai-Evals on Nick Liu - Software Engineer</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>nickboy@users.noreply.github.com (Nick Liu)</managingEditor><webMaster>nickboy@users.noreply.github.com (Nick Liu)</webMaster><copyright>2026 Nick Liu</copyright><lastBuildDate>Sun, 02 Aug 2026 13:49:57 -0700</lastBuildDate><atom:link href="https://nick-liu.com/tags/ai-evals/index.xml" rel="self" type="application/rss+xml"/><item><title>I hid zero-width characters in a CS1 spec. The model did not blink.</title><link>https://nick-liu.com/posts/obfuscated-spec-zero-width-characters/</link><pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate><author>nickboy@users.noreply.github.com (Nick Liu)</author><guid>https://nick-liu.com/posts/obfuscated-spec-zero-width-characters/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;I made two sabotaged copies of a CS1 problem. Into the first I inserted zero-width characters, invisible in any editor. Into the second I went heavier and swapped letters for Unicode look-alikes as well. The hidden tests stayed byte-for-byte identical. If obfuscation works as an AI defense, the model's score should drop. It scored 0.85 on both copies. The attack did nothing. My fairness check flagged both copies anyway, and that second part is the one worth writing about.&#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 4 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-done"&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."&gt;2&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot is-done"&gt;&#10; &lt;a href="https://nick-liu.com/posts/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 is-current"&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." aria-current="step"&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;&#10;&lt;h2 class="relative group"&gt;Why sabotage my own problem&#10; &lt;div id="why-sabotage-my-own-problem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-sabotage-my-own-problem" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Instructors keep looking for ways to make assignments that AI tools fail. One family of ideas is to leave the problem alone and poison the text: invisible characters, homoglyphs, formatting tricks that a human reader never notices but that might derail a model reading the same bytes. Before trusting any resistance my tool (&lt;a href="https://nick-liu.com/posts/ai-resistant-cs1-problems/" &gt;part 1&lt;/a&gt;) reported, I needed to know what this kind of tampering does to a score, because a problem that scores low for wording reasons is fake difficulty, not a real skill gap.&lt;/p&gt;</description><content:encoded>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;I made two sabotaged copies of a CS1 problem. Into the first I inserted zero-width characters, invisible in any editor. Into the second I went heavier and swapped letters for Unicode look-alikes as well. The hidden tests stayed byte-for-byte identical. If obfuscation works as an AI defense, the model's score should drop. It scored 0.85 on both copies. The attack did nothing. My fairness check flagged both copies anyway, and that second part is the one worth writing about.&#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 4 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-done"&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."&gt;2&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot is-done"&gt;&#10; &lt;a href="https://nick-liu.com/posts/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 is-current"&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." aria-current="step"&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;&#10;&lt;h2 class="relative group"&gt;Why sabotage my own problem&#10; &lt;div id="why-sabotage-my-own-problem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-sabotage-my-own-problem" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Instructors keep looking for ways to make assignments that AI tools fail. One family of ideas is to leave the problem alone and poison the text: invisible characters, homoglyphs, formatting tricks that a human reader never notices but that might derail a model reading the same bytes. Before trusting any resistance my tool (&lt;a href="https://nick-liu.com/posts/ai-resistant-cs1-problems/" &gt;part 1&lt;/a&gt;) reported, I needed to know what this kind of tampering does to a score, because a problem that scores low for wording reasons is fake difficulty, not a real skill gap.&lt;/p&gt;&#10;&lt;p&gt;The donor problem was conditionals-01, a clean baseline that the weak model already passed at 0.75. I audited both sabotaged twins against claude-haiku-4-5, 20 attempts each, the same protocol as every other run in this series.&lt;/p&gt;&#10;&lt;div class="not-prose diagram diagram-light"&gt;&lt;svg id="db1408b5f458ee625light" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 1006.921875px;" viewBox="0 0 1006.921875 222" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#db1408b5f458ee625light{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;}}#db1408b5f458ee625light .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#db1408b5f458ee625light .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#db1408b5f458ee625light .error-icon{fill:rgb(255, 255, 255);}#db1408b5f458ee625light .error-text{fill:#000000;stroke:#000000;}#db1408b5f458ee625light .edge-thickness-normal{stroke-width:1px;}#db1408b5f458ee625light .edge-thickness-thick{stroke-width:3.5px;}#db1408b5f458ee625light .edge-pattern-solid{stroke-dasharray:0;}#db1408b5f458ee625light .edge-thickness-invisible{stroke-width:0;fill:none;}#db1408b5f458ee625light .edge-pattern-dashed{stroke-dasharray:3;}#db1408b5f458ee625light .edge-pattern-dotted{stroke-dasharray:2;}#db1408b5f458ee625light .marker{fill:rgb(74, 86, 92);stroke:rgb(74, 86, 92);}#db1408b5f458ee625light .marker.cross{stroke:rgb(74, 86, 92);}#db1408b5f458ee625light svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#db1408b5f458ee625light p{margin:0;}#db1408b5f458ee625light .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#333;}#db1408b5f458ee625light .cluster-label text{fill:#000000;}#db1408b5f458ee625light .cluster-label span{color:#000000;}#db1408b5f458ee625light .cluster-label span p{background-color:transparent;}#db1408b5f458ee625light .label text,#db1408b5f458ee625light span{fill:#333;color:#333;}#db1408b5f458ee625light .node rect,#db1408b5f458ee625light .node circle,#db1408b5f458ee625light .node ellipse,#db1408b5f458ee625light .node polygon,#db1408b5f458ee625light .node path{fill:rgb(255, 255, 255);stroke:rgb(204, 216, 222);stroke-width:1px;}#db1408b5f458ee625light .rough-node .label text,#db1408b5f458ee625light .node .label text,#db1408b5f458ee625light .image-shape .label,#db1408b5f458ee625light .icon-shape .label{text-anchor:middle;}#db1408b5f458ee625light .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#db1408b5f458ee625light .rough-node .label,#db1408b5f458ee625light .node .label,#db1408b5f458ee625light .image-shape .label,#db1408b5f458ee625light .icon-shape .label{text-align:center;}#db1408b5f458ee625light .node.clickable{cursor:pointer;}#db1408b5f458ee625light .root .anchor path{fill:rgb(74, 86, 92)!important;stroke-width:0;stroke:rgb(74, 86, 92);}#db1408b5f458ee625light .arrowheadPath{fill:#000000;}#db1408b5f458ee625light .edgePath .path{stroke:rgb(74, 86, 92);stroke-width:1px;}#db1408b5f458ee625light .flowchart-link{stroke:rgb(74, 86, 92);fill:none;}#db1408b5f458ee625light .edgeLabel{background-color:rgb(182, 240, 255);text-align:center;}#db1408b5f458ee625light .edgeLabel p{background-color:rgb(182, 240, 255);}#db1408b5f458ee625light .edgeLabel rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#db1408b5f458ee625light .labelBkg{background-color:rgba(182, 240, 255, 0.5);}#db1408b5f458ee625light .cluster rect{fill:rgb(255, 255, 255);stroke:rgb(129, 146, 154);stroke-width:1px;}#db1408b5f458ee625light .cluster text{fill:#000000;}#db1408b5f458ee625light .cluster span{color:#000000;}#db1408b5f458ee625light 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;}#db1408b5f458ee625light .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#db1408b5f458ee625light rect.text{fill:none;stroke-width:0;}#db1408b5f458ee625light .icon-shape,#db1408b5f458ee625light .image-shape{background-color:rgb(182, 240, 255);text-align:center;}#db1408b5f458ee625light .icon-shape p,#db1408b5f458ee625light .image-shape p{background-color:rgb(182, 240, 255);padding:2px;}#db1408b5f458ee625light .icon-shape .label rect,#db1408b5f458ee625light .image-shape .label rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#db1408b5f458ee625light .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#db1408b5f458ee625light .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#db1408b5f458ee625light .node .neo-node{stroke:rgb(204, 216, 222);}#db1408b5f458ee625light [data-look="neo"].node rect,#db1408b5f458ee625light [data-look="neo"].cluster rect,#db1408b5f458ee625light [data-look="neo"].node polygon{stroke:url(#db1408b5f458ee625light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#db1408b5f458ee625light [data-look="neo"].swimlane.cluster rect{filter:none;}#db1408b5f458ee625light [data-look="neo"].node path{stroke:url(#db1408b5f458ee625light-gradient);stroke-width:1px;}#db1408b5f458ee625light [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#db1408b5f458ee625light [data-look="neo"].node .neo-line path{stroke:rgb(204, 216, 222);filter:none;}#db1408b5f458ee625light [data-look="neo"].node circle{stroke:url(#db1408b5f458ee625light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#db1408b5f458ee625light [data-look="neo"].node circle .state-start{fill:#000000;}#db1408b5f458ee625light [data-look="neo"].icon-shape .icon{fill:url(#db1408b5f458ee625light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#db1408b5f458ee625light [data-look="neo"].icon-shape .icon-neo path{stroke:url(#db1408b5f458ee625light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#db1408b5f458ee625light :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="db1408b5f458ee625light_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="db1408b5f458ee625light_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="db1408b5f458ee625light_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="db1408b5f458ee625light_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="db1408b5f458ee625light_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="db1408b5f458ee625light_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="db1408b5f458ee625light_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="db1408b5f458ee625light_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="db1408b5f458ee625light_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="db1408b5f458ee625light_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="db1408b5f458ee625light_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="db1408b5f458ee625light_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="M161.389,72L168.606,67.833C175.822,63.667,190.255,55.333,203.053,51.167C215.852,47,227.016,47,232.598,47L238.18,47" id="db1408b5f458ee625light-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="W3sieCI6MTYxLjM4OTE2MDE1NjI1LCJ5Ijo3Mn0seyJ4IjoyMDQuNjg3NSwieSI6NDd9LHsieCI6MjQyLjE3OTY4NzUsInkiOjQ3fV0=" data-look="classic" marker-end="url(#db1408b5f458ee625light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M161.389,150L168.606,154.167C175.822,158.333,190.255,166.667,200.971,170.833C211.688,175,218.688,175,222.188,175L225.688,175" id="db1408b5f458ee625light-L_A_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_A_C_0" data-points="W3sieCI6MTYxLjM4OTE2MDE1NjI1LCJ5IjoxNTB9LHsieCI6MjA0LjY4NzUsInkiOjE3NX0seyJ4IjoyMjkuNjg3NSwieSI6MTc1fV0=" data-look="classic" marker-end="url(#db1408b5f458ee625light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M438.773,47L445.022,47C451.271,47,463.768,47,474.228,48.893C484.688,50.787,493.111,54.573,497.323,56.467L501.534,58.36" id="db1408b5f458ee625light-L_B_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_B_D_0" data-points="W3sieCI6NDM4Ljc3MzQzNzUsInkiOjQ3fSx7IngiOjQ3Ni4yNjU2MjUsInkiOjQ3fSx7IngiOjUwNS4xODIzNzMwNDY4NzUsInkiOjYwfV0=" data-look="classic" marker-end="url(#db1408b5f458ee625light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M451.266,175L455.432,175C459.599,175,467.932,175,476.31,173.107C484.688,171.213,493.111,167.427,497.323,165.533L501.534,163.64" id="db1408b5f458ee625light-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="W3sieCI6NDUxLjI2NTYyNSwieSI6MTc1fSx7IngiOjQ3Ni4yNjU2MjUsInkiOjE3NX0seyJ4Ijo1MDUuMTgyMzczMDQ2ODc1LCJ5IjoxNjJ9XQ==" data-look="classic" marker-end="url(#db1408b5f458ee625light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M732.068,60L736.887,57.833C741.707,55.667,751.345,51.333,759.665,49.167C767.984,47,774.984,47,778.484,47L781.984,47" id="db1408b5f458ee625light-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="W3sieCI6NzMyLjA2NzYyNjk1MzEyNSwieSI6NjB9LHsieCI6NzYwLjk4NDM3NSwieSI6NDd9LHsieCI6Nzg1Ljk4NDM3NSwieSI6NDd9XQ==" data-look="classic" marker-end="url(#db1408b5f458ee625light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M732.068,162L736.887,164.167C741.707,166.333,751.345,170.667,760.085,172.833C768.826,175,776.667,175,780.587,175L784.508,175" id="db1408b5f458ee625light-L_D_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_D_F_0" data-points="W3sieCI6NzMyLjA2NzYyNjk1MzEyNSwieSI6MTYyfSx7IngiOjc2MC45ODQzNzUsInkiOjE3NX0seyJ4Ijo3ODguNTA3ODEyNSwieSI6MTc1fV0=" data-look="classic" marker-end="url(#db1408b5f458ee625light_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_A_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_B_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_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_D_F_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="db1408b5f458ee625light-flowchart-A-0" data-look="classic" transform="translate(93.84375, 111)"&gt;&lt;rect class="basic label-container" style="" x="-85.84375" y="-39" width="171.6875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-55.84375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="111.6875" 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;conditionals-01&lt;br&gt;clean spec&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="db1408b5f458ee625light-flowchart-B-1" data-look="classic" transform="translate(340.4765625, 47)"&gt;&lt;rect class="basic label-container" style="" x="-98.296875" y="-39" width="196.59375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-68.296875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="136.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;twin 1&lt;br&gt;+ zero-width chars&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="db1408b5f458ee625light-flowchart-C-3" data-look="classic" transform="translate(340.4765625, 175)"&gt;&lt;rect class="basic label-container" style="" x="-110.7890625" y="-39" width="221.578125" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-80.7890625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="161.578125" 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;twin 2&lt;br&gt;+ look-alike letters too&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="db1408b5f458ee625light-flowchart-D-5" data-look="classic" transform="translate(618.625, 111)"&gt;&lt;rect class="basic label-container" style="" x="-117.359375" y="-51" width="234.71875" height="102"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-87.359375, -36)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="174.71875" height="72"&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;audit&lt;br&gt;hidden tests unchanged&lt;br&gt;20 attempts each&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="db1408b5f458ee625light-flowchart-E-9" data-look="classic" transform="translate(892.453125, 47)"&gt;&lt;rect class="basic label-container" style="" x="-106.46875" y="-39" width="212.9375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-76.46875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="152.9375" 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;scores 0.85 and 0.85&lt;br&gt;attack failed&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="db1408b5f458ee625light-flowchart-F-11" data-look="classic" transform="translate(892.453125, 175)"&gt;&lt;rect class="basic label-container" style="" x="-103.9453125" y="-39" width="207.890625" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-73.9453125, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="147.890625" 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;construct check&lt;br&gt;flags both: not clean&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="db1408b5f458ee625light-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="db1408b5f458ee625light-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="db1408b5f458ee625light-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="db1408b5f458ee625dark" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 1006.921875px;" viewBox="0 0 1006.921875 222" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#db1408b5f458ee625dark{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;}}#db1408b5f458ee625dark .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#db1408b5f458ee625dark .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#db1408b5f458ee625dark .error-icon{fill:#a44141;}#db1408b5f458ee625dark .error-text{fill:#ddd;stroke:#ddd;}#db1408b5f458ee625dark .edge-thickness-normal{stroke-width:1px;}#db1408b5f458ee625dark .edge-thickness-thick{stroke-width:3.5px;}#db1408b5f458ee625dark .edge-pattern-solid{stroke-dasharray:0;}#db1408b5f458ee625dark .edge-thickness-invisible{stroke-width:0;fill:none;}#db1408b5f458ee625dark .edge-pattern-dashed{stroke-dasharray:3;}#db1408b5f458ee625dark .edge-pattern-dotted{stroke-dasharray:2;}#db1408b5f458ee625dark .marker{fill:lightgrey;stroke:lightgrey;}#db1408b5f458ee625dark .marker.cross{stroke:lightgrey;}#db1408b5f458ee625dark svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#db1408b5f458ee625dark p{margin:0;}#db1408b5f458ee625dark .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#ccc;}#db1408b5f458ee625dark .cluster-label text{fill:#F9FFFE;}#db1408b5f458ee625dark .cluster-label span{color:#F9FFFE;}#db1408b5f458ee625dark .cluster-label span p{background-color:transparent;}#db1408b5f458ee625dark .label text,#db1408b5f458ee625dark span{fill:#ccc;color:#ccc;}#db1408b5f458ee625dark .node rect,#db1408b5f458ee625dark .node circle,#db1408b5f458ee625dark .node ellipse,#db1408b5f458ee625dark .node polygon,#db1408b5f458ee625dark .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#db1408b5f458ee625dark .rough-node .label text,#db1408b5f458ee625dark .node .label text,#db1408b5f458ee625dark .image-shape .label,#db1408b5f458ee625dark .icon-shape .label{text-anchor:middle;}#db1408b5f458ee625dark .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#db1408b5f458ee625dark .rough-node .label,#db1408b5f458ee625dark .node .label,#db1408b5f458ee625dark .image-shape .label,#db1408b5f458ee625dark .icon-shape .label{text-align:center;}#db1408b5f458ee625dark .node.clickable{cursor:pointer;}#db1408b5f458ee625dark .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#db1408b5f458ee625dark .arrowheadPath{fill:lightgrey;}#db1408b5f458ee625dark .edgePath .path{stroke:lightgrey;stroke-width:1px;}#db1408b5f458ee625dark .flowchart-link{stroke:lightgrey;fill:none;}#db1408b5f458ee625dark .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#db1408b5f458ee625dark .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#db1408b5f458ee625dark .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#db1408b5f458ee625dark .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#db1408b5f458ee625dark .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#db1408b5f458ee625dark .cluster text{fill:#F9FFFE;}#db1408b5f458ee625dark .cluster span{color:#F9FFFE;}#db1408b5f458ee625dark 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;}#db1408b5f458ee625dark .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#db1408b5f458ee625dark rect.text{fill:none;stroke-width:0;}#db1408b5f458ee625dark .icon-shape,#db1408b5f458ee625dark .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#db1408b5f458ee625dark .icon-shape p,#db1408b5f458ee625dark .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#db1408b5f458ee625dark .icon-shape .label rect,#db1408b5f458ee625dark .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#db1408b5f458ee625dark .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#db1408b5f458ee625dark .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#db1408b5f458ee625dark .node .neo-node{stroke:#ccc;}#db1408b5f458ee625dark [data-look="neo"].node rect,#db1408b5f458ee625dark [data-look="neo"].cluster rect,#db1408b5f458ee625dark [data-look="neo"].node polygon{stroke:url(#db1408b5f458ee625dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#db1408b5f458ee625dark [data-look="neo"].swimlane.cluster rect{filter:none;}#db1408b5f458ee625dark [data-look="neo"].node path{stroke:url(#db1408b5f458ee625dark-gradient);stroke-width:1px;}#db1408b5f458ee625dark [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#db1408b5f458ee625dark [data-look="neo"].node .neo-line path{stroke:#ccc;filter:none;}#db1408b5f458ee625dark [data-look="neo"].node circle{stroke:url(#db1408b5f458ee625dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#db1408b5f458ee625dark [data-look="neo"].node circle .state-start{fill:#000000;}#db1408b5f458ee625dark [data-look="neo"].icon-shape .icon{fill:url(#db1408b5f458ee625dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#db1408b5f458ee625dark [data-look="neo"].icon-shape .icon-neo path{stroke:url(#db1408b5f458ee625dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#db1408b5f458ee625dark :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="db1408b5f458ee625dark_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="db1408b5f458ee625dark_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="db1408b5f458ee625dark_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="db1408b5f458ee625dark_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="db1408b5f458ee625dark_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="db1408b5f458ee625dark_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="db1408b5f458ee625dark_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="db1408b5f458ee625dark_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="db1408b5f458ee625dark_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="db1408b5f458ee625dark_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="db1408b5f458ee625dark_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="db1408b5f458ee625dark_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="M161.389,72L168.606,67.833C175.822,63.667,190.255,55.333,203.053,51.167C215.852,47,227.016,47,232.598,47L238.18,47" id="db1408b5f458ee625dark-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="W3sieCI6MTYxLjM4OTE2MDE1NjI1LCJ5Ijo3Mn0seyJ4IjoyMDQuNjg3NSwieSI6NDd9LHsieCI6MjQyLjE3OTY4NzUsInkiOjQ3fV0=" data-look="classic" marker-end="url(#db1408b5f458ee625dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M161.389,150L168.606,154.167C175.822,158.333,190.255,166.667,200.971,170.833C211.688,175,218.688,175,222.188,175L225.688,175" id="db1408b5f458ee625dark-L_A_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_A_C_0" data-points="W3sieCI6MTYxLjM4OTE2MDE1NjI1LCJ5IjoxNTB9LHsieCI6MjA0LjY4NzUsInkiOjE3NX0seyJ4IjoyMjkuNjg3NSwieSI6MTc1fV0=" data-look="classic" marker-end="url(#db1408b5f458ee625dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M438.773,47L445.022,47C451.271,47,463.768,47,474.228,48.893C484.688,50.787,493.111,54.573,497.323,56.467L501.534,58.36" id="db1408b5f458ee625dark-L_B_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_B_D_0" data-points="W3sieCI6NDM4Ljc3MzQzNzUsInkiOjQ3fSx7IngiOjQ3Ni4yNjU2MjUsInkiOjQ3fSx7IngiOjUwNS4xODIzNzMwNDY4NzUsInkiOjYwfV0=" data-look="classic" marker-end="url(#db1408b5f458ee625dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M451.266,175L455.432,175C459.599,175,467.932,175,476.31,173.107C484.688,171.213,493.111,167.427,497.323,165.533L501.534,163.64" id="db1408b5f458ee625dark-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="W3sieCI6NDUxLjI2NTYyNSwieSI6MTc1fSx7IngiOjQ3Ni4yNjU2MjUsInkiOjE3NX0seyJ4Ijo1MDUuMTgyMzczMDQ2ODc1LCJ5IjoxNjJ9XQ==" data-look="classic" marker-end="url(#db1408b5f458ee625dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M732.068,60L736.887,57.833C741.707,55.667,751.345,51.333,759.665,49.167C767.984,47,774.984,47,778.484,47L781.984,47" id="db1408b5f458ee625dark-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="W3sieCI6NzMyLjA2NzYyNjk1MzEyNSwieSI6NjB9LHsieCI6NzYwLjk4NDM3NSwieSI6NDd9LHsieCI6Nzg1Ljk4NDM3NSwieSI6NDd9XQ==" data-look="classic" marker-end="url(#db1408b5f458ee625dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M732.068,162L736.887,164.167C741.707,166.333,751.345,170.667,760.085,172.833C768.826,175,776.667,175,780.587,175L784.508,175" id="db1408b5f458ee625dark-L_D_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_D_F_0" data-points="W3sieCI6NzMyLjA2NzYyNjk1MzEyNSwieSI6MTYyfSx7IngiOjc2MC45ODQzNzUsInkiOjE3NX0seyJ4Ijo3ODguNTA3ODEyNSwieSI6MTc1fV0=" data-look="classic" marker-end="url(#db1408b5f458ee625dark_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_A_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_B_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_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_D_F_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="db1408b5f458ee625dark-flowchart-A-0" data-look="classic" transform="translate(93.84375, 111)"&gt;&lt;rect class="basic label-container" style="" x="-85.84375" y="-39" width="171.6875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-55.84375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="111.6875" 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;conditionals-01&lt;br&gt;clean spec&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="db1408b5f458ee625dark-flowchart-B-1" data-look="classic" transform="translate(340.4765625, 47)"&gt;&lt;rect class="basic label-container" style="" x="-98.296875" y="-39" width="196.59375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-68.296875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="136.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;twin 1&lt;br&gt;+ zero-width chars&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="db1408b5f458ee625dark-flowchart-C-3" data-look="classic" transform="translate(340.4765625, 175)"&gt;&lt;rect class="basic label-container" style="" x="-110.7890625" y="-39" width="221.578125" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-80.7890625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="161.578125" 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;twin 2&lt;br&gt;+ look-alike letters too&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="db1408b5f458ee625dark-flowchart-D-5" data-look="classic" transform="translate(618.625, 111)"&gt;&lt;rect class="basic label-container" style="" x="-117.359375" y="-51" width="234.71875" height="102"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-87.359375, -36)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="174.71875" height="72"&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;audit&lt;br&gt;hidden tests unchanged&lt;br&gt;20 attempts each&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="db1408b5f458ee625dark-flowchart-E-9" data-look="classic" transform="translate(892.453125, 47)"&gt;&lt;rect class="basic label-container" style="" x="-106.46875" y="-39" width="212.9375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-76.46875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="152.9375" 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;scores 0.85 and 0.85&lt;br&gt;attack failed&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="db1408b5f458ee625dark-flowchart-F-11" data-look="classic" transform="translate(892.453125, 175)"&gt;&lt;rect class="basic label-container" style="" x="-103.9453125" y="-39" width="207.890625" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-73.9453125, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="147.890625" 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;construct check&lt;br&gt;flags both: not clean&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="db1408b5f458ee625dark-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="db1408b5f458ee625dark-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="db1408b5f458ee625dark-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;&#10;&lt;h2 class="relative group"&gt;The attack failed&#10; &lt;div id="the-attack-failed" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-attack-failed" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Problem&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Model&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;pass@1&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;construct clean&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;verdict&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;conditionals-01-obf&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;claude-haiku-4-5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0.85&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;False&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;AI-SOLVABLE&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;conditionals-01-obf-heavy&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;claude-haiku-4-5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0.85&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;False&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;AI-SOLVABLE&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Both copies passed at 0.85, slightly above the clean baseline&amp;rsquo;s 0.75 from an earlier run, which I read as ordinary run-to-run drift rather than obfuscation helping. Zero attempts were derailed by the invisible characters in any way I could detect. To be precise about the evidence base, because this is where sweeping claims get made: this is one problem, one model family, two obfuscation recipes, one summer. I am not writing &amp;ldquo;obfuscation cannot fool LLMs&amp;rdquo;. I am writing that these two attempts did not fool this model on these dates, and I did not find the result surprising after watching the same model shrug off paraphrases in both directions all month.&lt;/p&gt;&#10;&lt;p&gt;This is a negative result about the attack. I want to be straight about that. The experiment did not produce a defense, and I was not shopping for one.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The part that worked&#10; &lt;div id="the-part-that-worked" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-part-that-worked" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The tool runs four offline fairness checks on every problem, no model call involved: the skill must be declared, the entry point must appear in the spec and be exercised by the tests, the spec must be plain ASCII with no hidden characters, and the layout must be free of construct-irrelevant obstacles. The third check exists precisely for this attack. Both sabotaged twins came back &lt;code&gt;construct clean: False&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;That flag matters even though the attack failed. Suppose a future model, or a weaker one, had stumbled over the invisible characters and scored 0.10. Without the check, the tool would have printed AI-RESISTANT, and I would have concluded I owned a problem that tests a real skill. The low score would have been fake difficulty, manufactured by tampering that no human student would even experience, since the rendered text looks identical. The construct check is the thing standing between &amp;ldquo;the model lacks this skill&amp;rdquo; and &amp;ldquo;I vandalized the input encoding&amp;rdquo;. A safeguard, not a headline.&lt;/p&gt;&#10;&lt;p&gt;The vocabulary for this comes from measurement theory: construct-irrelevant variance, score movement caused by something other than the skill you claim to measure. Invisible Unicode in a spec is about as construct-irrelevant as variance gets.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The detector connection&#10; &lt;div id="the-detector-connection" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-detector-connection" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;There is a sibling arms race on the detection side, and the literature on it shaped how I read my own result. Weber-Wulff and colleagues tested fourteen AI text detectors and all fourteen were easy to fool, with the worst errors landing on writers whose first language is not English. Sadasivan and colleagues argue AI text detection cannot be made reliable at scale. I am careful with both claims: fourteen specific detectors, tested in 2023, and I do not extrapolate to detectors released since. But the shape rhymes with my experiment. Tricks aimed at machines tend to wash out against the machines while the collateral lands on humans, and as someone writing in a second language, the collateral pattern in that first study is not abstract to me.&lt;/p&gt;&#10;&lt;p&gt;So my conclusion sits deliberately small. Obfuscating specs did not lower model scores in my two attempts, and any pipeline that reports AI-resistance should check its inputs for tampering before believing its own numbers, because the day the trick does work is the day it silently poisons your metric.&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;Test the attack before trusting the defense. Two obfuscation recipes, twenty attempts each, zero effect on the score.&lt;/li&gt;&#10;&lt;li&gt;A fairness check earns its keep even when the attack fails. Its job is the counterfactual: the day a low score arrives, it tells you whether the difficulty is real.&lt;/li&gt;&#10;&lt;li&gt;Scope your negative results as tightly as your positive ones. One model family, one problem, two recipes. That is the whole claim.&lt;/li&gt;&#10;&lt;li&gt;Machine-versus-machine tricks have a track record of missing the machine and hitting people. Design assessments assuming the trick washes out.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Part 5 leaves the auditing tool and covers the other artifact of this project: a slide deck generator that steals its polish from the official university template, and the eight-inch hexagon gap it shipped with.&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/2306.15666" target="_blank" rel="noreferrer"&gt;Weber-Wulff et al. (2023), &amp;ldquo;Testing of Detection Tools for AI-Generated Text&amp;rdquo;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://arxiv.org/abs/2303.11156" target="_blank" rel="noreferrer"&gt;Sadasivan et al. (2023), &amp;ldquo;Can AI-Generated Text be Reliably Detected?&amp;rdquo;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://doi.org/10.1037/0003-066X.50.9.741" target="_blank" rel="noreferrer"&gt;Messick (1995), &amp;ldquo;Validity of Psychological Assessment&amp;rdquo;&lt;/a&gt; (construct-irrelevant variance)&lt;/li&gt;&#10;&lt;li&gt;Run data: cs1-auditor &lt;code&gt;.runs/*.json&lt;/code&gt;, pulled 2026-08-01&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</content:encoded></item><item><title>Cohen's kappa came back 0.00. The agreement was 6 out of 8.</title><link>https://nick-liu.com/posts/cohens-kappa-zero-agreement/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><author>nickboy@users.noreply.github.com (Nick Liu)</author><guid>https://nick-liu.com/posts/cohens-kappa-zero-agreement/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;I labelled eight CS1 problems blind, before looking at any output from my auditing tool. Then I compared my labels with the tool's verdicts. We agreed on 6 of 8. Then I computed Cohen's kappa, the standard chance-corrected agreement statistic, and it printed 0.00. Exactly zero, sitting next to a 75 percent raw agreement. My first thought was that my code was broken. It was not.&#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 3 of 5&lt;/span&gt;&#10; &lt;ol class="series-progress-dots"&gt;&lt;li class="series-progress-dot is-done"&gt;&#10; &lt;a href="https://nick-liu.com/posts/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-done"&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."&gt;2&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot is-current"&gt;&#10; &lt;a href="https://nick-liu.com/posts/cohens-kappa-zero-agreement/" title="Cohen&amp;#39;s kappa came back 0.00. The agreement was 6 out of 8." aria-current="step"&gt;3&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/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;&#10;&lt;h2 class="relative group"&gt;The setup&#10; &lt;div id="the-setup" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-setup" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;This was the human-agreement check for the tool from &lt;a href="https://nick-liu.com/posts/ai-resistant-cs1-problems/" &gt;part 1&lt;/a&gt;. The tool labels each problem AI-solvable or AI-resistant. For the check to mean anything, my own labels had to be committed before I saw the tool&amp;rsquo;s, so I wrote them down blind, sealed against hindsight. Eight problems, two raters: me and the tool.&lt;/p&gt;</description><content:encoded>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;I labelled eight CS1 problems blind, before looking at any output from my auditing tool. Then I compared my labels with the tool's verdicts. We agreed on 6 of 8. Then I computed Cohen's kappa, the standard chance-corrected agreement statistic, and it printed 0.00. Exactly zero, sitting next to a 75 percent raw agreement. My first thought was that my code was broken. It was not.&#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 3 of 5&lt;/span&gt;&#10; &lt;ol class="series-progress-dots"&gt;&lt;li class="series-progress-dot is-done"&gt;&#10; &lt;a href="https://nick-liu.com/posts/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-done"&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."&gt;2&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot is-current"&gt;&#10; &lt;a href="https://nick-liu.com/posts/cohens-kappa-zero-agreement/" title="Cohen&amp;#39;s kappa came back 0.00. The agreement was 6 out of 8." aria-current="step"&gt;3&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/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;&#10;&lt;h2 class="relative group"&gt;The setup&#10; &lt;div id="the-setup" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-setup" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;This was the human-agreement check for the tool from &lt;a href="https://nick-liu.com/posts/ai-resistant-cs1-problems/" &gt;part 1&lt;/a&gt;. The tool labels each problem AI-solvable or AI-resistant. For the check to mean anything, my own labels had to be committed before I saw the tool&amp;rsquo;s, so I wrote them down blind, sealed against hindsight. Eight problems, two raters: me and the tool.&lt;/p&gt;&#10;&lt;p&gt;Raw agreement 6 of 8. For a first calibration pass on a small set, that felt fine. Kappa exists because raw agreement flatters you: two raters who both say &amp;ldquo;solvable&amp;rdquo; almost every time will agree often by luck alone, so kappa subtracts the agreement you would expect from chance. I expected it to shave 0.75 down to something modest. I did not expect it to shave 0.75 down to nothing.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Chasing the zero&#10; &lt;div id="chasing-the-zero" 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="#chasing-the-zero" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The suspect list, in the order I worked through it: my kappa implementation, the label encoding, the library convention for two-category data. All innocent. The arithmetic is short enough to do on paper, and doing it on paper is what ended the confusion.&lt;/p&gt;&#10;&lt;p&gt;Over the eight problems, the tool produced one label. Every verdict was the same. The strong model solved everything it touched, so nothing crossed the resistance threshold, so the tool said &amp;ldquo;solvable&amp;rdquo; eight times. My blind labels said &amp;ldquo;solvable&amp;rdquo; six times and &amp;ldquo;resistant&amp;rdquo; twice. Observed agreement: 6 of 8, which is 0.75.&lt;/p&gt;&#10;&lt;p&gt;Now the chance correction. Expected agreement multiplies the raters&amp;rsquo; label frequencies. The tool says &amp;ldquo;solvable&amp;rdquo; with probability 1.0. I say it with probability 0.75. So the chance of agreeing on &amp;ldquo;solvable&amp;rdquo; is 0.75, and the chance of agreeing on &amp;ldquo;resistant&amp;rdquo; is zero times something, which is zero. Expected agreement: 0.75.&lt;/p&gt;&#10;&lt;p&gt;Kappa is observed minus expected over one minus expected. That is (0.75 - 0.75) / (1 - 0.75). Zero, by construction, and not a rounding artifact. When one rater has no variance, every bit of observed agreement is exactly what chance predicts, and the correction consumes the entire signal. Kappa is not measuring how often we agreed. It is measuring how much better than chance we agreed, and against a constant rater, nobody can beat chance.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The step that made me believe it&#10; &lt;div id="the-step-that-made-me-believe-it" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-step-that-made-me-believe-it" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;I did not trust the explanation until I attacked it with synthetic labels. I generated fake rater pairs where one rater was constant and the other varied, swept the disagreement count, and watched kappa pin to zero every time regardless of raw agreement. Then I gave the constant rater a single deviant label and watched kappa jump to a nonzero value. The statistic was behaving exactly as defined. My data was the degenerate case, not my code.&lt;/p&gt;&#10;&lt;div class="not-prose diagram diagram-light"&gt;&lt;svg id="d3fcb23bc0c269630light" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 775.58203125px;" viewBox="0 0 775.58203125 759.859375" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#d3fcb23bc0c269630light{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;}}#d3fcb23bc0c269630light .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#d3fcb23bc0c269630light .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#d3fcb23bc0c269630light .error-icon{fill:rgb(255, 255, 255);}#d3fcb23bc0c269630light .error-text{fill:#000000;stroke:#000000;}#d3fcb23bc0c269630light .edge-thickness-normal{stroke-width:1px;}#d3fcb23bc0c269630light .edge-thickness-thick{stroke-width:3.5px;}#d3fcb23bc0c269630light .edge-pattern-solid{stroke-dasharray:0;}#d3fcb23bc0c269630light .edge-thickness-invisible{stroke-width:0;fill:none;}#d3fcb23bc0c269630light .edge-pattern-dashed{stroke-dasharray:3;}#d3fcb23bc0c269630light .edge-pattern-dotted{stroke-dasharray:2;}#d3fcb23bc0c269630light .marker{fill:rgb(74, 86, 92);stroke:rgb(74, 86, 92);}#d3fcb23bc0c269630light .marker.cross{stroke:rgb(74, 86, 92);}#d3fcb23bc0c269630light svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#d3fcb23bc0c269630light p{margin:0;}#d3fcb23bc0c269630light .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#333;}#d3fcb23bc0c269630light .cluster-label text{fill:#000000;}#d3fcb23bc0c269630light .cluster-label span{color:#000000;}#d3fcb23bc0c269630light .cluster-label span p{background-color:transparent;}#d3fcb23bc0c269630light .label text,#d3fcb23bc0c269630light span{fill:#333;color:#333;}#d3fcb23bc0c269630light .node rect,#d3fcb23bc0c269630light .node circle,#d3fcb23bc0c269630light .node ellipse,#d3fcb23bc0c269630light .node polygon,#d3fcb23bc0c269630light .node path{fill:rgb(255, 255, 255);stroke:rgb(204, 216, 222);stroke-width:1px;}#d3fcb23bc0c269630light .rough-node .label text,#d3fcb23bc0c269630light .node .label text,#d3fcb23bc0c269630light .image-shape .label,#d3fcb23bc0c269630light .icon-shape .label{text-anchor:middle;}#d3fcb23bc0c269630light .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#d3fcb23bc0c269630light .rough-node .label,#d3fcb23bc0c269630light .node .label,#d3fcb23bc0c269630light .image-shape .label,#d3fcb23bc0c269630light .icon-shape .label{text-align:center;}#d3fcb23bc0c269630light .node.clickable{cursor:pointer;}#d3fcb23bc0c269630light .root .anchor path{fill:rgb(74, 86, 92)!important;stroke-width:0;stroke:rgb(74, 86, 92);}#d3fcb23bc0c269630light .arrowheadPath{fill:#000000;}#d3fcb23bc0c269630light .edgePath .path{stroke:rgb(74, 86, 92);stroke-width:1px;}#d3fcb23bc0c269630light .flowchart-link{stroke:rgb(74, 86, 92);fill:none;}#d3fcb23bc0c269630light .edgeLabel{background-color:rgb(182, 240, 255);text-align:center;}#d3fcb23bc0c269630light .edgeLabel p{background-color:rgb(182, 240, 255);}#d3fcb23bc0c269630light .edgeLabel rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#d3fcb23bc0c269630light .labelBkg{background-color:rgba(182, 240, 255, 0.5);}#d3fcb23bc0c269630light .cluster rect{fill:rgb(255, 255, 255);stroke:rgb(129, 146, 154);stroke-width:1px;}#d3fcb23bc0c269630light .cluster text{fill:#000000;}#d3fcb23bc0c269630light .cluster span{color:#000000;}#d3fcb23bc0c269630light 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;}#d3fcb23bc0c269630light .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#d3fcb23bc0c269630light rect.text{fill:none;stroke-width:0;}#d3fcb23bc0c269630light .icon-shape,#d3fcb23bc0c269630light .image-shape{background-color:rgb(182, 240, 255);text-align:center;}#d3fcb23bc0c269630light .icon-shape p,#d3fcb23bc0c269630light .image-shape p{background-color:rgb(182, 240, 255);padding:2px;}#d3fcb23bc0c269630light .icon-shape .label rect,#d3fcb23bc0c269630light .image-shape .label rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#d3fcb23bc0c269630light .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#d3fcb23bc0c269630light .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#d3fcb23bc0c269630light .node .neo-node{stroke:rgb(204, 216, 222);}#d3fcb23bc0c269630light [data-look="neo"].node rect,#d3fcb23bc0c269630light [data-look="neo"].cluster rect,#d3fcb23bc0c269630light [data-look="neo"].node polygon{stroke:url(#d3fcb23bc0c269630light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d3fcb23bc0c269630light [data-look="neo"].swimlane.cluster rect{filter:none;}#d3fcb23bc0c269630light [data-look="neo"].node path{stroke:url(#d3fcb23bc0c269630light-gradient);stroke-width:1px;}#d3fcb23bc0c269630light [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d3fcb23bc0c269630light [data-look="neo"].node .neo-line path{stroke:rgb(204, 216, 222);filter:none;}#d3fcb23bc0c269630light [data-look="neo"].node circle{stroke:url(#d3fcb23bc0c269630light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d3fcb23bc0c269630light [data-look="neo"].node circle .state-start{fill:#000000;}#d3fcb23bc0c269630light [data-look="neo"].icon-shape .icon{fill:url(#d3fcb23bc0c269630light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d3fcb23bc0c269630light [data-look="neo"].icon-shape .icon-neo path{stroke:url(#d3fcb23bc0c269630light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d3fcb23bc0c269630light :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="d3fcb23bc0c269630light_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="d3fcb23bc0c269630light_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="d3fcb23bc0c269630light_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="d3fcb23bc0c269630light_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="d3fcb23bc0c269630light_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="d3fcb23bc0c269630light_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="d3fcb23bc0c269630light_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="d3fcb23bc0c269630light_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="d3fcb23bc0c269630light_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="d3fcb23bc0c269630light_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="d3fcb23bc0c269630light_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="d3fcb23bc0c269630light_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="M315.82,110L315.82,114.167C315.82,118.333,315.82,126.667,315.82,134.333C315.82,142,315.82,149,315.82,152.5L315.82,156" id="d3fcb23bc0c269630light-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="W3sieCI6MzE1LjgyMDMxMjUsInkiOjExMH0seyJ4IjozMTUuODIwMzEyNSwieSI6MTM1fSx7IngiOjMxNS44MjAzMTI1LCJ5IjoxNjB9XQ==" data-look="classic" marker-end="url(#d3fcb23bc0c269630light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M257.689,285.728L230.419,301.583C203.15,317.439,148.61,349.149,121.34,372.504C94.07,395.859,94.07,410.859,94.07,418.359L94.07,425.859" id="d3fcb23bc0c269630light-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="W3sieCI6MjU3LjY4OTE3NzY1MDI2NjIzLCJ5IjoyODUuNzI4MjQwMTUwMjY2MjN9LHsieCI6OTQuMDcwMzEyNSwieSI6MzgwLjg1OTM3NX0seyJ4Ijo5NC4wNzAzMTI1LCJ5Ijo0MjkuODU5Mzc1fV0=" data-look="classic" marker-end="url(#d3fcb23bc0c269630light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M315.82,343.859L315.82,350.026C315.82,356.193,315.82,368.526,315.82,382.193C315.82,395.859,315.82,410.859,315.82,418.359L315.82,425.859" id="d3fcb23bc0c269630light-L_B_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_B_D_0" data-points="W3sieCI6MzE1LjgyMDMxMjUsInkiOjM0My44NTkzNzV9LHsieCI6MzE1LjgyMDMxMjUsInkiOjM4MC44NTkzNzV9LHsieCI6MzE1LjgyMDMxMjUsInkiOjQyOS44NTkzNzV9XQ==" data-look="classic" marker-end="url(#d3fcb23bc0c269630light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M374.927,284.753L403.771,300.771C432.615,316.788,490.304,348.824,519.148,370.342C547.992,391.859,547.992,402.859,547.992,408.359L547.992,413.859" id="d3fcb23bc0c269630light-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="W3sieCI6Mzc0LjkyNjkxODg3MjEwMzYsInkiOjI4NC43NTI3Njg2Mjc4OTY0fSx7IngiOjU0Ny45OTIxODc1LCJ5IjozODAuODU5Mzc1fSx7IngiOjU0Ny45OTIxODc1LCJ5Ijo0MTcuODU5Mzc1fV0=" data-look="classic" marker-end="url(#d3fcb23bc0c269630light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M471.266,495.859L463.068,500.026C454.871,504.193,438.477,512.526,430.279,520.193C422.082,527.859,422.082,534.859,422.082,538.359L422.082,541.859" id="d3fcb23bc0c269630light-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="W3sieCI6NDcxLjI2NTY4NjAzNTE1NjI1LCJ5Ijo0OTUuODU5Mzc1fSx7IngiOjQyMi4wODIwMzEyNSwieSI6NTIwLjg1OTM3NX0seyJ4Ijo0MjIuMDgyMDMxMjUsInkiOjU0NS44NTkzNzV9XQ==" data-look="classic" marker-end="url(#d3fcb23bc0c269630light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M624.719,495.859L632.916,500.026C641.113,504.193,657.508,512.526,665.705,520.193C673.902,527.859,673.902,534.859,673.902,538.359L673.902,541.859" id="d3fcb23bc0c269630light-L_E_G_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_G_0" data-points="W3sieCI6NjI0LjcxODY4ODk2NDg0MzgsInkiOjQ5NS44NTkzNzV9LHsieCI6NjczLjkwMjM0Mzc1LCJ5Ijo1MjAuODU5Mzc1fSx7IngiOjY3My45MDIzNDM3NSwieSI6NTQ1Ljg1OTM3NX1d" data-look="classic" marker-end="url(#d3fcb23bc0c269630light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M422.082,623.859L422.082,628.026C422.082,632.193,422.082,640.526,429.685,648.557C437.288,656.589,452.494,664.318,460.097,668.182L467.7,672.047" id="d3fcb23bc0c269630light-L_F_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_F_H_0" data-points="W3sieCI6NDIyLjA4MjAzMTI1LCJ5Ijo2MjMuODU5Mzc1fSx7IngiOjQyMi4wODIwMzEyNSwieSI6NjQ4Ljg1OTM3NX0seyJ4Ijo0NzEuMjY1Njg2MDM1MTU2MjUsInkiOjY3My44NTkzNzV9XQ==" data-look="classic" marker-end="url(#d3fcb23bc0c269630light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M673.902,623.859L673.902,628.026C673.902,632.193,673.902,640.526,666.299,648.557C658.696,656.589,643.49,664.318,635.887,668.182L628.284,672.047" id="d3fcb23bc0c269630light-L_G_H_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_G_H_0" data-points="W3sieCI6NjczLjkwMjM0Mzc1LCJ5Ijo2MjMuODU5Mzc1fSx7IngiOjY3My45MDIzNDM3NSwieSI6NjQ4Ljg1OTM3NX0seyJ4Ijo2MjQuNzE4Njg4OTY0ODQzOCwieSI6NjczLjg1OTM3NX1d" data-look="classic" marker-end="url(#d3fcb23bc0c269630light_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(94.0703125, 380.859375)"&gt;&lt;g class="label" data-id="L_B_C_0" transform="translate(-76.7578125, -12)"&gt;&lt;foreignObject width="153.515625" 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;the number is broken&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(315.8203125, 380.859375)"&gt;&lt;g class="label" data-id="L_B_D_0" transform="translate(-84.7265625, -12)"&gt;&lt;foreignObject width="169.453125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;the number is profound&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(547.9921875, 380.859375)"&gt;&lt;g class="label" data-id="L_B_E_0" transform="translate(-50.1796875, -12)"&gt;&lt;foreignObject width="100.359375" 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;neither: test it&lt;/p&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_E_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_F_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 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="d3fcb23bc0c269630light-flowchart-A-0" data-look="classic" transform="translate(315.8203125, 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;statistic looks impossible&lt;br&gt;kappa 0.00, agreement 75%&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630light-flowchart-B-1" data-look="classic" transform="translate(315.8203125, 251.9296875)"&gt;&lt;polygon points="91.9296875,0 183.859375,-91.9296875 91.9296875,-183.859375 0,-91.9296875" class="label-container" transform="translate(-91.4296875, 91.9296875)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-64.9296875, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="129.859375" 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;tempting shortcut&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630light-flowchart-C-3" data-look="classic" transform="translate(94.0703125, 456.859375)"&gt;&lt;rect class="basic label-container" style="" x="-86.0703125" y="-27" width="172.140625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-56.0703125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="112.140625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;blame the code&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630light-flowchart-D-5" data-look="classic" transform="translate(315.8203125, 456.859375)"&gt;&lt;rect class="basic label-container" style="" x="-85.6796875" y="-27" width="171.359375" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-55.6796875, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="111.359375" 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;write a hot take&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630light-flowchart-E-7" data-look="classic" transform="translate(547.9921875, 456.859375)"&gt;&lt;rect class="basic label-container" style="" x="-96.4921875" y="-39" width="192.984375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-66.4921875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="132.984375" 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;synthetic labels,&lt;br&gt;one constant rater&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630light-flowchart-F-9" data-look="classic" transform="translate(422.08203125, 584.859375)"&gt;&lt;rect class="basic label-container" style="" x="-108.140625" y="-39" width="216.28125" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-78.140625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="156.28125" 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;kappa pins to 0.00&lt;br&gt;at any raw agreement&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630light-flowchart-G-11" data-look="classic" transform="translate(673.90234375, 584.859375)"&gt;&lt;rect class="basic label-container" style="" x="-93.6796875" y="-39" width="187.359375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-63.6796875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="127.359375" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;one deviant label:&lt;br&gt;kappa moves&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630light-flowchart-H-13" data-look="classic" transform="translate(547.9921875, 712.859375)"&gt;&lt;rect class="basic label-container" style="" x="-119.5859375" y="-39" width="239.171875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-89.5859375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="179.171875" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;the zero is correct;&lt;br&gt;the design is degenerate&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="d3fcb23bc0c269630light-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="d3fcb23bc0c269630light-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="d3fcb23bc0c269630light-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="d3fcb23bc0c269630dark" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 775.58203125px;" viewBox="0 0 775.58203125 759.859375" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#d3fcb23bc0c269630dark{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;}}#d3fcb23bc0c269630dark .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#d3fcb23bc0c269630dark .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#d3fcb23bc0c269630dark .error-icon{fill:#a44141;}#d3fcb23bc0c269630dark .error-text{fill:#ddd;stroke:#ddd;}#d3fcb23bc0c269630dark .edge-thickness-normal{stroke-width:1px;}#d3fcb23bc0c269630dark .edge-thickness-thick{stroke-width:3.5px;}#d3fcb23bc0c269630dark .edge-pattern-solid{stroke-dasharray:0;}#d3fcb23bc0c269630dark .edge-thickness-invisible{stroke-width:0;fill:none;}#d3fcb23bc0c269630dark .edge-pattern-dashed{stroke-dasharray:3;}#d3fcb23bc0c269630dark .edge-pattern-dotted{stroke-dasharray:2;}#d3fcb23bc0c269630dark .marker{fill:lightgrey;stroke:lightgrey;}#d3fcb23bc0c269630dark .marker.cross{stroke:lightgrey;}#d3fcb23bc0c269630dark svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#d3fcb23bc0c269630dark p{margin:0;}#d3fcb23bc0c269630dark .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#ccc;}#d3fcb23bc0c269630dark .cluster-label text{fill:#F9FFFE;}#d3fcb23bc0c269630dark .cluster-label span{color:#F9FFFE;}#d3fcb23bc0c269630dark .cluster-label span p{background-color:transparent;}#d3fcb23bc0c269630dark .label text,#d3fcb23bc0c269630dark span{fill:#ccc;color:#ccc;}#d3fcb23bc0c269630dark .node rect,#d3fcb23bc0c269630dark .node circle,#d3fcb23bc0c269630dark .node ellipse,#d3fcb23bc0c269630dark .node polygon,#d3fcb23bc0c269630dark .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#d3fcb23bc0c269630dark .rough-node .label text,#d3fcb23bc0c269630dark .node .label text,#d3fcb23bc0c269630dark .image-shape .label,#d3fcb23bc0c269630dark .icon-shape .label{text-anchor:middle;}#d3fcb23bc0c269630dark .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#d3fcb23bc0c269630dark .rough-node .label,#d3fcb23bc0c269630dark .node .label,#d3fcb23bc0c269630dark .image-shape .label,#d3fcb23bc0c269630dark .icon-shape .label{text-align:center;}#d3fcb23bc0c269630dark .node.clickable{cursor:pointer;}#d3fcb23bc0c269630dark .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#d3fcb23bc0c269630dark .arrowheadPath{fill:lightgrey;}#d3fcb23bc0c269630dark .edgePath .path{stroke:lightgrey;stroke-width:1px;}#d3fcb23bc0c269630dark .flowchart-link{stroke:lightgrey;fill:none;}#d3fcb23bc0c269630dark .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#d3fcb23bc0c269630dark .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#d3fcb23bc0c269630dark .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#d3fcb23bc0c269630dark .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#d3fcb23bc0c269630dark .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#d3fcb23bc0c269630dark .cluster text{fill:#F9FFFE;}#d3fcb23bc0c269630dark .cluster span{color:#F9FFFE;}#d3fcb23bc0c269630dark 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;}#d3fcb23bc0c269630dark .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#d3fcb23bc0c269630dark rect.text{fill:none;stroke-width:0;}#d3fcb23bc0c269630dark .icon-shape,#d3fcb23bc0c269630dark .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#d3fcb23bc0c269630dark .icon-shape p,#d3fcb23bc0c269630dark .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#d3fcb23bc0c269630dark .icon-shape .label rect,#d3fcb23bc0c269630dark .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#d3fcb23bc0c269630dark .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#d3fcb23bc0c269630dark .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#d3fcb23bc0c269630dark .node .neo-node{stroke:#ccc;}#d3fcb23bc0c269630dark [data-look="neo"].node rect,#d3fcb23bc0c269630dark [data-look="neo"].cluster rect,#d3fcb23bc0c269630dark [data-look="neo"].node polygon{stroke:url(#d3fcb23bc0c269630dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d3fcb23bc0c269630dark [data-look="neo"].swimlane.cluster rect{filter:none;}#d3fcb23bc0c269630dark [data-look="neo"].node path{stroke:url(#d3fcb23bc0c269630dark-gradient);stroke-width:1px;}#d3fcb23bc0c269630dark [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d3fcb23bc0c269630dark [data-look="neo"].node .neo-line path{stroke:#ccc;filter:none;}#d3fcb23bc0c269630dark [data-look="neo"].node circle{stroke:url(#d3fcb23bc0c269630dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d3fcb23bc0c269630dark [data-look="neo"].node circle .state-start{fill:#000000;}#d3fcb23bc0c269630dark [data-look="neo"].icon-shape .icon{fill:url(#d3fcb23bc0c269630dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d3fcb23bc0c269630dark [data-look="neo"].icon-shape .icon-neo path{stroke:url(#d3fcb23bc0c269630dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d3fcb23bc0c269630dark :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="d3fcb23bc0c269630dark_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="d3fcb23bc0c269630dark_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="d3fcb23bc0c269630dark_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="d3fcb23bc0c269630dark_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="d3fcb23bc0c269630dark_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="d3fcb23bc0c269630dark_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="d3fcb23bc0c269630dark_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="d3fcb23bc0c269630dark_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="d3fcb23bc0c269630dark_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="d3fcb23bc0c269630dark_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="d3fcb23bc0c269630dark_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="d3fcb23bc0c269630dark_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="M315.82,110L315.82,114.167C315.82,118.333,315.82,126.667,315.82,134.333C315.82,142,315.82,149,315.82,152.5L315.82,156" id="d3fcb23bc0c269630dark-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="W3sieCI6MzE1LjgyMDMxMjUsInkiOjExMH0seyJ4IjozMTUuODIwMzEyNSwieSI6MTM1fSx7IngiOjMxNS44MjAzMTI1LCJ5IjoxNjB9XQ==" data-look="classic" marker-end="url(#d3fcb23bc0c269630dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M257.689,285.728L230.419,301.583C203.15,317.439,148.61,349.149,121.34,372.504C94.07,395.859,94.07,410.859,94.07,418.359L94.07,425.859" id="d3fcb23bc0c269630dark-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="W3sieCI6MjU3LjY4OTE3NzY1MDI2NjIzLCJ5IjoyODUuNzI4MjQwMTUwMjY2MjN9LHsieCI6OTQuMDcwMzEyNSwieSI6MzgwLjg1OTM3NX0seyJ4Ijo5NC4wNzAzMTI1LCJ5Ijo0MjkuODU5Mzc1fV0=" data-look="classic" marker-end="url(#d3fcb23bc0c269630dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M315.82,343.859L315.82,350.026C315.82,356.193,315.82,368.526,315.82,382.193C315.82,395.859,315.82,410.859,315.82,418.359L315.82,425.859" id="d3fcb23bc0c269630dark-L_B_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_B_D_0" data-points="W3sieCI6MzE1LjgyMDMxMjUsInkiOjM0My44NTkzNzV9LHsieCI6MzE1LjgyMDMxMjUsInkiOjM4MC44NTkzNzV9LHsieCI6MzE1LjgyMDMxMjUsInkiOjQyOS44NTkzNzV9XQ==" data-look="classic" marker-end="url(#d3fcb23bc0c269630dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M374.927,284.753L403.771,300.771C432.615,316.788,490.304,348.824,519.148,370.342C547.992,391.859,547.992,402.859,547.992,408.359L547.992,413.859" id="d3fcb23bc0c269630dark-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="W3sieCI6Mzc0LjkyNjkxODg3MjEwMzYsInkiOjI4NC43NTI3Njg2Mjc4OTY0fSx7IngiOjU0Ny45OTIxODc1LCJ5IjozODAuODU5Mzc1fSx7IngiOjU0Ny45OTIxODc1LCJ5Ijo0MTcuODU5Mzc1fV0=" data-look="classic" marker-end="url(#d3fcb23bc0c269630dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M471.266,495.859L463.068,500.026C454.871,504.193,438.477,512.526,430.279,520.193C422.082,527.859,422.082,534.859,422.082,538.359L422.082,541.859" id="d3fcb23bc0c269630dark-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="W3sieCI6NDcxLjI2NTY4NjAzNTE1NjI1LCJ5Ijo0OTUuODU5Mzc1fSx7IngiOjQyMi4wODIwMzEyNSwieSI6NTIwLjg1OTM3NX0seyJ4Ijo0MjIuMDgyMDMxMjUsInkiOjU0NS44NTkzNzV9XQ==" data-look="classic" marker-end="url(#d3fcb23bc0c269630dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M624.719,495.859L632.916,500.026C641.113,504.193,657.508,512.526,665.705,520.193C673.902,527.859,673.902,534.859,673.902,538.359L673.902,541.859" id="d3fcb23bc0c269630dark-L_E_G_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_G_0" data-points="W3sieCI6NjI0LjcxODY4ODk2NDg0MzgsInkiOjQ5NS44NTkzNzV9LHsieCI6NjczLjkwMjM0Mzc1LCJ5Ijo1MjAuODU5Mzc1fSx7IngiOjY3My45MDIzNDM3NSwieSI6NTQ1Ljg1OTM3NX1d" data-look="classic" marker-end="url(#d3fcb23bc0c269630dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M422.082,623.859L422.082,628.026C422.082,632.193,422.082,640.526,429.685,648.557C437.288,656.589,452.494,664.318,460.097,668.182L467.7,672.047" id="d3fcb23bc0c269630dark-L_F_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_F_H_0" data-points="W3sieCI6NDIyLjA4MjAzMTI1LCJ5Ijo2MjMuODU5Mzc1fSx7IngiOjQyMi4wODIwMzEyNSwieSI6NjQ4Ljg1OTM3NX0seyJ4Ijo0NzEuMjY1Njg2MDM1MTU2MjUsInkiOjY3My44NTkzNzV9XQ==" data-look="classic" marker-end="url(#d3fcb23bc0c269630dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M673.902,623.859L673.902,628.026C673.902,632.193,673.902,640.526,666.299,648.557C658.696,656.589,643.49,664.318,635.887,668.182L628.284,672.047" id="d3fcb23bc0c269630dark-L_G_H_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_G_H_0" data-points="W3sieCI6NjczLjkwMjM0Mzc1LCJ5Ijo2MjMuODU5Mzc1fSx7IngiOjY3My45MDIzNDM3NSwieSI6NjQ4Ljg1OTM3NX0seyJ4Ijo2MjQuNzE4Njg4OTY0ODQzOCwieSI6NjczLjg1OTM3NX1d" data-look="classic" marker-end="url(#d3fcb23bc0c269630dark_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(94.0703125, 380.859375)"&gt;&lt;g class="label" data-id="L_B_C_0" transform="translate(-76.7578125, -12)"&gt;&lt;foreignObject width="153.515625" 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;the number is broken&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(315.8203125, 380.859375)"&gt;&lt;g class="label" data-id="L_B_D_0" transform="translate(-84.7265625, -12)"&gt;&lt;foreignObject width="169.453125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;the number is profound&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(547.9921875, 380.859375)"&gt;&lt;g class="label" data-id="L_B_E_0" transform="translate(-50.1796875, -12)"&gt;&lt;foreignObject width="100.359375" 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;neither: test it&lt;/p&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_E_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_F_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 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="d3fcb23bc0c269630dark-flowchart-A-0" data-look="classic" transform="translate(315.8203125, 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;statistic looks impossible&lt;br&gt;kappa 0.00, agreement 75%&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630dark-flowchart-B-1" data-look="classic" transform="translate(315.8203125, 251.9296875)"&gt;&lt;polygon points="91.9296875,0 183.859375,-91.9296875 91.9296875,-183.859375 0,-91.9296875" class="label-container" transform="translate(-91.4296875, 91.9296875)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-64.9296875, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="129.859375" 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;tempting shortcut&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630dark-flowchart-C-3" data-look="classic" transform="translate(94.0703125, 456.859375)"&gt;&lt;rect class="basic label-container" style="" x="-86.0703125" y="-27" width="172.140625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-56.0703125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="112.140625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;blame the code&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630dark-flowchart-D-5" data-look="classic" transform="translate(315.8203125, 456.859375)"&gt;&lt;rect class="basic label-container" style="" x="-85.6796875" y="-27" width="171.359375" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-55.6796875, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="111.359375" 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;write a hot take&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630dark-flowchart-E-7" data-look="classic" transform="translate(547.9921875, 456.859375)"&gt;&lt;rect class="basic label-container" style="" x="-96.4921875" y="-39" width="192.984375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-66.4921875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="132.984375" 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;synthetic labels,&lt;br&gt;one constant rater&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630dark-flowchart-F-9" data-look="classic" transform="translate(422.08203125, 584.859375)"&gt;&lt;rect class="basic label-container" style="" x="-108.140625" y="-39" width="216.28125" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-78.140625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="156.28125" 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;kappa pins to 0.00&lt;br&gt;at any raw agreement&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630dark-flowchart-G-11" data-look="classic" transform="translate(673.90234375, 584.859375)"&gt;&lt;rect class="basic label-container" style="" x="-93.6796875" y="-39" width="187.359375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-63.6796875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="127.359375" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;one deviant label:&lt;br&gt;kappa moves&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d3fcb23bc0c269630dark-flowchart-H-13" data-look="classic" transform="translate(547.9921875, 712.859375)"&gt;&lt;rect class="basic label-container" style="" x="-119.5859375" y="-39" width="239.171875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-89.5859375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="179.171875" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;the zero is correct;&lt;br&gt;the design is degenerate&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="d3fcb23bc0c269630dark-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="d3fcb23bc0c269630dark-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="d3fcb23bc0c269630dark-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;If I had to keep one paragraph from this post, it would be that one. The temptation with a surprising statistic is to pick between two stories: &amp;ldquo;the number is broken&amp;rdquo; or &amp;ldquo;the number is profound&amp;rdquo;. Both are cheap. The third option costs an hour with synthetic data and tells you which world you are in. In my case the zero was neither broken nor profound. It was the statistic saying: this validation design cannot distinguish your tool from a coin that always lands heads, because on this problem set the tool never did anything else.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;What the zero told me to do&#10; &lt;div id="what-the-zero-told-me-to-do" 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-the-zero-told-me-to-do" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;A useless kappa on this set does not mean the agreement check was worthless. It means the set was wrong for the question. Every problem the strong model touched, it solved, which is itself the headline finding of the whole project. But it leaves the agreement study with no variance to correlate. The fix is structural: the set needed problems where the tool&amp;rsquo;s verdict varies, and by the end of the summer I had evidence those barely exist within CS1.&lt;/p&gt;&#10;&lt;p&gt;And the honest limit, stated in the body and not in a footnote: the second rater was me, and I built the tool. This was a self-check, useful for catching gross disagreement between my intuition and my own machinery. It is not external validation, and I do not present it as such. One rater, one vendor, one summer.&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;Kappa of 0.00 with high raw agreement is not a paradox. It means at least one rater never varied, and chance explains everything you observed.&lt;/li&gt;&#10;&lt;li&gt;Before calling a surprising statistic broken or profound, spend the hour on synthetic data. Degenerate inputs produce exotic outputs from perfectly correct code.&lt;/li&gt;&#10;&lt;li&gt;An agreement study needs variance in both raters. If your tool gives one answer on the whole set, you have learned something about the set, not about agreement.&lt;/li&gt;&#10;&lt;li&gt;Self-checks catch self-delusion. They do not substitute for a second human rater, and writing that sentence in the report is cheaper than having a reviewer write it for you.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Part 4 puts the fairness checks under adversarial pressure: I hid zero-width characters inside a problem spec and measured whether any model flinched.&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://doi.org/10.1177/001316446002000104" target="_blank" rel="noreferrer"&gt;Cohen (1960), &amp;ldquo;A Coefficient of Agreement for Nominal Scales&amp;rdquo;&lt;/a&gt; (the kappa definition used here)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://doi.org/10.1037/0003-066X.50.9.741" target="_blank" rel="noreferrer"&gt;Messick (1995), &amp;ldquo;Validity of Psychological Assessment&amp;rdquo;&lt;/a&gt; (the validity framework this check belongs to)&lt;/li&gt;&#10;&lt;li&gt;Run data: cs1-auditor &lt;code&gt;.runs/*.json&lt;/code&gt;, pulled 2026-08-01&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><item><title>I went looking for AI-resistant CS1 problems. The search came up empty.</title><link>https://nick-liu.com/posts/ai-resistant-cs1-problems/</link><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><author>nickboy@users.noreply.github.com (Nick Liu)</author><guid>https://nick-liu.com/posts/ai-resistant-cs1-problems/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;For six weeks this summer I hunted for a CS1 programming problem that an AI model could not solve. I found exactly one candidate. It scored 0.00 against the weaker model, the stronger model solved it, and my fairness checks came back clean. Then I reworded the problem statement in plain English, changed nothing about the hidden tests, and the resistance evaporated.&#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 1 of 5&lt;/span&gt;&#10; &lt;ol class="series-progress-dots"&gt;&lt;li class="series-progress-dot is-current"&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." aria-current="step"&gt;1&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&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."&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;&#10;&lt;h2 class="relative group"&gt;What I was measuring&#10; &lt;div id="what-i-was-measuring" 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-i-was-measuring" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The tool is called cs1-auditor. It is a Python command-line tool that audits how solvable one CS1 problem is for a named model. You point it at a problem folder holding a plain-English spec, a hidden test suite, and a reference solution. It samples N candidate solutions from the model, runs each one in a sandbox against the hidden tests, and reports two things. The first is an AI-solvability score, which is pass@k for that model on that date. The second is a construct check, which asks whether any resistance comes from a real skill or from a trick in the wording. A problem only earns the label AI-resistant when the score is below a threshold and the construct check is clean.&lt;/p&gt;</description><content:encoded>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;For six weeks this summer I hunted for a CS1 programming problem that an AI model could not solve. I found exactly one candidate. It scored 0.00 against the weaker model, the stronger model solved it, and my fairness checks came back clean. Then I reworded the problem statement in plain English, changed nothing about the hidden tests, and the resistance evaporated.&#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 1 of 5&lt;/span&gt;&#10; &lt;ol class="series-progress-dots"&gt;&lt;li class="series-progress-dot is-current"&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." aria-current="step"&gt;1&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&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."&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;&#10;&lt;h2 class="relative group"&gt;What I was measuring&#10; &lt;div id="what-i-was-measuring" 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-i-was-measuring" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The tool is called cs1-auditor. It is a Python command-line tool that audits how solvable one CS1 problem is for a named model. You point it at a problem folder holding a plain-English spec, a hidden test suite, and a reference solution. It samples N candidate solutions from the model, runs each one in a sandbox against the hidden tests, and reports two things. The first is an AI-solvability score, which is pass@k for that model on that date. The second is a construct check, which asks whether any resistance comes from a real skill or from a trick in the wording. A problem only earns the label AI-resistant when the score is below a threshold and the construct check is clean.&lt;/p&gt;&#10;&lt;p&gt;Defaults: 20 samples per audit, pass@k reported at k=1 and k=5, threshold 0.2. The pass@k estimator is the unbiased one from the Codex paper, not the naive &amp;ldquo;did any of the first k pass&amp;rdquo;.&lt;/p&gt;&#10;&lt;div class="not-prose diagram diagram-light"&gt;&lt;svg id="d5835ced5ca2f73e0light" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 1601.875px;" viewBox="0 0 1601.875 323" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#d5835ced5ca2f73e0light{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;}}#d5835ced5ca2f73e0light .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#d5835ced5ca2f73e0light .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#d5835ced5ca2f73e0light .error-icon{fill:rgb(255, 255, 255);}#d5835ced5ca2f73e0light .error-text{fill:#000000;stroke:#000000;}#d5835ced5ca2f73e0light .edge-thickness-normal{stroke-width:1px;}#d5835ced5ca2f73e0light .edge-thickness-thick{stroke-width:3.5px;}#d5835ced5ca2f73e0light .edge-pattern-solid{stroke-dasharray:0;}#d5835ced5ca2f73e0light .edge-thickness-invisible{stroke-width:0;fill:none;}#d5835ced5ca2f73e0light .edge-pattern-dashed{stroke-dasharray:3;}#d5835ced5ca2f73e0light .edge-pattern-dotted{stroke-dasharray:2;}#d5835ced5ca2f73e0light .marker{fill:rgb(74, 86, 92);stroke:rgb(74, 86, 92);}#d5835ced5ca2f73e0light .marker.cross{stroke:rgb(74, 86, 92);}#d5835ced5ca2f73e0light svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#d5835ced5ca2f73e0light p{margin:0;}#d5835ced5ca2f73e0light .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#333;}#d5835ced5ca2f73e0light .cluster-label text{fill:#000000;}#d5835ced5ca2f73e0light .cluster-label span{color:#000000;}#d5835ced5ca2f73e0light .cluster-label span p{background-color:transparent;}#d5835ced5ca2f73e0light .label text,#d5835ced5ca2f73e0light span{fill:#333;color:#333;}#d5835ced5ca2f73e0light .node rect,#d5835ced5ca2f73e0light .node circle,#d5835ced5ca2f73e0light .node ellipse,#d5835ced5ca2f73e0light .node polygon,#d5835ced5ca2f73e0light .node path{fill:rgb(255, 255, 255);stroke:rgb(204, 216, 222);stroke-width:1px;}#d5835ced5ca2f73e0light .rough-node .label text,#d5835ced5ca2f73e0light .node .label text,#d5835ced5ca2f73e0light .image-shape .label,#d5835ced5ca2f73e0light .icon-shape .label{text-anchor:middle;}#d5835ced5ca2f73e0light .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#d5835ced5ca2f73e0light .rough-node .label,#d5835ced5ca2f73e0light .node .label,#d5835ced5ca2f73e0light .image-shape .label,#d5835ced5ca2f73e0light .icon-shape .label{text-align:center;}#d5835ced5ca2f73e0light .node.clickable{cursor:pointer;}#d5835ced5ca2f73e0light .root .anchor path{fill:rgb(74, 86, 92)!important;stroke-width:0;stroke:rgb(74, 86, 92);}#d5835ced5ca2f73e0light .arrowheadPath{fill:#000000;}#d5835ced5ca2f73e0light .edgePath .path{stroke:rgb(74, 86, 92);stroke-width:1px;}#d5835ced5ca2f73e0light .flowchart-link{stroke:rgb(74, 86, 92);fill:none;}#d5835ced5ca2f73e0light .edgeLabel{background-color:rgb(182, 240, 255);text-align:center;}#d5835ced5ca2f73e0light .edgeLabel p{background-color:rgb(182, 240, 255);}#d5835ced5ca2f73e0light .edgeLabel rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#d5835ced5ca2f73e0light .labelBkg{background-color:rgba(182, 240, 255, 0.5);}#d5835ced5ca2f73e0light .cluster rect{fill:rgb(255, 255, 255);stroke:rgb(129, 146, 154);stroke-width:1px;}#d5835ced5ca2f73e0light .cluster text{fill:#000000;}#d5835ced5ca2f73e0light .cluster span{color:#000000;}#d5835ced5ca2f73e0light 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;}#d5835ced5ca2f73e0light .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#d5835ced5ca2f73e0light rect.text{fill:none;stroke-width:0;}#d5835ced5ca2f73e0light .icon-shape,#d5835ced5ca2f73e0light .image-shape{background-color:rgb(182, 240, 255);text-align:center;}#d5835ced5ca2f73e0light .icon-shape p,#d5835ced5ca2f73e0light .image-shape p{background-color:rgb(182, 240, 255);padding:2px;}#d5835ced5ca2f73e0light .icon-shape .label rect,#d5835ced5ca2f73e0light .image-shape .label rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#d5835ced5ca2f73e0light .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#d5835ced5ca2f73e0light .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#d5835ced5ca2f73e0light .node .neo-node{stroke:rgb(204, 216, 222);}#d5835ced5ca2f73e0light [data-look="neo"].node rect,#d5835ced5ca2f73e0light [data-look="neo"].cluster rect,#d5835ced5ca2f73e0light [data-look="neo"].node polygon{stroke:url(#d5835ced5ca2f73e0light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d5835ced5ca2f73e0light [data-look="neo"].swimlane.cluster rect{filter:none;}#d5835ced5ca2f73e0light [data-look="neo"].node path{stroke:url(#d5835ced5ca2f73e0light-gradient);stroke-width:1px;}#d5835ced5ca2f73e0light [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d5835ced5ca2f73e0light [data-look="neo"].node .neo-line path{stroke:rgb(204, 216, 222);filter:none;}#d5835ced5ca2f73e0light [data-look="neo"].node circle{stroke:url(#d5835ced5ca2f73e0light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d5835ced5ca2f73e0light [data-look="neo"].node circle .state-start{fill:#000000;}#d5835ced5ca2f73e0light [data-look="neo"].icon-shape .icon{fill:url(#d5835ced5ca2f73e0light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d5835ced5ca2f73e0light [data-look="neo"].icon-shape .icon-neo path{stroke:url(#d5835ced5ca2f73e0light-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d5835ced5ca2f73e0light :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="d5835ced5ca2f73e0light_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="d5835ced5ca2f73e0light_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="d5835ced5ca2f73e0light_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="d5835ced5ca2f73e0light_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="d5835ced5ca2f73e0light_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="d5835ced5ca2f73e0light_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="d5835ced5ca2f73e0light_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="d5835ced5ca2f73e0light_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="d5835ced5ca2f73e0light_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="d5835ced5ca2f73e0light_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="d5835ced5ca2f73e0light_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="d5835ced5ca2f73e0light_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="M199.758,124L215.298,111.167C230.839,98.333,261.919,72.667,281.69,59.833C301.461,47,309.922,47,314.152,47L318.383,47" id="d5835ced5ca2f73e0light-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="W3sieCI6MTk5Ljc1NzgxMjUsInkiOjEyNH0seyJ4IjoyOTMsInkiOjQ3fSx7IngiOjMyMi4zODI4MTI1LCJ5Ijo0N31d" data-look="classic" marker-end="url(#d5835ced5ca2f73e0light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M268,175L272.167,175C276.333,175,284.667,175,292.333,175C300,175,307,175,310.5,175L314,175" id="d5835ced5ca2f73e0light-L_A_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_A_C_0" data-points="W3sieCI6MjY4LCJ5IjoxNzV9LHsieCI6MjkzLCJ5IjoxNzV9LHsieCI6MzE4LCJ5IjoxNzV9XQ==" data-look="classic" marker-end="url(#d5835ced5ca2f73e0light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M556.789,47L561.686,47C566.583,47,576.378,47,585.906,48.912C595.434,50.824,604.697,54.649,609.328,56.561L613.959,58.473" id="d5835ced5ca2f73e0light-L_B_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_B_D_0" data-points="W3sieCI6NTU2Ljc4OTA2MjUsInkiOjQ3fSx7IngiOjU4Ni4xNzE4NzUsInkiOjQ3fSx7IngiOjYxNy42NTYyNSwieSI6NjB9XQ==" data-look="classic" marker-end="url(#d5835ced5ca2f73e0light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M561.172,175L565.339,175C569.505,175,577.839,175,586.636,173.088C595.434,171.176,604.697,167.351,609.328,165.439L613.959,163.527" id="d5835ced5ca2f73e0light-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="W3sieCI6NTYxLjE3MTg3NSwieSI6MTc1fSx7IngiOjU4Ni4xNzE4NzUsInkiOjE3NX0seyJ4Ijo2MTcuNjU2MjUsInkiOjE2Mn1d" data-look="classic" marker-end="url(#d5835ced5ca2f73e0light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M871.172,111L875.339,111C879.505,111,887.839,111,900.452,111C913.065,111,929.958,111,938.405,111L946.852,111" id="d5835ced5ca2f73e0light-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="W3sieCI6ODcxLjE3MTg3NSwieSI6MTExfSx7IngiOjg5Ni4xNzE4NzUsInkiOjExMX0seyJ4Ijo5NTAuODUxNTYyNSwieSI6MTExfV0=" data-look="classic" marker-end="url(#d5835ced5ca2f73e0light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M216.267,226L229.056,234.333C241.845,242.667,267.422,259.333,304.642,267.667C341.862,276,390.724,276,439.586,276C488.448,276,537.31,276,587.574,276C637.839,276,689.505,276,741.172,276C792.839,276,844.505,276,873.839,276C903.172,276,910.172,276,913.672,276L917.172,276" id="d5835ced5ca2f73e0light-L_A_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_A_F_0" data-points="W3sieCI6MjE2LjI2NzMyNjczMjY3MzI3LCJ5IjoyMjZ9LHsieCI6MjkzLCJ5IjoyNzZ9LHsieCI6NDM5LjU4NTkzNzUsInkiOjI3Nn0seyJ4Ijo1ODYuMTcxODc1LCJ5IjoyNzZ9LHsieCI6NzQxLjE3MTg3NSwieSI6Mjc2fSx7IngiOjg5Ni4xNzE4NzUsInkiOjI3Nn0seyJ4Ijo5MjEuMTcxODc1LCJ5IjoyNzZ9XQ==" data-look="classic" marker-end="url(#d5835ced5ca2f73e0light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M1111.945,111L1121.059,111C1130.172,111,1148.398,111,1166.193,116.237C1183.987,121.474,1201.349,131.948,1210.03,137.186L1218.711,142.423" id="d5835ced5ca2f73e0light-L_E_G_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_G_0" data-points="W3sieCI6MTExMS45NDUzMTI1LCJ5IjoxMTF9LHsieCI6MTE2Ni42MjUsInkiOjExMX0seyJ4IjoxMjIyLjEzNjA0NjgwNTM4MzMsInkiOjE0NC40ODg5NTMxOTQ2MTY3fV0=" data-look="classic" marker-end="url(#d5835ced5ca2f73e0light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M1141.625,276L1145.792,276C1149.958,276,1158.292,276,1172.733,266.218C1187.175,256.435,1207.725,236.87,1218,227.088L1228.275,217.305" id="d5835ced5ca2f73e0light-L_F_G_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_F_G_0" data-points="W3sieCI6MTE0MS42MjUsInkiOjI3Nn0seyJ4IjoxMTY2LjYyNSwieSI6Mjc2fSx7IngiOjEyMzEuMTcyMjUxNjY5MzcwMywieSI6MjE0LjU0NzI1MTY2OTM3MDM1fV0=" data-look="classic" marker-end="url(#d5835ced5ca2f73e0light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M1329.076,150.279L1339.442,145.733C1349.808,141.186,1370.541,132.093,1386.487,127.547C1402.432,123,1413.591,123,1419.171,123L1424.75,123" id="d5835ced5ca2f73e0light-L_G_H_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_G_H_0" data-points="W3sieCI6MTMyOS4wNzU5MTQ5NDEzNzA1LCJ5IjoxNTAuMjc5MDM5OTQxMzcwNDZ9LHsieCI6MTM5MS4yNzM0Mzc1LCJ5IjoxMjN9LHsieCI6MTQyOC43NSwieSI6MTIzfV0=" data-look="classic" marker-end="url(#d5835ced5ca2f73e0light_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M1329.076,199.721L1339.442,204.267C1349.808,208.814,1370.541,217.907,1386.964,222.453C1403.388,227,1415.503,227,1421.56,227L1427.617,227" id="d5835ced5ca2f73e0light-L_G_I_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_G_I_0" data-points="W3sieCI6MTMyOS4wNzU5MTQ5NDEzNzA1LCJ5IjoxOTkuNzIwOTYwMDU4NjI5NTR9LHsieCI6MTM5MS4yNzM0Mzc1LCJ5IjoyMjd9LHsieCI6MTQzMS42MTcxODc1LCJ5IjoyMjd9XQ==" data-look="classic" marker-end="url(#d5835ced5ca2f73e0light_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_A_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_B_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_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_A_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_E_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_F_G_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(1391.2734375, 123)"&gt;&lt;g class="label" data-id="L_G_H_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(1391.2734375, 227)"&gt;&lt;g class="label" data-id="L_G_I_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="d5835ced5ca2f73e0light-flowchart-A-0" data-look="classic" transform="translate(138, 175)"&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;problem folder&lt;br&gt;spec + hidden tests + reference&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0light-flowchart-B-1" data-look="classic" transform="translate(439.5859375, 47)"&gt;&lt;rect class="basic label-container" style="" x="-117.203125" y="-39" width="234.40625" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-87.203125, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="174.40625" 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;model&lt;br&gt;samples N=20 solutions&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0light-flowchart-C-3" data-look="classic" transform="translate(439.5859375, 175)"&gt;&lt;rect class="basic label-container" style="" x="-121.5859375" y="-39" width="243.171875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-91.5859375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="183.171875" 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;pre-flight&lt;br&gt;reference vs hidden tests&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0light-flowchart-D-5" data-look="classic" transform="translate(741.171875, 111)"&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;sandbox&lt;br&gt;each candidate vs hidden tests&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0light-flowchart-E-9" data-look="classic" transform="translate(1031.3984375, 111)"&gt;&lt;rect class="basic label-container" style="" x="-80.546875" y="-39" width="161.09375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-50.546875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="101.09375" 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;pass@k score&lt;br&gt;k=1, k=5&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0light-flowchart-F-11" data-look="classic" transform="translate(1031.3984375, 276)"&gt;&lt;rect class="basic label-container" style="" x="-110.2265625" y="-39" width="220.453125" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-80.2265625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="160.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;construct check&lt;br&gt;4 offline fairness rules&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0light-flowchart-G-13" data-look="classic" transform="translate(1272.7109375, 175)"&gt;&lt;polygon points="81.0859375,0 162.171875,-81.0859375 81.0859375,-162.171875 0,-81.0859375" class="label-container" transform="translate(-80.5859375, 81.0859375)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-42.0859375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="84.171875" 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;score &amp;lt; 0.2&lt;br&gt;AND clean?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0light-flowchart-H-17" data-look="classic" transform="translate(1511.3125, 123)"&gt;&lt;rect class="basic label-container" style="" x="-82.5625" y="-27" width="165.125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-52.5625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="105.125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;AI-RESISTANT&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0light-flowchart-I-19" data-look="classic" transform="translate(1511.3125, 227)"&gt;&lt;rect class="basic label-container" style="" x="-79.6953125" y="-27" width="159.390625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-49.6953125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="99.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;AI-SOLVABLE&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="d5835ced5ca2f73e0light-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="d5835ced5ca2f73e0light-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="d5835ced5ca2f73e0light-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="d5835ced5ca2f73e0dark" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 1601.875px;" viewBox="0 0 1601.875 323" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#d5835ced5ca2f73e0dark{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;}}#d5835ced5ca2f73e0dark .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#d5835ced5ca2f73e0dark .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#d5835ced5ca2f73e0dark .error-icon{fill:#a44141;}#d5835ced5ca2f73e0dark .error-text{fill:#ddd;stroke:#ddd;}#d5835ced5ca2f73e0dark .edge-thickness-normal{stroke-width:1px;}#d5835ced5ca2f73e0dark .edge-thickness-thick{stroke-width:3.5px;}#d5835ced5ca2f73e0dark .edge-pattern-solid{stroke-dasharray:0;}#d5835ced5ca2f73e0dark .edge-thickness-invisible{stroke-width:0;fill:none;}#d5835ced5ca2f73e0dark .edge-pattern-dashed{stroke-dasharray:3;}#d5835ced5ca2f73e0dark .edge-pattern-dotted{stroke-dasharray:2;}#d5835ced5ca2f73e0dark .marker{fill:lightgrey;stroke:lightgrey;}#d5835ced5ca2f73e0dark .marker.cross{stroke:lightgrey;}#d5835ced5ca2f73e0dark svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#d5835ced5ca2f73e0dark p{margin:0;}#d5835ced5ca2f73e0dark .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#ccc;}#d5835ced5ca2f73e0dark .cluster-label text{fill:#F9FFFE;}#d5835ced5ca2f73e0dark .cluster-label span{color:#F9FFFE;}#d5835ced5ca2f73e0dark .cluster-label span p{background-color:transparent;}#d5835ced5ca2f73e0dark .label text,#d5835ced5ca2f73e0dark span{fill:#ccc;color:#ccc;}#d5835ced5ca2f73e0dark .node rect,#d5835ced5ca2f73e0dark .node circle,#d5835ced5ca2f73e0dark .node ellipse,#d5835ced5ca2f73e0dark .node polygon,#d5835ced5ca2f73e0dark .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#d5835ced5ca2f73e0dark .rough-node .label text,#d5835ced5ca2f73e0dark .node .label text,#d5835ced5ca2f73e0dark .image-shape .label,#d5835ced5ca2f73e0dark .icon-shape .label{text-anchor:middle;}#d5835ced5ca2f73e0dark .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#d5835ced5ca2f73e0dark .rough-node .label,#d5835ced5ca2f73e0dark .node .label,#d5835ced5ca2f73e0dark .image-shape .label,#d5835ced5ca2f73e0dark .icon-shape .label{text-align:center;}#d5835ced5ca2f73e0dark .node.clickable{cursor:pointer;}#d5835ced5ca2f73e0dark .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#d5835ced5ca2f73e0dark .arrowheadPath{fill:lightgrey;}#d5835ced5ca2f73e0dark .edgePath .path{stroke:lightgrey;stroke-width:1px;}#d5835ced5ca2f73e0dark .flowchart-link{stroke:lightgrey;fill:none;}#d5835ced5ca2f73e0dark .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#d5835ced5ca2f73e0dark .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#d5835ced5ca2f73e0dark .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#d5835ced5ca2f73e0dark .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#d5835ced5ca2f73e0dark .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#d5835ced5ca2f73e0dark .cluster text{fill:#F9FFFE;}#d5835ced5ca2f73e0dark .cluster span{color:#F9FFFE;}#d5835ced5ca2f73e0dark 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;}#d5835ced5ca2f73e0dark .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#d5835ced5ca2f73e0dark rect.text{fill:none;stroke-width:0;}#d5835ced5ca2f73e0dark .icon-shape,#d5835ced5ca2f73e0dark .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#d5835ced5ca2f73e0dark .icon-shape p,#d5835ced5ca2f73e0dark .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#d5835ced5ca2f73e0dark .icon-shape .label rect,#d5835ced5ca2f73e0dark .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#d5835ced5ca2f73e0dark .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#d5835ced5ca2f73e0dark .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#d5835ced5ca2f73e0dark .node .neo-node{stroke:#ccc;}#d5835ced5ca2f73e0dark [data-look="neo"].node rect,#d5835ced5ca2f73e0dark [data-look="neo"].cluster rect,#d5835ced5ca2f73e0dark [data-look="neo"].node polygon{stroke:url(#d5835ced5ca2f73e0dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d5835ced5ca2f73e0dark [data-look="neo"].swimlane.cluster rect{filter:none;}#d5835ced5ca2f73e0dark [data-look="neo"].node path{stroke:url(#d5835ced5ca2f73e0dark-gradient);stroke-width:1px;}#d5835ced5ca2f73e0dark [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d5835ced5ca2f73e0dark [data-look="neo"].node .neo-line path{stroke:#ccc;filter:none;}#d5835ced5ca2f73e0dark [data-look="neo"].node circle{stroke:url(#d5835ced5ca2f73e0dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d5835ced5ca2f73e0dark [data-look="neo"].node circle .state-start{fill:#000000;}#d5835ced5ca2f73e0dark [data-look="neo"].icon-shape .icon{fill:url(#d5835ced5ca2f73e0dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d5835ced5ca2f73e0dark [data-look="neo"].icon-shape .icon-neo path{stroke:url(#d5835ced5ca2f73e0dark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#d5835ced5ca2f73e0dark :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="d5835ced5ca2f73e0dark_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="d5835ced5ca2f73e0dark_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="d5835ced5ca2f73e0dark_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="d5835ced5ca2f73e0dark_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="d5835ced5ca2f73e0dark_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="d5835ced5ca2f73e0dark_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="d5835ced5ca2f73e0dark_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="d5835ced5ca2f73e0dark_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="d5835ced5ca2f73e0dark_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="d5835ced5ca2f73e0dark_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="d5835ced5ca2f73e0dark_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="d5835ced5ca2f73e0dark_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="M199.758,124L215.298,111.167C230.839,98.333,261.919,72.667,281.69,59.833C301.461,47,309.922,47,314.152,47L318.383,47" id="d5835ced5ca2f73e0dark-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="W3sieCI6MTk5Ljc1NzgxMjUsInkiOjEyNH0seyJ4IjoyOTMsInkiOjQ3fSx7IngiOjMyMi4zODI4MTI1LCJ5Ijo0N31d" data-look="classic" marker-end="url(#d5835ced5ca2f73e0dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M268,175L272.167,175C276.333,175,284.667,175,292.333,175C300,175,307,175,310.5,175L314,175" id="d5835ced5ca2f73e0dark-L_A_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_A_C_0" data-points="W3sieCI6MjY4LCJ5IjoxNzV9LHsieCI6MjkzLCJ5IjoxNzV9LHsieCI6MzE4LCJ5IjoxNzV9XQ==" data-look="classic" marker-end="url(#d5835ced5ca2f73e0dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M556.789,47L561.686,47C566.583,47,576.378,47,585.906,48.912C595.434,50.824,604.697,54.649,609.328,56.561L613.959,58.473" id="d5835ced5ca2f73e0dark-L_B_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_B_D_0" data-points="W3sieCI6NTU2Ljc4OTA2MjUsInkiOjQ3fSx7IngiOjU4Ni4xNzE4NzUsInkiOjQ3fSx7IngiOjYxNy42NTYyNSwieSI6NjB9XQ==" data-look="classic" marker-end="url(#d5835ced5ca2f73e0dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M561.172,175L565.339,175C569.505,175,577.839,175,586.636,173.088C595.434,171.176,604.697,167.351,609.328,165.439L613.959,163.527" id="d5835ced5ca2f73e0dark-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="W3sieCI6NTYxLjE3MTg3NSwieSI6MTc1fSx7IngiOjU4Ni4xNzE4NzUsInkiOjE3NX0seyJ4Ijo2MTcuNjU2MjUsInkiOjE2Mn1d" data-look="classic" marker-end="url(#d5835ced5ca2f73e0dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M871.172,111L875.339,111C879.505,111,887.839,111,900.452,111C913.065,111,929.958,111,938.405,111L946.852,111" id="d5835ced5ca2f73e0dark-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="W3sieCI6ODcxLjE3MTg3NSwieSI6MTExfSx7IngiOjg5Ni4xNzE4NzUsInkiOjExMX0seyJ4Ijo5NTAuODUxNTYyNSwieSI6MTExfV0=" data-look="classic" marker-end="url(#d5835ced5ca2f73e0dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M216.267,226L229.056,234.333C241.845,242.667,267.422,259.333,304.642,267.667C341.862,276,390.724,276,439.586,276C488.448,276,537.31,276,587.574,276C637.839,276,689.505,276,741.172,276C792.839,276,844.505,276,873.839,276C903.172,276,910.172,276,913.672,276L917.172,276" id="d5835ced5ca2f73e0dark-L_A_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_A_F_0" data-points="W3sieCI6MjE2LjI2NzMyNjczMjY3MzI3LCJ5IjoyMjZ9LHsieCI6MjkzLCJ5IjoyNzZ9LHsieCI6NDM5LjU4NTkzNzUsInkiOjI3Nn0seyJ4Ijo1ODYuMTcxODc1LCJ5IjoyNzZ9LHsieCI6NzQxLjE3MTg3NSwieSI6Mjc2fSx7IngiOjg5Ni4xNzE4NzUsInkiOjI3Nn0seyJ4Ijo5MjEuMTcxODc1LCJ5IjoyNzZ9XQ==" data-look="classic" marker-end="url(#d5835ced5ca2f73e0dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M1111.945,111L1121.059,111C1130.172,111,1148.398,111,1166.193,116.237C1183.987,121.474,1201.349,131.948,1210.03,137.186L1218.711,142.423" id="d5835ced5ca2f73e0dark-L_E_G_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_G_0" data-points="W3sieCI6MTExMS45NDUzMTI1LCJ5IjoxMTF9LHsieCI6MTE2Ni42MjUsInkiOjExMX0seyJ4IjoxMjIyLjEzNjA0NjgwNTM4MzMsInkiOjE0NC40ODg5NTMxOTQ2MTY3fV0=" data-look="classic" marker-end="url(#d5835ced5ca2f73e0dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M1141.625,276L1145.792,276C1149.958,276,1158.292,276,1172.733,266.218C1187.175,256.435,1207.725,236.87,1218,227.088L1228.275,217.305" id="d5835ced5ca2f73e0dark-L_F_G_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_F_G_0" data-points="W3sieCI6MTE0MS42MjUsInkiOjI3Nn0seyJ4IjoxMTY2LjYyNSwieSI6Mjc2fSx7IngiOjEyMzEuMTcyMjUxNjY5MzcwMywieSI6MjE0LjU0NzI1MTY2OTM3MDM1fV0=" data-look="classic" marker-end="url(#d5835ced5ca2f73e0dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M1329.076,150.279L1339.442,145.733C1349.808,141.186,1370.541,132.093,1386.487,127.547C1402.432,123,1413.591,123,1419.171,123L1424.75,123" id="d5835ced5ca2f73e0dark-L_G_H_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_G_H_0" data-points="W3sieCI6MTMyOS4wNzU5MTQ5NDEzNzA1LCJ5IjoxNTAuMjc5MDM5OTQxMzcwNDZ9LHsieCI6MTM5MS4yNzM0Mzc1LCJ5IjoxMjN9LHsieCI6MTQyOC43NSwieSI6MTIzfV0=" data-look="classic" marker-end="url(#d5835ced5ca2f73e0dark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M1329.076,199.721L1339.442,204.267C1349.808,208.814,1370.541,217.907,1386.964,222.453C1403.388,227,1415.503,227,1421.56,227L1427.617,227" id="d5835ced5ca2f73e0dark-L_G_I_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_G_I_0" data-points="W3sieCI6MTMyOS4wNzU5MTQ5NDEzNzA1LCJ5IjoxOTkuNzIwOTYwMDU4NjI5NTR9LHsieCI6MTM5MS4yNzM0Mzc1LCJ5IjoyMjd9LHsieCI6MTQzMS42MTcxODc1LCJ5IjoyMjd9XQ==" data-look="classic" marker-end="url(#d5835ced5ca2f73e0dark_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_A_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_B_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_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_A_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_E_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_F_G_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(1391.2734375, 123)"&gt;&lt;g class="label" data-id="L_G_H_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(1391.2734375, 227)"&gt;&lt;g class="label" data-id="L_G_I_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="d5835ced5ca2f73e0dark-flowchart-A-0" data-look="classic" transform="translate(138, 175)"&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;problem folder&lt;br&gt;spec + hidden tests + reference&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0dark-flowchart-B-1" data-look="classic" transform="translate(439.5859375, 47)"&gt;&lt;rect class="basic label-container" style="" x="-117.203125" y="-39" width="234.40625" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-87.203125, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="174.40625" 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;model&lt;br&gt;samples N=20 solutions&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0dark-flowchart-C-3" data-look="classic" transform="translate(439.5859375, 175)"&gt;&lt;rect class="basic label-container" style="" x="-121.5859375" y="-39" width="243.171875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-91.5859375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="183.171875" 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;pre-flight&lt;br&gt;reference vs hidden tests&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0dark-flowchart-D-5" data-look="classic" transform="translate(741.171875, 111)"&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;sandbox&lt;br&gt;each candidate vs hidden tests&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0dark-flowchart-E-9" data-look="classic" transform="translate(1031.3984375, 111)"&gt;&lt;rect class="basic label-container" style="" x="-80.546875" y="-39" width="161.09375" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-50.546875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="101.09375" 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;pass@k score&lt;br&gt;k=1, k=5&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0dark-flowchart-F-11" data-look="classic" transform="translate(1031.3984375, 276)"&gt;&lt;rect class="basic label-container" style="" x="-110.2265625" y="-39" width="220.453125" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-80.2265625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="160.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;construct check&lt;br&gt;4 offline fairness rules&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0dark-flowchart-G-13" data-look="classic" transform="translate(1272.7109375, 175)"&gt;&lt;polygon points="81.0859375,0 162.171875,-81.0859375 81.0859375,-162.171875 0,-81.0859375" class="label-container" transform="translate(-80.5859375, 81.0859375)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-42.0859375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="84.171875" 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;score &amp;lt; 0.2&lt;br&gt;AND clean?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0dark-flowchart-H-17" data-look="classic" transform="translate(1511.3125, 123)"&gt;&lt;rect class="basic label-container" style="" x="-82.5625" y="-27" width="165.125" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-52.5625, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="105.125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;AI-RESISTANT&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="d5835ced5ca2f73e0dark-flowchart-I-19" data-look="classic" transform="translate(1511.3125, 227)"&gt;&lt;rect class="basic label-container" style="" x="-79.6953125" y="-27" width="159.390625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-49.6953125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="99.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;AI-SOLVABLE&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="d5835ced5ca2f73e0dark-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="d5835ced5ca2f73e0dark-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="d5835ced5ca2f73e0dark-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 scale of the evidence, so you can weigh it: I authored 58 problems, ran 34 of them against live models, and collected 1,095 sampled solutions between 2026-06-14 and 2026-07-23. Four model versions, all from one vendor: claude-sonnet-4-6, claude-haiku-4-5, claude-haiku-4-5-20251001, and claude-sonnet-4-5-20250929. One rater, one vendor, one summer. Every claim below sits inside that box.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The one candidate&#10; &lt;div id="the-one-candidate" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-one-candidate" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Most problems never got close to resistant. On six clean baseline problems, the strong model went 1.00 across the board and the weak model slipped on only two (0.75 on a conditionals problem, 0.60 on a rounding problem). Five problems built around a non-default rule did better at separating the models, and one stood out:&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;Problem&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;The non-default rule&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Sonnet&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Haiku&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;count-multiples-01&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;closed range, negative bounds&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1.00&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0.00&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Haiku produced twenty candidate solutions and zero passed. Sonnet solved it every time. The construct check came back clean: the skill was declared, the spec was plain ASCII, no tricks. The tool printed the label I had been chasing: AI-RESISTANT (construct-valid).&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The reword protocol&#10; &lt;div id="the-reword-protocol" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-reword-protocol" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;A low score can mean the problem tests a real skill the model lacks. It can also mean the model tripped on the phrasing. To tell these apart I added a fifth check that is a protocol rather than a rule: reword the spec in plain English, keep the hidden tests byte-for-byte identical, and audit again. If the resistance is real, it should survive a paraphrase.&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Probe&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Haiku pass@1&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Outcome&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;count-multiples-01 (baseline)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0.00&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;AI-RESISTANT (construct-valid)&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;reword 1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0.00&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;resistance held&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;reword 2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0.75&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;flipped to AI-SOLVABLE&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;The second paraphrase lifted Haiku from 0.00 to 0.75. Same tests. Same skill, supposedly. Sonnet solved the baseline and both rewords at 1.00 throughout. Whatever count-multiples-01 was measuring, it was not a stable property of the task. It was a property of one particular arrangement of words, on one model, on one date.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The score itself would not sit still&#10; &lt;div id="the-score-itself-would-not-sit-still" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-score-itself-would-not-sit-still" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;One more honesty requirement before the big claim. The 0.00 comes from the 20-attempt run of 16 July. I reran the same baseline problem on later dates:&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;Date&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Attempts&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Passed&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;pass@1&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;2026-07-16&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;20&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0.00&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;2026-07-17&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;20&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0.05&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;2026-07-18&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;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0.20&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;So I will not write that Haiku failed it every single time. It scored 0.00 on the run I reported, and drifted to 0.05 and 0.20 on repeats. At first this annoyed me. Then I realized it is a second argument for the same thesis: even the score of one fixed problem moves between runs, so a single number pinned to a task is not a stable property. It is a measurement of a model, on a date, with a sample size attached. My tool stamps every record with all three, and this is why.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Widening the search&#10; &lt;div id="widening-the-search" 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="#widening-the-search" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Maybe count-multiples-01 was unlucky and better candidates existed. I ran two more batches, 13 fresh problems designed around non-default rules. The bar for a keeper: fair by the construct check, solved by the strong model, failed by the weak model, and still failing after a reword. Not one problem cleared all four.&lt;/p&gt;&#10;&lt;p&gt;The most instructive failure was slice-1based-01. Haiku scored 0.15, which looked promising, but Sonnet also failed it at 0.00. A problem both models fail is not a resistant problem. It is a badly specified one. Its rewords lifted Haiku to 0.40 and 0.20, which fits the pattern: the difficulty lived in the wording.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Why the search may be structurally empty&#10; &lt;div id="why-the-search-may-be-structurally-empty" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-the-search-may-be-structurally-empty" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The pattern generalizes into a tension I could not find a way around.&lt;/p&gt;&#10;&lt;p&gt;To be fair, and to be solvable by a strong model, the twist in a problem must be stated clearly. But a clearly stated twist is one that the weakest model you can still realistically use also reads. The genuinely weak models that a resistant problem would need have been retired. So the skill gap that resistance depends on has closed, at least for CS1, at least for the models I tested.&lt;/p&gt;&#10;&lt;p&gt;This does not mean no AI-resistant assessment can exist anywhere. It means that within my box (one vendor, four model versions, six weeks, 58 authored problems, 1,095 attempts) every candidate either failed the fairness bar or failed the reword. Prior work found GPT-4 passing about 95 percent of textbook CS1 tasks, so the ceiling was known to be high before I started. What I did not expect is how completely the floor had risen too.&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 low pass@k is a claim about wording until a paraphrase has failed to fix it. Reword first, then talk about skill gaps.&lt;/li&gt;&#10;&lt;li&gt;Report the run you measured, with its date and sample size. My &amp;ldquo;0.00&amp;rdquo; became 0.05 and 0.20 on later runs of the identical problem.&lt;/li&gt;&#10;&lt;li&gt;A problem that every model fails is not resistant. It is broken. Check the strong model before celebrating the weak model&amp;rsquo;s failure.&lt;/li&gt;&#10;&lt;li&gt;If a resistant problem needs an unclearly stated twist to work, the resistance is construct-irrelevant variance, not a skill.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The next post in this series is about the part of the tool that made these numbers trustworthy in the first place: the harness, and the three rules that kept 1,095 sandbox runs from lying to me.&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, section 2.1)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://arxiv.org/abs/2308.08572" target="_blank" rel="noreferrer"&gt;Kiesler and Schiffner (2023), &amp;ldquo;Large Language Models in Introductory Programming Education&amp;rdquo;&lt;/a&gt; (GPT-4 solving 68 of 72 textbook introductory Python tasks)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://doi.org/10.1037/0003-066X.50.9.741" target="_blank" rel="noreferrer"&gt;Messick (1995), &amp;ldquo;Validity of Psychological Assessment&amp;rdquo;&lt;/a&gt; (construct-irrelevant variance, the concept behind the construct check)&lt;/li&gt;&#10;&lt;li&gt;Run data: &lt;code&gt;cs1-auditor&lt;/code&gt; run records (&lt;code&gt;.runs/*.json&lt;/code&gt;), pulled 2026-08-01; every figure above is from those records&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</content:encoded></item></channel></rss>