<?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>Python on Nick Liu - Software Engineer</title><link>https://nick-liu.com/tags/python/</link><description>Recent content in Python 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/python/index.xml" rel="self" type="application/rss+xml"/><item><title>Do not restyle a deck to look official. Wipe the template and keep its masters.</title><link>https://nick-liu.com/posts/python-pptx-official-template/</link><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><author>nickboy@users.noreply.github.com (Nick Liu)</author><guid>https://nick-liu.com/posts/python-pptx-official-template/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;The last deliverable of my summer project was a slide deck in the official university template. I generate slides from Python, and my first instinct was to rebuild the branding by hand: sample the navy, find the fonts, redraw the footer. That path produces decks that look almost right, which is worse than wrong. The trick that works is to load the official .pptx itself, delete every sample slide while keeping the slide masters, and add my own slides on the official layouts. Backgrounds, fonts, and logo come along for free.&#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 5 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-done"&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 is-current"&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." aria-current="step"&gt;5&lt;/a&gt;&#10; &lt;/li&gt;&lt;/ol&gt;&#10; &lt;/nav&gt;&#10;&lt;p&gt;The generator is one Python file, roughly 470 lines of python-pptx, and it built the final presentation for the auditing project from &lt;a href="https://nick-liu.com/posts/ai-resistant-cs1-problems/" &gt;part 1&lt;/a&gt;. This post is about the two things in it worth stealing and the one bug worth laughing at.&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 last deliverable of my summer project was a slide deck in the official university template. I generate slides from Python, and my first instinct was to rebuild the branding by hand: sample the navy, find the fonts, redraw the footer. That path produces decks that look almost right, which is worse than wrong. The trick that works is to load the official .pptx itself, delete every sample slide while keeping the slide masters, and add my own slides on the official layouts. Backgrounds, fonts, and logo come along for free.&#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 5 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-done"&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 is-current"&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." aria-current="step"&gt;5&lt;/a&gt;&#10; &lt;/li&gt;&lt;/ol&gt;&#10; &lt;/nav&gt;&#10;&lt;p&gt;The generator is one Python file, roughly 470 lines of python-pptx, and it built the final presentation for the auditing project from &lt;a href="https://nick-liu.com/posts/ai-resistant-cs1-problems/" &gt;part 1&lt;/a&gt;. This post is about the two things in it worth stealing and the one bug worth laughing at.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Wiping slides without leaving corpses&#10; &lt;div id="wiping-slides-without-leaving-corpses" 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="#wiping-slides-without-leaving-corpses" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;python-pptx will happily open the official template as a presentation. The sample slides then need to go, and this is where the subtlety lives:&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;wipe_slides&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prs&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;lst&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;slides&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_sldIdLst&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;for&lt;/span&gt; &lt;span class="n"&gt;sldId&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lst&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;prs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;part&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;drop_rel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sldId&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;qn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;r:id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt; &lt;span class="c1"&gt;# drop rel too, or you get orphan parts&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;lst&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;remove&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sldId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;A .pptx is a zip of XML parts wired together by relationships. Removing a slide&amp;rsquo;s id from the slide list makes it disappear from the deck, but the underlying part is still referenced by a relationship from the presentation part. Skip the &lt;code&gt;drop_rel&lt;/code&gt; line and the file still opens, which is the trap: you ship a package carrying orphaned parts, and whether anything downstream chokes on them is up to tooling you do not control. Drop the relationship and the id together and the package stays clean.&lt;/p&gt;&#10;&lt;p&gt;What survives the wipe is the point. Slide masters and layouts are separate parts, untouched by this loop. Every slide I add afterwards goes onto an official layout, which means the background art, the footer, the logo placement, and the typography all come from the university&amp;rsquo;s own files. Nothing to sample, nothing to eyeball, nothing to drift out of date when the brand team ships a new template. Load, wipe, rebuild.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Colors from the theme, not from the eyedropper&#10; &lt;div id="colors-from-the-theme-not-from-the-eyedropper" 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="#colors-from-the-theme-not-from-the-eyedropper" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The template&amp;rsquo;s theme defines its palette, so the constants in my file are transcriptions with their theme slots noted, not guesses from a color picker:&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;NAVY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;RGBColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mh"&gt;0x30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mh"&gt;0x57&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Tech Navy (dk1)&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;GOLD&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;RGBColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0xB3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mh"&gt;0xA3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mh"&gt;0x69&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Tech Gold (accent1)&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;GREY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;RGBColor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x54&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mh"&gt;0x58&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mh"&gt;0x59&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Grey Matter (dk2)&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;BODYFONT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Roboto&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;HEADFONT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Roboto Slab&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;The comments carry the important part. When a shape needs explicit coloring, the value traces back to a named slot in the official theme, so a reviewer can check it and a future me can update it.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;The eight-inch hexagon gap&#10; &lt;div id="the-eight-inch-hexagon-gap" 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-eight-inch-hexagon-gap" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Now the bug. Content slides lay out a row of hexagons, and the gap between them was computed from the full slide width:&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="c1"&gt;# before (buggy): with n=2 this gives gap = 8.03 inches&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;gap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;13.33&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mf"&gt;0.9&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nb"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&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; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;The formula spreads n hexagons across the entire 13.33 inch slide. With five hexagons that looks intentional. With two, the leftover width all becomes gap: 8.03 inches of it, so the two hexagons were flung to opposite edges of the slide with a hole in the middle, like a divorce rendered in vector graphics. The layout code was not wrong for the case I wrote it for. It was wrong for the case I never tested.&lt;/p&gt;&#10;&lt;figure&gt;&lt;picture&gt;&#10; &lt;source&#10; type="image/webp"&#10; srcset="https://nick-liu.com/img/hexagons-before_hu_4229ac7a59650f34.webp 800w, https://nick-liu.com/img/hexagons-before_hu_ff2f0b0d634b4630.webp 1280w"&#10; sizes="(min-width: 768px) 50vw, 65vw"&gt;&#10; &lt;img&#10; class="my-0 rounded-md"&#10; loading="lazy"&#10; decoding="async"&#10; fetchpriority="auto"&#10; alt="A slide titled &amp;ldquo;Two stats, one row&amp;rdquo; where two hexagons sit pinned to the far left and far right edges with an 8-inch empty gap between them"&#10; width="1600"&#10; height="899"&#10; src="https://nick-liu.com/img/hexagons-before_hu_c28175d57b91d310.png"&#10; srcset="https://nick-liu.com/img/hexagons-before_hu_c28175d57b91d310.png 800w, https://nick-liu.com/img/hexagons-before_hu_24f5a45b9445d1a1.png 1280w"&#10; sizes="(min-width: 768px) 50vw, 65vw"&#10; data-zoom-src="https://nick-liu.com/img/hexagons-before.png"&gt;&#10; &lt;/picture&gt;&lt;/figure&gt;&#10;&lt;p&gt;That render is real: for this post I re-ran the generator with the buggy formula restored and two placeholder stats, and the template did exactly what it did in June.&lt;/p&gt;&#10;&lt;p&gt;The fix abandons full-width justification for a fixed gap with true centering, and draws the hexagons larger when there are only one or two, since a sparse row can afford the space:&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="c1"&gt;# after&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;w&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;2.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;2.35&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;2.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;2.55&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;gap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.7&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;x0&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;13.33&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;gap&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;figure&gt;&lt;picture&gt;&#10; &lt;source&#10; type="image/webp"&#10; srcset="https://nick-liu.com/img/hexagons-after_hu_3c306ef68c25aa10.webp 800w, https://nick-liu.com/img/hexagons-after_hu_4081f5fad673f547.webp 1280w"&#10; sizes="(min-width: 768px) 50vw, 65vw"&gt;&#10; &lt;img&#10; class="my-0 rounded-md"&#10; loading="lazy"&#10; decoding="async"&#10; fetchpriority="auto"&#10; alt="The same slide after the fix: two larger hexagons grouped side by side in the center of the slide"&#10; width="1600"&#10; height="899"&#10; src="https://nick-liu.com/img/hexagons-after_hu_661be3810963a239.png"&#10; srcset="https://nick-liu.com/img/hexagons-after_hu_661be3810963a239.png 800w, https://nick-liu.com/img/hexagons-after_hu_cf6738dad5402b0e.png 1280w"&#10; sizes="(min-width: 768px) 50vw, 65vw"&#10; data-zoom-src="https://nick-liu.com/img/hexagons-after.png"&gt;&#10; &lt;/picture&gt;&lt;/figure&gt;&#10;&lt;p&gt;Same slide source, current code. Justified layout distributes leftover space, and leftover space grows as items shrink in number. Any layout formula that divides remaining width by item count has this failure mode waiting at n=2 and n=1. Centered layout with a fixed gap degrades gracefully instead.&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;Inherit branding, never imitate it. Load the official file, wipe its slides, keep its masters, and build on its layouts.&lt;/li&gt;&#10;&lt;li&gt;When you remove a part from an OOXML package, remove its relationship in the same breath. A file that still opens is not evidence the package is clean.&lt;/li&gt;&#10;&lt;li&gt;Hardcoded colors are debt unless each one names the theme slot it came from.&lt;/li&gt;&#10;&lt;li&gt;Justified layouts fail at low item counts because leftover space has nowhere to go but the gaps. Test layout math at n=1 and n=2, not only at the count in your mockup.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;That closes the series. The auditor, the harness rules, the degenerate kappa, the failed sabotage, and the deck it was all presented on. The run records stay stamped with model and date, so when someone reruns these problems against next year&amp;rsquo;s models, disagreement with my numbers will be a finding and not a contradiction.&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://python-pptx.readthedocs.io/" target="_blank" rel="noreferrer"&gt;python-pptx documentation&lt;/a&gt; (presentations, slide masters, and layout objects)&lt;/li&gt;&#10;&lt;li&gt;Code shown above: &lt;code&gt;gt-slides/build_deck.py&lt;/code&gt; in the project repo, excerpted verbatim&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</content:encoded></item><item><title>A crash is never a pass. Three rules that kept 1,095 eval runs honest.</title><link>https://nick-liu.com/posts/eval-harness-honesty-rules/</link><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><author>nickboy@users.noreply.github.com (Nick Liu)</author><guid>https://nick-liu.com/posts/eval-harness-honesty-rules/</guid><description>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;The scariest failure mode in an eval harness is not a wrong answer. It is a harness problem wearing a model problem's clothes. A test file that does not run looks exactly like a problem no model can solve. A sandbox flake looks exactly like a failed attempt. Before I trusted any number from my CS1 auditing tool, I had to make those confusions impossible, and it came down to three rules.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;nav class="series-progress" aria-label="Series progress"&gt;&#10; &lt;span class="series-progress-label"&gt;Auditing AI-Solvability · Part 2 of 5&lt;/span&gt;&#10; &lt;ol class="series-progress-dots"&gt;&lt;li class="series-progress-dot is-done"&gt;&#10; &lt;a href="https://nick-liu.com/posts/ai-resistant-cs1-problems/" title="I went looking for AI-resistant CS1 problems. The search came up empty."&gt;1&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot is-current"&gt;&#10; &lt;a href="https://nick-liu.com/posts/eval-harness-honesty-rules/" title="A crash is never a pass. Three rules that kept 1,095 eval runs honest." aria-current="step"&gt;2&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/cohens-kappa-zero-agreement/" title="Cohen&amp;#39;s kappa came back 0.00. The agreement was 6 out of 8."&gt;3&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/obfuscated-spec-zero-width-characters/" title="I hid zero-width characters in a CS1 spec. The model did not blink."&gt;4&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/python-pptx-official-template/" title="Do not restyle a deck to look official. Wipe the template and keep its masters."&gt;5&lt;/a&gt;&#10; &lt;/li&gt;&lt;/ol&gt;&#10; &lt;/nav&gt;&#10;&lt;p&gt;&lt;a href="https://nick-liu.com/posts/ai-resistant-cs1-problems/" &gt;Part 1 of this series&lt;/a&gt; reported scores from 1,095 sampled solutions. This post is about why I believe those scores. The harness lives in one Python module, and its docstring is a contract I wrote before the code:&lt;/p&gt;</description><content:encoded>&lt;div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl"&gt;&#10; &#10;The scariest failure mode in an eval harness is not a wrong answer. It is a harness problem wearing a model problem's clothes. A test file that does not run looks exactly like a problem no model can solve. A sandbox flake looks exactly like a failed attempt. Before I trusted any number from my CS1 auditing tool, I had to make those confusions impossible, and it came down to three rules.&#10;&#10;&lt;/div&gt;&#10;&#10;&lt;nav class="series-progress" aria-label="Series progress"&gt;&#10; &lt;span class="series-progress-label"&gt;Auditing AI-Solvability · Part 2 of 5&lt;/span&gt;&#10; &lt;ol class="series-progress-dots"&gt;&lt;li class="series-progress-dot is-done"&gt;&#10; &lt;a href="https://nick-liu.com/posts/ai-resistant-cs1-problems/" title="I went looking for AI-resistant CS1 problems. The search came up empty."&gt;1&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot is-current"&gt;&#10; &lt;a href="https://nick-liu.com/posts/eval-harness-honesty-rules/" title="A crash is never a pass. Three rules that kept 1,095 eval runs honest." aria-current="step"&gt;2&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/cohens-kappa-zero-agreement/" title="Cohen&amp;#39;s kappa came back 0.00. The agreement was 6 out of 8."&gt;3&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/obfuscated-spec-zero-width-characters/" title="I hid zero-width characters in a CS1 spec. The model did not blink."&gt;4&lt;/a&gt;&#10; &lt;/li&gt;&lt;li class="series-progress-dot"&gt;&#10; &lt;a href="https://nick-liu.com/posts/python-pptx-official-template/" title="Do not restyle a deck to look official. Wipe the template and keep its masters."&gt;5&lt;/a&gt;&#10; &lt;/li&gt;&lt;/ol&gt;&#10; &lt;/nav&gt;&#10;&lt;p&gt;&lt;a href="https://nick-liu.com/posts/ai-resistant-cs1-problems/" &gt;Part 1 of this series&lt;/a&gt; reported scores from 1,095 sampled solutions. This post is about why I believe those scores. The harness lives in one Python module, and its docstring is a contract I wrote before the code:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Honesty rules:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; * The model is shown only `item.spec`; the hidden tests are written into the sandbox&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; alongside the candidate but never given to the model.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; * A pre-flight check runs the *reference* solution against the hidden tests. If the&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reference does not pass, the item is malformed and the audit aborts (a HARNESS&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; problem, never silently scored). This guarantees the test file is sound, so during&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; the audit any candidate error (syntax, import, exception, failing assertion) is a&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; legitimate FAIL for pass@k.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; * `HARNESS_ERROR` is reserved for runs where the sandbox produced no usable verdict&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; (no report and no failing exit code). Such attempts are excluded from pass@k and&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; reported separately, so they masquerade as neither pass nor fail.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Three rules. Each one exists because of a specific way a harness can lie.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Rule 1: run the reference solution first&#10; &lt;div id="rule-1-run-the-reference-solution-first" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#rule-1-run-the-reference-solution-first" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Before any model attempt is scored, the harness runs the problem&amp;rsquo;s own reference solution against the hidden tests:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;preflight&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sandbox&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Sandbox&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limits&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Limits&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;Verify the reference solution passes the hidden tests. Returns the test count.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;_run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reference_code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sandbox&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limits&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;outcome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_passed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;detail&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;_classify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;outcome&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;Outcome&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PASS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="n"&gt;HarnessError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;pre-flight failed: the reference solution did not pass the hidden tests &amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;(&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;detail&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;). Fix the item before auditing.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;stderr:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stderr&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Without this gate, a broken test file is indistinguishable from a model that cannot solve the problem. You would conclude the problem is AI-resistant when your own tests do not run. In a project whose whole point was hunting for AI-resistant problems, this is the exact wrong conclusion to hand out for free. The gate turns that scenario into a loud abort instead of a quiet score of zero.&lt;/p&gt;&#10;&lt;p&gt;The gate also buys something subtle. Once the reference is known to pass, any error from a candidate solution (syntax error, import error, exception, failing assertion) is a legitimate FAIL. I do not have to wonder whose fault a stack trace is. The test file was proven sound minutes earlier.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Rule 2: three outcomes, not two&#10; &lt;div id="rule-2-three-outcomes-not-two" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#rule-2-three-outcomes-not-two" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Most harnesses classify an attempt as pass or fail. Mine has a third verdict, and the classification code shows where it comes from:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;raw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_JSON_REPORT&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;raw&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# No machine-readable report. The test file is known-good (pre-flight), so a&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# non-zero exit means the candidate broke collection/execution -&amp;gt; FAIL. A clean&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# exit with no report is a genuine harness anomaly.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit_code&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Outcome&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FAIL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;no json report; pytest exit &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exit_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Outcome&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HARNESS_ERROR&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;no json report produced&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;With only two buckets, a crash has to land somewhere, and both landings are lies. Count it as a pass and your scores inflate. Count it as a fail and infrastructure flakes become model failures. &lt;code&gt;HARNESS_ERROR&lt;/code&gt; attempts are excluded from the pass@k denominator and reported separately, so they masquerade as neither.&lt;/p&gt;&#10;&lt;div class="not-prose diagram diagram-light"&gt;&lt;svg id="dce964c3d75e1f37dlight" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 813.625px;" viewBox="0 0 813.625 690.046875" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#dce964c3d75e1f37dlight{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#dce964c3d75e1f37dlight .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#dce964c3d75e1f37dlight .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#dce964c3d75e1f37dlight .error-icon{fill:rgb(255, 255, 255);}#dce964c3d75e1f37dlight .error-text{fill:#000000;stroke:#000000;}#dce964c3d75e1f37dlight .edge-thickness-normal{stroke-width:1px;}#dce964c3d75e1f37dlight .edge-thickness-thick{stroke-width:3.5px;}#dce964c3d75e1f37dlight .edge-pattern-solid{stroke-dasharray:0;}#dce964c3d75e1f37dlight .edge-thickness-invisible{stroke-width:0;fill:none;}#dce964c3d75e1f37dlight .edge-pattern-dashed{stroke-dasharray:3;}#dce964c3d75e1f37dlight .edge-pattern-dotted{stroke-dasharray:2;}#dce964c3d75e1f37dlight .marker{fill:rgb(74, 86, 92);stroke:rgb(74, 86, 92);}#dce964c3d75e1f37dlight .marker.cross{stroke:rgb(74, 86, 92);}#dce964c3d75e1f37dlight svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#dce964c3d75e1f37dlight p{margin:0;}#dce964c3d75e1f37dlight .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#333;}#dce964c3d75e1f37dlight .cluster-label text{fill:#000000;}#dce964c3d75e1f37dlight .cluster-label span{color:#000000;}#dce964c3d75e1f37dlight .cluster-label span p{background-color:transparent;}#dce964c3d75e1f37dlight .label text,#dce964c3d75e1f37dlight span{fill:#333;color:#333;}#dce964c3d75e1f37dlight .node rect,#dce964c3d75e1f37dlight .node circle,#dce964c3d75e1f37dlight .node ellipse,#dce964c3d75e1f37dlight .node polygon,#dce964c3d75e1f37dlight .node path{fill:rgb(255, 255, 255);stroke:rgb(204, 216, 222);stroke-width:1px;}#dce964c3d75e1f37dlight .rough-node .label text,#dce964c3d75e1f37dlight .node .label text,#dce964c3d75e1f37dlight .image-shape .label,#dce964c3d75e1f37dlight .icon-shape .label{text-anchor:middle;}#dce964c3d75e1f37dlight .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#dce964c3d75e1f37dlight .rough-node .label,#dce964c3d75e1f37dlight .node .label,#dce964c3d75e1f37dlight .image-shape .label,#dce964c3d75e1f37dlight .icon-shape .label{text-align:center;}#dce964c3d75e1f37dlight .node.clickable{cursor:pointer;}#dce964c3d75e1f37dlight .root .anchor path{fill:rgb(74, 86, 92)!important;stroke-width:0;stroke:rgb(74, 86, 92);}#dce964c3d75e1f37dlight .arrowheadPath{fill:#000000;}#dce964c3d75e1f37dlight .edgePath .path{stroke:rgb(74, 86, 92);stroke-width:1px;}#dce964c3d75e1f37dlight .flowchart-link{stroke:rgb(74, 86, 92);fill:none;}#dce964c3d75e1f37dlight .edgeLabel{background-color:rgb(182, 240, 255);text-align:center;}#dce964c3d75e1f37dlight .edgeLabel p{background-color:rgb(182, 240, 255);}#dce964c3d75e1f37dlight .edgeLabel rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#dce964c3d75e1f37dlight .labelBkg{background-color:rgba(182, 240, 255, 0.5);}#dce964c3d75e1f37dlight .cluster rect{fill:rgb(255, 255, 255);stroke:rgb(129, 146, 154);stroke-width:1px;}#dce964c3d75e1f37dlight .cluster text{fill:#000000;}#dce964c3d75e1f37dlight .cluster span{color:#000000;}#dce964c3d75e1f37dlight div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:12px;background:rgb(255, 255, 255);border:1px solid rgb(129, 146, 154);border-radius:2px;pointer-events:none;z-index:100;}#dce964c3d75e1f37dlight .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#dce964c3d75e1f37dlight rect.text{fill:none;stroke-width:0;}#dce964c3d75e1f37dlight .icon-shape,#dce964c3d75e1f37dlight .image-shape{background-color:rgb(182, 240, 255);text-align:center;}#dce964c3d75e1f37dlight .icon-shape p,#dce964c3d75e1f37dlight .image-shape p{background-color:rgb(182, 240, 255);padding:2px;}#dce964c3d75e1f37dlight .icon-shape .label rect,#dce964c3d75e1f37dlight .image-shape .label rect{opacity:0.5;background-color:rgb(182, 240, 255);fill:rgb(182, 240, 255);}#dce964c3d75e1f37dlight .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#dce964c3d75e1f37dlight .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#dce964c3d75e1f37dlight .node .neo-node{stroke:rgb(204, 216, 222);}#dce964c3d75e1f37dlight [data-look="neo"].node rect,#dce964c3d75e1f37dlight [data-look="neo"].cluster rect,#dce964c3d75e1f37dlight [data-look="neo"].node polygon{stroke:url(#dce964c3d75e1f37dlight-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37dlight [data-look="neo"].swimlane.cluster rect{filter:none;}#dce964c3d75e1f37dlight [data-look="neo"].node path{stroke:url(#dce964c3d75e1f37dlight-gradient);stroke-width:1px;}#dce964c3d75e1f37dlight [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37dlight [data-look="neo"].node .neo-line path{stroke:rgb(204, 216, 222);filter:none;}#dce964c3d75e1f37dlight [data-look="neo"].node circle{stroke:url(#dce964c3d75e1f37dlight-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37dlight [data-look="neo"].node circle .state-start{fill:#000000;}#dce964c3d75e1f37dlight [data-look="neo"].icon-shape .icon{fill:url(#dce964c3d75e1f37dlight-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37dlight [data-look="neo"].icon-shape .icon-neo path{stroke:url(#dce964c3d75e1f37dlight-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37dlight :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="dce964c3d75e1f37dlight_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37dlight_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37dlight_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"&gt;&lt;path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37dlight_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"&gt;&lt;polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37dlight_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37dlight_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37dlight_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37dlight_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37dlight_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37dlight_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37dlight_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37dlight_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class="root"&gt;&lt;g class="clusters"&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;path d="M375.586,62L375.586,66.167C375.586,70.333,375.586,78.667,375.586,86.333C375.586,94,375.586,101,375.586,104.5L375.586,108" id="dce964c3d75e1f37dlight-L_A_B_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A_B_0" data-points="W3sieCI6Mzc1LjU4NTkzNzUsInkiOjYyfSx7IngiOjM3NS41ODU5Mzc1LCJ5Ijo4N30seyJ4IjozNzUuNTg1OTM3NSwieSI6MTEyfV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M322.371,215.238L290.379,230.274C258.388,245.31,194.405,275.381,162.413,295.917C130.422,316.453,130.422,327.453,130.422,332.953L130.422,338.453" id="dce964c3d75e1f37dlight-L_B_C_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_B_C_0" data-points="W3sieCI6MzIyLjM3MDUwODEwODg3NzA2LCJ5IjoyMTUuMjM3Njk1NjA4ODc3MX0seyJ4IjoxMzAuNDIxODc1LCJ5IjozMDUuNDUzMTI1fSx7IngiOjEzMC40MjE4NzUsInkiOjM0Mi40NTMxMjV9XQ==" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M96.905,496.53L90.37,508.283C83.835,520.035,70.765,543.541,64.23,562.794C57.695,582.047,57.695,597.047,57.695,604.547L57.695,612.047" id="dce964c3d75e1f37dlight-L_C_P_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_C_P_0" data-points="W3sieCI6OTYuOTA0NzMxMzQ0Mjg2MiwieSI6NDk2LjUyOTczMTM0NDI4NjIzfSx7IngiOjU3LjY5NTMxMjUsInkiOjU2Ny4wNDY4NzV9LHsieCI6NTcuNjk1MzEyNSwieSI6NjE2LjA0Njg3NX1d" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M163.939,496.53L170.474,508.283C177.009,520.035,190.079,543.541,196.614,562.794C203.148,582.047,203.148,597.047,203.148,604.547L203.148,612.047" id="dce964c3d75e1f37dlight-L_C_F_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_C_F_0" data-points="W3sieCI6MTYzLjkzOTAxODY1NTcxMzgsInkiOjQ5Ni41Mjk3MzEzNDQyODYyM30seyJ4IjoyMDMuMTQ4NDM3NSwieSI6NTY3LjA0Njg3NX0seyJ4IjoyMDMuMTQ4NDM3NSwieSI6NjE2LjA0Njg3NX1d" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M423.147,220.892L445.005,234.986C466.864,249.079,510.58,277.266,532.439,300.436C554.297,323.607,554.297,341.76,554.297,350.837L554.297,359.914" id="dce964c3d75e1f37dlight-L_B_E_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_B_E_0" data-points="W3sieCI6NDIzLjE0Njg3MjQ2NjcxMDEsInkiOjIyMC44OTIxOTAwMzMyODk5Mn0seyJ4Ijo1NTQuMjk2ODc1LCJ5IjozMDUuNDUzMTI1fSx7IngiOjU1NC4yOTY4NzUsInkiOjM2My45MTQwNjI1fV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M517.006,471.295L500.024,487.254C483.043,503.212,449.08,535.13,432.099,556.588C415.117,578.047,415.117,589.047,415.117,594.547L415.117,600.047" id="dce964c3d75e1f37dlight-L_E_F2_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_F2_0" data-points="W3sieCI6NTE3LjAwNTg4NTQzMDIzMTIsInkiOjQ3MS4yOTQ5NDc5MzAyMzEyfSx7IngiOjQxNS4xMTcxODc1LCJ5Ijo1NjcuMDQ2ODc1fSx7IngiOjQxNS4xMTcxODc1LCJ5Ijo2MDQuMDQ2ODc1fV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M591.588,471.295L608.569,487.254C625.551,503.212,659.514,535.13,676.495,556.588C693.477,578.047,693.477,589.047,693.477,594.547L693.477,600.047" id="dce964c3d75e1f37dlight-L_E_H_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_H_0" data-points="W3sieCI6NTkxLjU4Nzg2NDU2OTc2ODgsInkiOjQ3MS4yOTQ5NDc5MzAyMzEyfSx7IngiOjY5My40NzY1NjI1LCJ5Ijo1NjcuMDQ2ODc1fSx7IngiOjY5My40NzY1NjI1LCJ5Ijo2MDQuMDQ2ODc1fV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37dlight_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A_B_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(130.421875, 305.453125)"&gt;&lt;g class="label" data-id="L_B_C_0" transform="translate(-12.4765625, -12)"&gt;&lt;foreignObject width="24.953125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(57.6953125, 567.046875)"&gt;&lt;g class="label" data-id="L_C_P_0" transform="translate(-12.4765625, -12)"&gt;&lt;foreignObject width="24.953125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(203.1484375, 567.046875)"&gt;&lt;g class="label" data-id="L_C_F_0" transform="translate(-9.0859375, -12)"&gt;&lt;foreignObject width="18.171875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;no&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(554.296875, 305.453125)"&gt;&lt;g class="label" data-id="L_B_E_0" transform="translate(-9.0859375, -12)"&gt;&lt;foreignObject width="18.171875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;no&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(415.1171875, 567.046875)"&gt;&lt;g class="label" data-id="L_E_F2_0" transform="translate(-12.4765625, -12)"&gt;&lt;foreignObject width="24.953125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(693.4765625, 567.046875)"&gt;&lt;g class="label" data-id="L_E_H_0" transform="translate(-9.0859375, -12)"&gt;&lt;foreignObject width="18.171875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;no&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-A-0" data-look="classic" transform="translate(375.5859375, 35)"&gt;&lt;rect class="basic label-container" style="" x="-104.75" y="-27" width="209.5" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-74.75, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="149.5" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;sandbox run finishes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-B-1" data-look="classic" transform="translate(375.5859375, 190.2265625)"&gt;&lt;polygon points="78.2265625,0 156.453125,-78.2265625 78.2265625,-156.453125 0,-78.2265625" class="label-container" transform="translate(-77.7265625, 78.2265625)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-39.2265625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="78.453125" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;json report&lt;br&gt;produced?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-C-3" data-look="classic" transform="translate(130.421875, 436.25)"&gt;&lt;polygon points="93.796875,0 187.59375,-93.796875 93.796875,-187.59375 0,-93.796875" class="label-container" transform="translate(-93.296875, 93.796875)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-54.796875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="109.59375" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;all hidden tests&lt;br&gt;passed?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-P-5" data-look="classic" transform="translate(57.6953125, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-49.6953125" y="-27" width="99.390625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-19.6953125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="39.390625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;PASS&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-F-7" data-look="classic" transform="translate(203.1484375, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-45.7578125" y="-27" width="91.515625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-15.7578125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="31.515625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;FAIL&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-E-9" data-look="classic" transform="translate(554.296875, 436.25)"&gt;&lt;polygon points="72.3359375,0 144.671875,-72.3359375 72.3359375,-144.671875 0,-72.3359375" class="label-container" transform="translate(-71.8359375, 72.3359375)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-33.3359375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="66.671875" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;exit code&lt;br&gt;nonzero?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-F2-11" data-look="classic" transform="translate(415.1171875, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-116.2109375" y="-39" width="232.421875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-86.2109375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="172.421875" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;FAIL&lt;br&gt;candidate broke the run&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37dlight-flowchart-H-13" data-look="classic" transform="translate(693.4765625, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-112.1484375" y="-39" width="224.296875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-82.1484375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="164.296875" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;HARNESS_ERROR&lt;br&gt;excluded from pass@k&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id="dce964c3d75e1f37dlight-drop-shadow" height="130%" width="130%"&gt;&lt;feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id="dce964c3d75e1f37dlight-drop-shadow-small" height="150%" width="150%"&gt;&lt;feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;linearGradient id="dce964c3d75e1f37dlight-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"&gt;&lt;stop offset="0%" stop-color="rgb(204, 216, 222)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;stop offset="100%" stop-color="rgb(28, 209, 255)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;/linearGradient&gt;&lt;/svg&gt;&lt;/div&gt;&#10; &lt;div class="not-prose diagram diagram-dark"&gt;&lt;svg id="dce964c3d75e1f37ddark" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 813.625px;" viewBox="0 0 813.625 690.046875" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#dce964c3d75e1f37ddark{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#dce964c3d75e1f37ddark .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#dce964c3d75e1f37ddark .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#dce964c3d75e1f37ddark .error-icon{fill:#a44141;}#dce964c3d75e1f37ddark .error-text{fill:#ddd;stroke:#ddd;}#dce964c3d75e1f37ddark .edge-thickness-normal{stroke-width:1px;}#dce964c3d75e1f37ddark .edge-thickness-thick{stroke-width:3.5px;}#dce964c3d75e1f37ddark .edge-pattern-solid{stroke-dasharray:0;}#dce964c3d75e1f37ddark .edge-thickness-invisible{stroke-width:0;fill:none;}#dce964c3d75e1f37ddark .edge-pattern-dashed{stroke-dasharray:3;}#dce964c3d75e1f37ddark .edge-pattern-dotted{stroke-dasharray:2;}#dce964c3d75e1f37ddark .marker{fill:lightgrey;stroke:lightgrey;}#dce964c3d75e1f37ddark .marker.cross{stroke:lightgrey;}#dce964c3d75e1f37ddark svg{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:16px;}#dce964c3d75e1f37ddark p{margin:0;}#dce964c3d75e1f37ddark .label{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;color:#ccc;}#dce964c3d75e1f37ddark .cluster-label text{fill:#F9FFFE;}#dce964c3d75e1f37ddark .cluster-label span{color:#F9FFFE;}#dce964c3d75e1f37ddark .cluster-label span p{background-color:transparent;}#dce964c3d75e1f37ddark .label text,#dce964c3d75e1f37ddark span{fill:#ccc;color:#ccc;}#dce964c3d75e1f37ddark .node rect,#dce964c3d75e1f37ddark .node circle,#dce964c3d75e1f37ddark .node ellipse,#dce964c3d75e1f37ddark .node polygon,#dce964c3d75e1f37ddark .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#dce964c3d75e1f37ddark .rough-node .label text,#dce964c3d75e1f37ddark .node .label text,#dce964c3d75e1f37ddark .image-shape .label,#dce964c3d75e1f37ddark .icon-shape .label{text-anchor:middle;}#dce964c3d75e1f37ddark .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#dce964c3d75e1f37ddark .rough-node .label,#dce964c3d75e1f37ddark .node .label,#dce964c3d75e1f37ddark .image-shape .label,#dce964c3d75e1f37ddark .icon-shape .label{text-align:center;}#dce964c3d75e1f37ddark .node.clickable{cursor:pointer;}#dce964c3d75e1f37ddark .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#dce964c3d75e1f37ddark .arrowheadPath{fill:lightgrey;}#dce964c3d75e1f37ddark .edgePath .path{stroke:lightgrey;stroke-width:1px;}#dce964c3d75e1f37ddark .flowchart-link{stroke:lightgrey;fill:none;}#dce964c3d75e1f37ddark .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#dce964c3d75e1f37ddark .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#dce964c3d75e1f37ddark .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#dce964c3d75e1f37ddark .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#dce964c3d75e1f37ddark .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#dce964c3d75e1f37ddark .cluster text{fill:#F9FFFE;}#dce964c3d75e1f37ddark .cluster span{color:#F9FFFE;}#dce964c3d75e1f37ddark div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#dce964c3d75e1f37ddark .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#dce964c3d75e1f37ddark rect.text{fill:none;stroke-width:0;}#dce964c3d75e1f37ddark .icon-shape,#dce964c3d75e1f37ddark .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#dce964c3d75e1f37ddark .icon-shape p,#dce964c3d75e1f37ddark .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#dce964c3d75e1f37ddark .icon-shape .label rect,#dce964c3d75e1f37ddark .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#dce964c3d75e1f37ddark .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#dce964c3d75e1f37ddark .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#dce964c3d75e1f37ddark .node .neo-node{stroke:#ccc;}#dce964c3d75e1f37ddark [data-look="neo"].node rect,#dce964c3d75e1f37ddark [data-look="neo"].cluster rect,#dce964c3d75e1f37ddark [data-look="neo"].node polygon{stroke:url(#dce964c3d75e1f37ddark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37ddark [data-look="neo"].swimlane.cluster rect{filter:none;}#dce964c3d75e1f37ddark [data-look="neo"].node path{stroke:url(#dce964c3d75e1f37ddark-gradient);stroke-width:1px;}#dce964c3d75e1f37ddark [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37ddark [data-look="neo"].node .neo-line path{stroke:#ccc;filter:none;}#dce964c3d75e1f37ddark [data-look="neo"].node circle{stroke:url(#dce964c3d75e1f37ddark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37ddark [data-look="neo"].node circle .state-start{fill:#000000;}#dce964c3d75e1f37ddark [data-look="neo"].icon-shape .icon{fill:url(#dce964c3d75e1f37ddark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37ddark [data-look="neo"].icon-shape .icon-neo path{stroke:url(#dce964c3d75e1f37ddark-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#dce964c3d75e1f37ddark :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="dce964c3d75e1f37ddark_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37ddark_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37ddark_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"&gt;&lt;path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37ddark_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"&gt;&lt;polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37ddark_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37ddark_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37ddark_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37ddark_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37ddark_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37ddark_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37ddark_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id="dce964c3d75e1f37ddark_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class="root"&gt;&lt;g class="clusters"&gt;&lt;/g&gt;&lt;g class="edgePaths"&gt;&lt;path d="M375.586,62L375.586,66.167C375.586,70.333,375.586,78.667,375.586,86.333C375.586,94,375.586,101,375.586,104.5L375.586,108" id="dce964c3d75e1f37ddark-L_A_B_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A_B_0" data-points="W3sieCI6Mzc1LjU4NTkzNzUsInkiOjYyfSx7IngiOjM3NS41ODU5Mzc1LCJ5Ijo4N30seyJ4IjozNzUuNTg1OTM3NSwieSI6MTEyfV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M322.371,215.238L290.379,230.274C258.388,245.31,194.405,275.381,162.413,295.917C130.422,316.453,130.422,327.453,130.422,332.953L130.422,338.453" id="dce964c3d75e1f37ddark-L_B_C_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_B_C_0" data-points="W3sieCI6MzIyLjM3MDUwODEwODg3NzA2LCJ5IjoyMTUuMjM3Njk1NjA4ODc3MX0seyJ4IjoxMzAuNDIxODc1LCJ5IjozMDUuNDUzMTI1fSx7IngiOjEzMC40MjE4NzUsInkiOjM0Mi40NTMxMjV9XQ==" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M96.905,496.53L90.37,508.283C83.835,520.035,70.765,543.541,64.23,562.794C57.695,582.047,57.695,597.047,57.695,604.547L57.695,612.047" id="dce964c3d75e1f37ddark-L_C_P_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_C_P_0" data-points="W3sieCI6OTYuOTA0NzMxMzQ0Mjg2MiwieSI6NDk2LjUyOTczMTM0NDI4NjIzfSx7IngiOjU3LjY5NTMxMjUsInkiOjU2Ny4wNDY4NzV9LHsieCI6NTcuNjk1MzEyNSwieSI6NjE2LjA0Njg3NX1d" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M163.939,496.53L170.474,508.283C177.009,520.035,190.079,543.541,196.614,562.794C203.148,582.047,203.148,597.047,203.148,604.547L203.148,612.047" id="dce964c3d75e1f37ddark-L_C_F_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_C_F_0" data-points="W3sieCI6MTYzLjkzOTAxODY1NTcxMzgsInkiOjQ5Ni41Mjk3MzEzNDQyODYyM30seyJ4IjoyMDMuMTQ4NDM3NSwieSI6NTY3LjA0Njg3NX0seyJ4IjoyMDMuMTQ4NDM3NSwieSI6NjE2LjA0Njg3NX1d" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M423.147,220.892L445.005,234.986C466.864,249.079,510.58,277.266,532.439,300.436C554.297,323.607,554.297,341.76,554.297,350.837L554.297,359.914" id="dce964c3d75e1f37ddark-L_B_E_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_B_E_0" data-points="W3sieCI6NDIzLjE0Njg3MjQ2NjcxMDEsInkiOjIyMC44OTIxOTAwMzMyODk5Mn0seyJ4Ijo1NTQuMjk2ODc1LCJ5IjozMDUuNDUzMTI1fSx7IngiOjU1NC4yOTY4NzUsInkiOjM2My45MTQwNjI1fV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M517.006,471.295L500.024,487.254C483.043,503.212,449.08,535.13,432.099,556.588C415.117,578.047,415.117,589.047,415.117,594.547L415.117,600.047" id="dce964c3d75e1f37ddark-L_E_F2_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_F2_0" data-points="W3sieCI6NTE3LjAwNTg4NTQzMDIzMTIsInkiOjQ3MS4yOTQ5NDc5MzAyMzEyfSx7IngiOjQxNS4xMTcxODc1LCJ5Ijo1NjcuMDQ2ODc1fSx7IngiOjQxNS4xMTcxODc1LCJ5Ijo2MDQuMDQ2ODc1fV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;path d="M591.588,471.295L608.569,487.254C625.551,503.212,659.514,535.13,676.495,556.588C693.477,578.047,693.477,589.047,693.477,594.547L693.477,600.047" id="dce964c3d75e1f37ddark-L_E_H_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_E_H_0" data-points="W3sieCI6NTkxLjU4Nzg2NDU2OTc2ODgsInkiOjQ3MS4yOTQ5NDc5MzAyMzEyfSx7IngiOjY5My40NzY1NjI1LCJ5Ijo1NjcuMDQ2ODc1fSx7IngiOjY5My40NzY1NjI1LCJ5Ijo2MDQuMDQ2ODc1fV0=" data-look="classic" marker-end="url(#dce964c3d75e1f37ddark_flowchart-v2-pointEnd)"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A_B_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(130.421875, 305.453125)"&gt;&lt;g class="label" data-id="L_B_C_0" transform="translate(-12.4765625, -12)"&gt;&lt;foreignObject width="24.953125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(57.6953125, 567.046875)"&gt;&lt;g class="label" data-id="L_C_P_0" transform="translate(-12.4765625, -12)"&gt;&lt;foreignObject width="24.953125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(203.1484375, 567.046875)"&gt;&lt;g class="label" data-id="L_C_F_0" transform="translate(-9.0859375, -12)"&gt;&lt;foreignObject width="18.171875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;no&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(554.296875, 305.453125)"&gt;&lt;g class="label" data-id="L_B_E_0" transform="translate(-9.0859375, -12)"&gt;&lt;foreignObject width="18.171875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;no&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(415.1171875, 567.046875)"&gt;&lt;g class="label" data-id="L_E_F2_0" transform="translate(-12.4765625, -12)"&gt;&lt;foreignObject width="24.953125" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel" transform="translate(693.4765625, 567.046875)"&gt;&lt;g class="label" data-id="L_E_H_0" transform="translate(-9.0859375, -12)"&gt;&lt;foreignObject width="18.171875" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;p&gt;no&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-A-0" data-look="classic" transform="translate(375.5859375, 35)"&gt;&lt;rect class="basic label-container" style="" x="-104.75" y="-27" width="209.5" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-74.75, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="149.5" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;sandbox run finishes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-B-1" data-look="classic" transform="translate(375.5859375, 190.2265625)"&gt;&lt;polygon points="78.2265625,0 156.453125,-78.2265625 78.2265625,-156.453125 0,-78.2265625" class="label-container" transform="translate(-77.7265625, 78.2265625)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-39.2265625, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="78.453125" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;json report&lt;br&gt;produced?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-C-3" data-look="classic" transform="translate(130.421875, 436.25)"&gt;&lt;polygon points="93.796875,0 187.59375,-93.796875 93.796875,-187.59375 0,-93.796875" class="label-container" transform="translate(-93.296875, 93.796875)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-54.796875, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="109.59375" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;all hidden tests&lt;br&gt;passed?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-P-5" data-look="classic" transform="translate(57.6953125, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-49.6953125" y="-27" width="99.390625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-19.6953125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="39.390625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;PASS&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-F-7" data-look="classic" transform="translate(203.1484375, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-45.7578125" y="-27" width="91.515625" height="54"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-15.7578125, -12)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="31.515625" height="24"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;FAIL&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-E-9" data-look="classic" transform="translate(554.296875, 436.25)"&gt;&lt;polygon points="72.3359375,0 144.671875,-72.3359375 72.3359375,-144.671875 0,-72.3359375" class="label-container" transform="translate(-71.8359375, 72.3359375)"&gt;&lt;/polygon&gt;&lt;g class="label" style="" transform="translate(-33.3359375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="66.671875" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;exit code&lt;br&gt;nonzero?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-F2-11" data-look="classic" transform="translate(415.1171875, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-116.2109375" y="-39" width="232.421875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-86.2109375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="172.421875" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;FAIL&lt;br&gt;candidate broke the run&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="node default" id="dce964c3d75e1f37ddark-flowchart-H-13" data-look="classic" transform="translate(693.4765625, 643.046875)"&gt;&lt;rect class="basic label-container" style="" x="-112.1484375" y="-39" width="224.296875" height="78"&gt;&lt;/rect&gt;&lt;g class="label" style="" transform="translate(-82.1484375, -24)"&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width="164.296875" height="48"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;HARNESS_ERROR&lt;br&gt;excluded from pass@k&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id="dce964c3d75e1f37ddark-drop-shadow" height="130%" width="130%"&gt;&lt;feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#FFFFFF"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id="dce964c3d75e1f37ddark-drop-shadow-small" height="150%" width="150%"&gt;&lt;feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#FFFFFF"&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;linearGradient id="dce964c3d75e1f37ddark-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"&gt;&lt;stop offset="0%" stop-color="#cccccc" stop-opacity="1"&gt;&lt;/stop&gt;&lt;stop offset="100%" stop-color="hsl(180, 0%, 18.3529411765%)" stop-opacity="1"&gt;&lt;/stop&gt;&lt;/linearGradient&gt;&lt;/svg&gt;&lt;/div&gt;&#10;&lt;p&gt;Across all 1,095 attempts, the harness error counter finished at zero. I want to be careful about what that proves. It does not prove the third bucket was unnecessary. It proves the infrastructure held, and I can only say that because the bucket existed to catch anything that did not. A counter that stays at zero is not vestigial. It is the evidence.&lt;/p&gt;&#10;&lt;p&gt;The scoring itself uses the unbiased pass@k estimator from the Codex paper rather than the naive &amp;ldquo;did any of the first k pass&amp;rdquo;, which is biased. That function validates k against the sample count and returns 1.0 when a pass is guaranteed by counting alone.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Rule 3: report what the sandbox does not guarantee&#10; &lt;div id="rule-3-report-what-the-sandbox-does-not-guarantee" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#rule-3-report-what-the-sandbox-does-not-guarantee" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Every run record carries a capability string:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;capabilities&amp;#34;: &amp;#34;network_isolated=True filesystem_confined=True memory_enforced=False&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;The honest part is the &lt;code&gt;False&lt;/code&gt;. macOS does not allow a hard memory cap the usual way, so the tool bounds memory by polling. It would have been easy to leave that field out, or worse, to print &lt;code&gt;True&lt;/code&gt; because polling exists. Instead the record says: this boundary is best-effort. If a reviewer ever asks whether a candidate could have exceeded memory limits undetected, the answer is in the data, not in my memory of how the sandbox worked.&lt;/p&gt;&#10;&lt;p&gt;A full record, for shape:&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;item_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;count-multiples-01&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;claude-haiku-4-5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;date&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2026-07-16&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;n_scored&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;n_pass&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;n_harness_error&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;sandbox_backend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;local&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;capabilities&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;network_isolated=True filesystem_confined=True memory_enforced=False&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;passk&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;gate_k&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;theta&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;resistant&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;construct_clean&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;combined_verdict&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;AI-RESISTANT (construct-valid)&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;Model and date on every record. Part 1 showed the same problem scoring 0.00, 0.05, and 0.20 on three different days. Without the stamp, those would have been one contradictory number. With it, they are three measurements.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Lessons&#10; &lt;div id="lessons" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#lessons" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A harness problem must never be silently scored. Abort loudly or record it as its own outcome, but never let it wear the model&amp;rsquo;s jersey.&lt;/li&gt;&#10;&lt;li&gt;Prove your test file with the reference solution before scoring anything. After that, every candidate error is legitimately the candidate&amp;rsquo;s.&lt;/li&gt;&#10;&lt;li&gt;Pass or fail is not enough. The third bucket exists so that crashes and flakes stop laundering themselves into your metrics.&lt;/li&gt;&#10;&lt;li&gt;Write down what your sandbox does not enforce. The embarrassing field in the record is the one that makes the record credible.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Part 3 covers the statistic that came back 0.00 when the agreement was 6 out of 8, and why the zero was correct.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;References&#10; &lt;div id="references" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#references" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://arxiv.org/abs/2107.03374" target="_blank" rel="noreferrer"&gt;Chen et al. (2021), &amp;ldquo;Evaluating Large Language Models Trained on Code&amp;rdquo;&lt;/a&gt; (the unbiased pass@k estimator)&lt;/li&gt;&#10;&lt;li&gt;Code shown above: &lt;code&gt;src/cs1_auditor/harness.py&lt;/code&gt; and &lt;code&gt;src/cs1_auditor/metrics.py&lt;/code&gt; in the cs1-auditor project, excerpted verbatim&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</content:encoded></item></channel></rss>