<?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 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;
 
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.

&lt;/div&gt;

&lt;nav class="series-progress" aria-label="Series progress"&gt;
 &lt;span class="series-progress-label"&gt;Auditing AI-Solvability · Part 1 of 1&lt;/span&gt;
 &lt;ol class="series-progress-dots"&gt;&lt;li class="series-progress-dot is-current"&gt;
 &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;
 &lt;/li&gt;&lt;/ol&gt;
 &lt;/nav&gt;

&lt;h2 class="relative group"&gt;What I was measuring
 &lt;div id="what-i-was-measuring" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-i-was-measuring" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&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;
 
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.

&lt;/div&gt;

&lt;nav class="series-progress" aria-label="Series progress"&gt;
 &lt;span class="series-progress-label"&gt;Auditing AI-Solvability · Part 1 of 1&lt;/span&gt;
 &lt;ol class="series-progress-dots"&gt;&lt;li class="series-progress-dot is-current"&gt;
 &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;
 &lt;/li&gt;&lt;/ol&gt;
 &lt;/nav&gt;

&lt;h2 class="relative group"&gt;What I was measuring
 &lt;div id="what-i-was-measuring" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-i-was-measuring" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&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;
&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;
&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;
 &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;
&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;

&lt;h2 class="relative group"&gt;The one candidate
 &lt;div id="the-one-candidate" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-one-candidate" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&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;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Problem&lt;/th&gt;
					&lt;th&gt;The non-default rule&lt;/th&gt;
					&lt;th&gt;Sonnet&lt;/th&gt;
					&lt;th&gt;Haiku&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;count-multiples-01&lt;/td&gt;
					&lt;td&gt;closed range, negative bounds&lt;/td&gt;
					&lt;td&gt;1.00&lt;/td&gt;
					&lt;td&gt;0.00&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&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;

&lt;h2 class="relative group"&gt;The reword protocol
 &lt;div id="the-reword-protocol" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-reword-protocol" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&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;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Probe&lt;/th&gt;
					&lt;th&gt;Haiku pass@1&lt;/th&gt;
					&lt;th&gt;Outcome&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;count-multiples-01 (baseline)&lt;/td&gt;
					&lt;td&gt;0.00&lt;/td&gt;
					&lt;td&gt;AI-RESISTANT (construct-valid)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;reword 1&lt;/td&gt;
					&lt;td&gt;0.00&lt;/td&gt;
					&lt;td&gt;resistance held&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;reword 2&lt;/td&gt;
					&lt;td&gt;0.75&lt;/td&gt;
					&lt;td&gt;flipped to AI-SOLVABLE&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&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;

&lt;h2 class="relative group"&gt;The score itself would not sit still
 &lt;div id="the-score-itself-would-not-sit-still" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-score-itself-would-not-sit-still" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&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;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Date&lt;/th&gt;
					&lt;th&gt;Attempts&lt;/th&gt;
					&lt;th&gt;Passed&lt;/th&gt;
					&lt;th&gt;pass@1&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;2026-07-16&lt;/td&gt;
					&lt;td&gt;20&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
					&lt;td&gt;0.00&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2026-07-17&lt;/td&gt;
					&lt;td&gt;20&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;0.05&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2026-07-18&lt;/td&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;0.20&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&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;

&lt;h2 class="relative group"&gt;Widening the search
 &lt;div id="widening-the-search" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#widening-the-search" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&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;
&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;

&lt;h2 class="relative group"&gt;Why the search may be structurally empty
 &lt;div id="why-the-search-may-be-structurally-empty" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-the-search-may-be-structurally-empty" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The pattern generalizes into a tension I could not find a way around.&lt;/p&gt;
&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;
&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;

&lt;h2 class="relative group"&gt;Lessons
 &lt;div id="lessons" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#lessons" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;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;
&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;
&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;
&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;
&lt;/ul&gt;
&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;

&lt;h2 class="relative group"&gt;References
 &lt;div id="references" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#references" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://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;
&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;
&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;
&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;
&lt;/ul&gt;</content:encoded></item></channel></rss>