<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Azan Hyder</title>
    <description>The latest articles on DEV Community by Azan Hyder (@azankhyder).</description>
    <link>https://dev.to/azankhyder</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg</url>
      <title>DEV Community: Azan Hyder</title>
      <link>https://dev.to/azankhyder</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/azankhyder"/>
    <language>en</language>
    <item>
      <title>seeing some decent cities forming!</title>
      <dc:creator>Azan Hyder</dc:creator>
      <pubDate>Mon, 12 Oct 2026 13:50:47 +0000</pubDate>
      <link>https://dev.to/azankhyder/seeing-some-decent-cities-forming-gm3</link>
      <guid>https://dev.to/azankhyder/seeing-some-decent-cities-forming-gm3</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/azankhyder/i-turned-github-into-a-3d-city-then-pressed-a-and-saw-who-is-really-writing-the-code-4jn2" class="crayons-story__hidden-navigation-link"&gt;I turned GitHub into a 3D city&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/azankhyder" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" alt="azankhyder profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/azankhyder" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Azan Hyder
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Azan Hyder
                
                
              
              &lt;div id="story-author-preview-content-4833757" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/azankhyder" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Azan Hyder&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/azankhyder/i-turned-github-into-a-3d-city-then-pressed-a-and-saw-who-is-really-writing-the-code-4jn2" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 11&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/azankhyder/i-turned-github-into-a-3d-city-then-pressed-a-and-saw-who-is-really-writing-the-code-4jn2" id="article-link-4833757"&gt;
          I turned GitHub into a 3D city
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/github"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;github&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/azankhyder/i-turned-github-into-a-3d-city-then-pressed-a-and-saw-who-is-really-writing-the-code-4jn2" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;11&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/azankhyder/i-turned-github-into-a-3d-city-then-pressed-a-and-saw-who-is-really-writing-the-code-4jn2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              4&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>ADD UR GITHUB!!</title>
      <dc:creator>Azan Hyder</dc:creator>
      <pubDate>Sun, 11 Oct 2026 21:24:11 +0000</pubDate>
      <link>https://dev.to/azankhyder/add-ur-github-36cd</link>
      <guid>https://dev.to/azankhyder/add-ur-github-36cd</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/azankhyder/i-turned-github-into-a-3d-city-then-pressed-a-and-saw-who-is-really-writing-the-code-4jn2" class="crayons-story__hidden-navigation-link"&gt;I turned GitHub into a 3D city&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/azankhyder" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" alt="azankhyder profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/azankhyder" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Azan Hyder
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Azan Hyder
                
                
              
              &lt;div id="story-author-preview-content-4833757" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/azankhyder" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Azan Hyder&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/azankhyder/i-turned-github-into-a-3d-city-then-pressed-a-and-saw-who-is-really-writing-the-code-4jn2" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 11&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/azankhyder/i-turned-github-into-a-3d-city-then-pressed-a-and-saw-who-is-really-writing-the-code-4jn2" id="article-link-4833757"&gt;
          I turned GitHub into a 3D city
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/github"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;github&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/azankhyder/i-turned-github-into-a-3d-city-then-pressed-a-and-saw-who-is-really-writing-the-code-4jn2" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;11&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/azankhyder/i-turned-github-into-a-3d-city-then-pressed-a-and-saw-who-is-really-writing-the-code-4jn2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              4&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>I turned GitHub into a 3D city</title>
      <dc:creator>Azan Hyder</dc:creator>
      <pubDate>Sun, 11 Oct 2026 17:10:34 +0000</pubDate>
      <link>https://dev.to/azankhyder/i-turned-github-into-a-3d-city-then-pressed-a-and-saw-who-is-really-writing-the-code-4jn2</link>
      <guid>https://dev.to/azankhyder/i-turned-github-into-a-3d-city-then-pressed-a-and-saw-who-is-really-writing-the-code-4jn2</guid>
      <description>&lt;p&gt;Quick, do this before you read anything else:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;code&gt;github.com/&amp;lt;your-username&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Delete &lt;code&gt;github.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;commit.city&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Hit enter&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's the whole post. Thanks for reading. 👋&lt;/p&gt;

&lt;p&gt;...okay fine, you scrolled. Here's what you'd have seen:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F30jtjesqvbosswvsnfin.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F30jtjesqvbosswvsnfin.gif" alt="Vercel's GitHub org as a 3D city. Twelve months of commits replay in about twenty seconds: beams fly from the centre and land on islands of glowing towers while a counter climbs to 21,136." width="560" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;That's Vercel's last 12 months: **21,136 commits&lt;/em&gt;* replayed in about 20 seconds. Every one of those beams is a real commit.*&lt;/p&gt;

&lt;h2&gt;
  
  
  Wait, what am I looking at? 🏙️
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://commit.city" rel="noopener noreferrer"&gt;&lt;strong&gt;commit.city&lt;/strong&gt;&lt;/a&gt; takes any GitHub user, org or repo and builds it as a city, then replays the last year of commits as a time-lapse.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🏝️ &lt;strong&gt;Islands are repos.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🏢 &lt;strong&gt;Towers are files.&lt;/strong&gt; Height is line count, colour is file type.&lt;/li&gt;
&lt;li&gt;💥 &lt;strong&gt;Beams are commits.&lt;/strong&gt; They fly in, and the files they touched light up.&lt;/li&gt;
&lt;li&gt;🌙 &lt;strong&gt;Repos cool down&lt;/strong&gt; as they go quiet: hot, active, cooling, dormant, abandoned. &lt;em&gt;(We all have that one island.)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;🕐 &lt;strong&gt;Day and night follow your real timezone.&lt;/strong&gt; It's read from your own commits, so yes, it knows about the 3am pushes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's no sign-up and nothing to install. Your first visit builds the city while you watch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcagycqlkadilnvhp0n3q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcagycqlkadilnvhp0n3q.png" alt="Two-row meme. Top row, a person crossing their arms in refusal next to a grid of tiny green squares: your whole year of work as tiny green squares. Bottom row, a heart-eyes face next to the glowing 3D city: your year as a city where every commit is a beam of light." width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose your fighter 🎮
&lt;/h2&gt;

&lt;p&gt;All of these are already built, so they open instantly:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Click&lt;/th&gt;
&lt;th&gt;What you get&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://commit.city/torvalds" rel="noopener noreferrer"&gt;commit.city/torvalds&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Linus's year&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://commit.city/sindresorhus" rel="noopener noreferrer"&gt;commit.city/sindresorhus&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2,696 commits in one year. Respect.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://commit.city/karpathy" rel="noopener noreferrer"&gt;commit.city/karpathy&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Karpathy's repos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://commit.city/vercel" rel="noopener noreferrer"&gt;commit.city/vercel&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;a whole org: 23 repos, 21,136 commits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://commit.city/facebook/react" rel="noopener noreferrer"&gt;commit.city/facebook/react&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;one repo, every contributor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://commit.city/denoland/deno" rel="noopener noreferrer"&gt;commit.city/denoland/deno&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;👀 hold that thought&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://commit.city/events" rel="noopener noreferrer"&gt;commit.city/events&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;all of GitHub, live&lt;/strong&gt;: the public firehose as a city&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Now press A 🅰️
&lt;/h2&gt;

&lt;p&gt;This is the part I actually built it for.&lt;/p&gt;

&lt;p&gt;More and more commits aren't written by people anymore. Press &lt;strong&gt;A&lt;/strong&gt; in any city and the &lt;strong&gt;agent lens&lt;/strong&gt; turns on: every beam is coloured by who sent it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔵 &lt;strong&gt;people&lt;/strong&gt; are cyan&lt;/li&gt;
&lt;li&gt;🟠 &lt;strong&gt;bots&lt;/strong&gt; are amber (dependabot, renovate, github-actions and friends)&lt;/li&gt;
&lt;li&gt;🌈 &lt;strong&gt;each AI agent gets its own colour&lt;/strong&gt;: Claude, Copilot, Cursor, Codex, Devin, Jules, Gemini and more (17 so far)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F64fm2a67pco024vfieqe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F64fm2a67pco024vfieqe.png" alt="Meme over a dark 3D city: POV, you press A and find out your solo project had co-authors. A big A key sits bottom left and a pair of eyes bottom right." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How does it know? It reads the receipts the agents leave behind:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The author.&lt;/strong&gt; Some agents commit as themselves, like &lt;code&gt;copilot-swe-agent[bot]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The message.&lt;/strong&gt; A &lt;code&gt;Co-authored-by:&lt;/code&gt; trailer, or a footer like &lt;em&gt;Generated with Claude Code&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bots.&lt;/strong&gt; Any &lt;code&gt;[bot]&lt;/code&gt; account.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everything else counts as human. Agent work that isn't disclosed looks human, so the number is a &lt;strong&gt;floor, not an audit&lt;/strong&gt;. &lt;em&gt;(Your secret's safe. For now.)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pop quiz 🧠
&lt;/h2&gt;

&lt;p&gt;Every number here comes from the live cities, last 12 months. No peeking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q1. Which of these has the biggest share of commits written by AI agents?&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;torvalds&lt;/code&gt; · &lt;code&gt;vercel&lt;/code&gt; · &lt;code&gt;facebook/react&lt;/code&gt; · &lt;code&gt;denoland/deno&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  🥁 Reveal the answer
  &lt;br&gt;
&lt;strong&gt;denoland/deno&lt;/strong&gt;, at &lt;strong&gt;14.3%&lt;/strong&gt;: 430 of 2,997 commits.

&lt;p&gt;And of those 430, &lt;strong&gt;404 are Claude&lt;/strong&gt;. Four hundred and four. I couldn't have planned that better. The rest: Copilot 21, Cursor 3, Codex 2.&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg8jmd5g1pzks13dfs11p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg8jmd5g1pzks13dfs11p.png" alt="Deno's city with the agent lens on. Top caption: Deno's last 12 months. Bottom caption: 404 commits signed by Claude. In the middle, a red terminal label: ERROR 404, HUMAN NOT FOUND." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Relax, Deno fans. 2,554 of those commits are human. The humans were found.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q2. How many agent commits does torvalds have?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  🥁 Reveal the answer
  &lt;br&gt;
&lt;strong&gt;Zero.&lt;/strong&gt; 757 commits, 0 agents, 0 bots. Same for sindresorhus: &lt;strong&gt;2,696 commits, all human.&lt;/strong&gt;

&lt;p&gt;Built different. 🫡 (Reminder: floor, not audit. The lens only sees agents that sign their work.)&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q3. Vercel's 21,136 commits: what share came from bots (not agents, plain bots)?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  🥁 Reveal the answer
  &lt;br&gt;
&lt;strong&gt;19.5%&lt;/strong&gt;: 4,127 bot commits, plus &lt;strong&gt;9.2%&lt;/strong&gt; from AI agents (1,939). So about &lt;strong&gt;seven in ten&lt;/strong&gt; Vercel commits last year came from a person. Of the agent commits, &lt;strong&gt;1,541 were Claude&lt;/strong&gt;, then Cursor 283, Copilot 94 and v0 21.&lt;br&gt;


&lt;p&gt;&lt;/p&gt;

&lt;p&gt;How'd you score? Tell me in the comments. Honour system. 🫡&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz0ksbkbar7nc64d6t1ua.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz0ksbkbar7nc64d6t1ua.png" alt="Four-row meme, left column text, right column ever-bigger brains. Row one: git log, small brain. Row two: git log --graph --oneline --all, bigger brain. Row three: staring at your contribution graph, glowing brain. Row four: flying a drone over your repos while the AI commits glow, mind-blown face over the 3D city." width="800" height="832"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Things to press 🕹️
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;drag · right-drag · scroll&lt;/td&gt;
&lt;td&gt;orbit · pan · zoom&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;click a repo&lt;/td&gt;
&lt;td&gt;inspect it (Esc goes back)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Space&lt;/td&gt;
&lt;td&gt;play / pause&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 to 6&lt;/td&gt;
&lt;td&gt;speed, from 1 hour/sec up to 2 weeks/sec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;A&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;the agent lens 🌈&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;R&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;record a clip of your year (MP4/WebM, wide, vertical or square)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O · L · H&lt;/td&gt;
&lt;td&gt;auto-orbit · labels · hide the UI&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;R&lt;/strong&gt; is the fun one. The year replays in 10, 20 or 30 seconds while the camera orbits, and your browser records it. Nothing gets uploaded. That's how I made the GIF at the top.&lt;/p&gt;

&lt;p&gt;Also, &lt;strong&gt;Share → copy this moment&lt;/strong&gt; gives you a link that reopens at the same time, from the same camera angle. Great for "look at THIS day" moments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fshv00eca0cu32ml7lxau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fshv00eca0cu32ml7lxau.png" alt="Meme. Manager: so what did you actually ship this year? Me, sending a link and praying they don't read the URL: a screenshot of the Vercel city at 21,136 commits, with commit.city/vercel highlighted in yellow." width="800" height="603"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Put your city on your profile 🪪
&lt;/h2&gt;

&lt;p&gt;Every city has a README card. Paste this into your GitHub profile README and swap &lt;code&gt;YOU&lt;/code&gt; for your username:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;![my commit city&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://commit.city/api/card?t=YOU&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;](https://commit.city/YOU)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It's a self-contained SVG, so GitHub renders it, and the towers rise as it loads. Here's a snapshot of Vercel's (on GitHub it's live):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://commit.city/vercel" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmr86lpaq1049j03enjsy.png" alt="Vercel's commit.city card: 21k commits, 23 repos, 9.2M lines standing, and the org's repos drawn as a small isometric city." width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  How it works (for the nerds 🤓)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The hosted builder reads &lt;strong&gt;public repos only&lt;/strong&gt;, with a read-only token that can't see anything private.&lt;/li&gt;
&lt;li&gt;It replays the git history into a compact JSON city, which gets cached. The first visitor waits a few seconds (a few minutes for a huge org). Everyone after that gets it instantly.&lt;/li&gt;
&lt;li&gt;The renderer is &lt;strong&gt;three.js&lt;/strong&gt;. The towers keep their footprints over time, so you can watch a single file grow, shrink, move or die.&lt;/li&gt;
&lt;li&gt;The agent rules for all 17 agents live in one file, &lt;code&gt;schema/agents.json&lt;/code&gt;. Both test suites check it. &lt;strong&gt;Adding an agent is a one-file PR.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Got private repos?&lt;/strong&gt; The same pipeline ships as a &lt;strong&gt;GitHub Action&lt;/strong&gt; and a &lt;strong&gt;stdlib-only Python CLI&lt;/strong&gt;. Either one writes a single offline HTML file. Private repos stay anonymised: names become &lt;code&gt;private/repo-N&lt;/code&gt; and files become &lt;code&gt;dir3/file17.ts&lt;/code&gt;, while the sizes and timing stay real.&lt;/p&gt;

&lt;p&gt;It's open source, MIT:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/azank1" rel="noopener noreferrer"&gt;
        azank1
      &lt;/a&gt; / &lt;a href="https://github.com/azank1/commit-city" rel="noopener noreferrer"&gt;
        commit-city
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Your GitHub, as a living 3D city. Swap github.com → commit.city on any user, org or repo and watch a year of commits build it.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;p&gt;&lt;a href="https://commit.city/sindresorhus" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fazank1%2Fcommit-city%2FHEAD%2Fdocs%2Ftimelapse.webp" alt="A year of commits replayed as a 3D city: islands are repos, towers are files, beams are commits" width="100%"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;commit.city&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Your GitHub, as a living city.&lt;/strong&gt;&lt;br&gt;
Swap &lt;code&gt;github.com&lt;/code&gt; for &lt;code&gt;commit.city&lt;/code&gt; on any user, org or repo and watch a year of git history replay
commit by commit, as a 3D city you can scrub, fly through and share.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://commit.city" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Open commit.city →&lt;/strong&gt;&lt;/a&gt; &amp;nbsp;·&amp;nbsp; &lt;a href="https://commit.city/events" rel="nofollow noopener noreferrer"&gt;GitHub, live&lt;/a&gt; &amp;nbsp;·&amp;nbsp; &lt;a href="https://github.com/azank1/commit-city#humans-bots-and-ai-agents" rel="noopener noreferrer"&gt;Agent lens&lt;/a&gt; &amp;nbsp;·&amp;nbsp; &lt;a href="https://github.com/azank1/commit-city#put-it-on-your-profile" rel="noopener noreferrer"&gt;README card&lt;/a&gt; &amp;nbsp;·&amp;nbsp; &lt;a href="https://github.com/azank1/commit-city#private-repos-run-it-yourself" rel="noopener noreferrer"&gt;Private repos&lt;/a&gt; &amp;nbsp;·&amp;nbsp; &lt;a href="https://github.com/azank1/commit-city#how-it-works" rel="noopener noreferrer"&gt;How it works&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://commit.city" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9f98ee9841d25ee70d3e76dba1490de9b15dd9c1262cc06ce3f05ddf95a24db0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7472795f69742d636f6d6d69742e636974792d3566643366333f7374796c653d666c61742d737175617265" alt="try it"&gt;&lt;/a&gt;
&lt;a href="https://github.com/azank1/commit-city/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/aad9fca5bc7761e79513ea60f0c9ec2d9d9ed499ae089868a316187b69c957c1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f617a616e6b312f636f6d6d69742d636974792f63692e796d6c3f6272616e63683d6d61696e267374796c653d666c61742d737175617265266c6162656c3d6369" alt="ci"&gt;&lt;/a&gt;
&lt;a href="https://github.com/azank1/commit-city/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ce63d0ce9c8b708b381345a02ee1ed5a2f5e4fac8669abd14471d548566c8356/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d3566643366333f7374796c653d666c61742d737175617265" alt="license"&gt;&lt;/a&gt;
&lt;a href="https://github.com/azank1/commit-city/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4b4d4619f5532a649b67bd597468c5e20f3b8966f0c124c16f02527fbe1bddea/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f617a616e6b312f636f6d6d69742d636974793f7374796c653d666c61742d73717561726526636f6c6f723d666664343739" alt="stars"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Try it: swap the domain&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;On GitHub&lt;/th&gt;
&lt;th&gt;On commit.city&lt;/th&gt;
&lt;th&gt;What you get&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;github.com/torvalds&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://commit.city/torvalds" rel="nofollow noopener noreferrer"&gt;&lt;code&gt;commit.city/torvalds&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;a person's year: every public repo they committed to, wired to their avatar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;github.com/vercel&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://commit.city/vercel" rel="nofollow noopener noreferrer"&gt;&lt;code&gt;commit.city/vercel&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;an org: its 24 busiest repos with everyone's commits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;github.com/facebook/react&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://commit.city/facebook/react" rel="nofollow noopener noreferrer"&gt;&lt;code&gt;commit.city/facebook/react&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;one repo, every contributor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;

&lt;td&gt;&lt;a href="https://commit.city/denoland/deno?all=1" rel="nofollow noopener noreferrer"&gt;&lt;code&gt;commit.city/denoland/deno?all=1&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;a repo's entire history, from the first commit&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;There's no sign-up and nothing to install. The first visit builds the city while you watch, repo by repo. That takes a few seconds for a small account and a few minutes for a big one. After that it's…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/azank1/commit-city" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Your turn 🫵
&lt;/h2&gt;

&lt;p&gt;Drop your &lt;code&gt;commit.city/&amp;lt;you&amp;gt;&lt;/code&gt; link in the comments, with &lt;strong&gt;A&lt;/strong&gt; pressed.&lt;/p&gt;

&lt;p&gt;Highest agent percentage wins absolutely nothing. Lowest gets the Linus badge. 🏅&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>github</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>an engagement bot commented on this article.. and it posted its reasoning trace instead of the comment lol. It probably thought the article was a video.. it leaked its rules and got cut off mid word.. Nothing checked the output before it left.. weird!</title>
      <dc:creator>Azan Hyder</dc:creator>
      <pubDate>Fri, 25 Sep 2026 12:50:50 +0000</pubDate>
      <link>https://dev.to/azankhyder/an-engagement-bot-commented-on-this-article-and-it-posted-its-reasoning-trace-instead-of-the-1mpk</link>
      <guid>https://dev.to/azankhyder/an-engagement-bot-commented-on-this-article-and-it-posted-its-reasoning-trace-instead-of-the-1mpk</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/guobug/from-seo-to-geo-optimizing-for-ai-search-engines-1af1" class="crayons-story__hidden-navigation-link"&gt;From SEO to GEO: Optimizing for AI Search Engines&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/guobug" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4134245%2F6051e048-d0f8-4de3-af2d-fb841121ccf5.png" alt="guobug profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/guobug" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Guo Qiang
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Guo Qiang
                
                
              
              &lt;div id="story-author-preview-content-4742096" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/guobug" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4134245%2F6051e048-d0f8-4de3-af2d-fb841121ccf5.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Guo Qiang&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/guobug/from-seo-to-geo-optimizing-for-ai-search-engines-1af1" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/guobug/from-seo-to-geo-optimizing-for-ai-search-engines-1af1" id="article-link-4742096"&gt;
          From SEO to GEO: Optimizing for AI Search Engines
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/seo"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;seo&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/guobug/from-seo-to-geo-optimizing-for-ai-search-engines-1af1" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/guobug/from-seo-to-geo-optimizing-for-ai-search-engines-1af1#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              2&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            10 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>https://github.com/azank1/code-desk-cli</title>
      <dc:creator>Azan Hyder</dc:creator>
      <pubDate>Fri, 25 Sep 2026 08:14:29 +0000</pubDate>
      <link>https://dev.to/azankhyder/httpsgithubcomazank1code-desk-cli-k24</link>
      <guid>https://dev.to/azankhyder/httpsgithubcomazank1code-desk-cli-k24</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/azankhyder/a-stop-rule-that-trusts-one-score-is-worse-than-a-dumb-budget-428c" class="crayons-story__hidden-navigation-link"&gt;When should an agent stop?&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/azankhyder" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" alt="azankhyder profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/azankhyder" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Azan Hyder
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Azan Hyder
                
                
              
              &lt;div id="story-author-preview-content-4740120" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/azankhyder" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Azan Hyder&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/azankhyder/a-stop-rule-that-trusts-one-score-is-worse-than-a-dumb-budget-428c" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/azankhyder/a-stop-rule-that-trusts-one-score-is-worse-than-a-dumb-budget-428c" id="article-link-4740120"&gt;
          When should an agent stop?
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/machinelearning"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;machinelearning&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/research"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;research&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/azankhyder/a-stop-rule-that-trusts-one-score-is-worse-than-a-dumb-budget-428c" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;13&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/azankhyder/a-stop-rule-that-trusts-one-score-is-worse-than-a-dumb-budget-428c#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              4&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            9 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://github.com/azank1/code-desk-cli" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fopengraph.githubassets.com%2F485f421e716b30d748651b25de52a156c2f7178fac90d99fe335bf932c1b557a%2Fazank1%2Fcode-desk-cli" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://github.com/azank1/code-desk-cli" rel="noopener noreferrer" class="c-link"&gt;
            GitHub - azank1/code-desk-cli: Run an office of AI coding sessions from your terminal: named desks, two hats, gated handoffs, and a token meter. · GitHub
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Run an office of AI coding sessions from your terminal: named desks, two hats, gated handoffs, and a token meter. - azank1/code-desk-cli
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.githubassets.com%2Ffavicons%2Ffavicon.svg"&gt;
          github.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>When should an agent stop?</title>
      <dc:creator>Azan Hyder</dc:creator>
      <pubDate>Fri, 25 Sep 2026 07:57:42 +0000</pubDate>
      <link>https://dev.to/azankhyder/a-stop-rule-that-trusts-one-score-is-worse-than-a-dumb-budget-428c</link>
      <guid>https://dev.to/azankhyder/a-stop-rule-that-trusts-one-score-is-worse-than-a-dumb-budget-428c</guid>
      <description>&lt;p&gt;&lt;em&gt;Field note 009. A replication of a published agent-loop benchmark, and what it hides.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Abstract
&lt;/h2&gt;

&lt;p&gt;Every agent loop has to decide when to stop. The usual options are a fixed &lt;code&gt;max_iterations&lt;/code&gt; or letting the agent declare itself done. In June I published a small benchmark with &lt;a href="https://github.com/azank1/cdv" rel="noopener noreferrer"&gt;CDV&lt;/a&gt;, an open-source judge for coding agents, showing that a Bayesian adaptive stop rule used 41% fewer steps than a fixed six-step budget while reaching the quality bar on 99.7% of tasks. This note replicates that result on today's code (it reproduces to the digit), then extends it. Three findings. &lt;strong&gt;(1)&lt;/strong&gt; The adaptive policy ties a plain threshold rule ("stop at the first score ≥ 0.80") everywhere, and it does so by construction: the threshold guard runs first in the guard stack. &lt;strong&gt;(2)&lt;/strong&gt; Both collapse as soon as the judge's score is noisy. At a per-step noise of σ = 0.10, the loop &lt;em&gt;believes&lt;/em&gt; it reached the bar in 99.5% of runs and &lt;em&gt;actually&lt;/em&gt; reached it in 71%. A fixed budget of six, which never reads the score, holds 93% at every noise level. &lt;strong&gt;(3)&lt;/strong&gt; A one-line fix, requiring two consecutive scores over the bar, restores 97% true reach at σ = 0.10 for 1.4 extra steps. The published headline was true and beside the point: the decision is only as good as the score it trusts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;An agent loop is a repeat-until: act, evaluate, decide whether to go again. The deciding part is where things go wrong. A fixed &lt;code&gt;max_iterations&lt;/code&gt; is either too small for hard tasks or wasteful for easy ones. Letting the agent grade itself means the entity deciding to stop is the entity being judged, and agents optimise &lt;em&gt;reported&lt;/em&gt; progress.&lt;/p&gt;

&lt;p&gt;CDV's answer was to separate the two. Each step the agent claims is scored by a judge, and a policy decides from the score history whether to continue. The policy is a stack of guards evaluated in order, first stop wins: a score-threshold guard, a plateau guard (last three scores within 0.01 of each other), a Bayesian guard (stop when the learned expected improvement over the remaining steps can't close the gap to the bar), then budget, wall-clock, token and repeated-output guards.&lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;The benchmark I shipped with it compared four strategies on a synthetic task set. This note asks two questions the benchmark didn't: &lt;em&gt;what is the adaptive policy actually adding over the simplest rule?&lt;/em&gt; and &lt;em&gt;what happens when the judge is wrong?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prior work, briefly
&lt;/h2&gt;

&lt;p&gt;The published table (June 2026, commit &lt;code&gt;b8a219f&lt;/code&gt; in the public repo):&lt;sup&gt;2&lt;/sup&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Strategy&lt;/th&gt;
&lt;th&gt;Mean steps&lt;/th&gt;
&lt;th&gt;Mean final score&lt;/th&gt;
&lt;th&gt;% reaching 0.80&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;fixed (budget = 2)&lt;/td&gt;
&lt;td&gt;2.00&lt;/td&gt;
&lt;td&gt;0.698&lt;/td&gt;
&lt;td&gt;34.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fixed (budget = 6)&lt;/td&gt;
&lt;td&gt;6.00&lt;/td&gt;
&lt;td&gt;0.939&lt;/td&gt;
&lt;td&gt;94.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;threshold (reactive)&lt;/td&gt;
&lt;td&gt;3.56&lt;/td&gt;
&lt;td&gt;0.852&lt;/td&gt;
&lt;td&gt;100.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;adaptive (CDV)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3.56&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.852&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;99.7%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Read the third and fourth rows again. They are the same row. The headline compared row 4 to row 2 and said "41% fewer steps". It did not say that the plain threshold rule was already there, with nothing learned and nothing Bayesian about it. The benchmark script was later removed in a repository cleanup; it's still in the public history, and this note restores it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The simulation&lt;/strong&gt; is the original one, unchanged. Each task has a hidden quality curve with diminishing returns, &lt;code&gt;q(t) = 1 − (1 − s₀)·e^(−r(t−1))&lt;/code&gt;, with &lt;code&gt;s₀&lt;/code&gt; and &lt;code&gt;r&lt;/code&gt; drawn per task from three task types (easy, medium, hard) that converge at different depths. The bar is 0.80; the cap is 8 steps. What the loop sees is &lt;code&gt;q(t)&lt;/code&gt; plus Gaussian noise. The original used σ = 0.02.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Replication.&lt;/strong&gt; I ran the restored script against the current package (&lt;code&gt;cdv&lt;/code&gt; at &lt;code&gt;356d496&lt;/code&gt;, Python 3.12.3). It reproduces the table above exactly.&lt;sup&gt;3&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extension.&lt;/strong&gt; Three sweeps, each over 10 seeds × 300 test tasks, reported as mean ± 1 sd:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;Noise.&lt;/em&gt; σ ∈ {0.02, 0.05, 0.10, 0.15, 0.20}. The key metric changes: &lt;strong&gt;true reach&lt;/strong&gt; is whether the &lt;em&gt;hidden&lt;/em&gt; quality was ≥ 0.80 at the step the loop stopped, as opposed to &lt;strong&gt;observed reach&lt;/strong&gt;, whether the noisy score was. The original benchmark only measured the second.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Cold start.&lt;/em&gt; At σ = 0.10, the adaptive policy warmed on 0, 10, 30, 100 or 300 prior tasks before the test split.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Cheap fixes.&lt;/em&gt; Three rules that need no learning: &lt;strong&gt;confirm-2&lt;/strong&gt; (stop at the first pair of consecutive scores ≥ 0.80), &lt;strong&gt;smooth-2&lt;/strong&gt; (stop when the mean of the last two scores ≥ 0.80), and &lt;strong&gt;margin&lt;/strong&gt; (stop at the first score ≥ 0.85).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No LLM is called anywhere. This is a study of the decision policy given a score, not of any model's quality. The scripts, raw results and figures are in the artifact folder linked at the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Adaptive equals threshold, by construction
&lt;/h3&gt;

&lt;p&gt;Across all five noise levels the adaptive policy and the threshold rule are within one standard deviation of each other on every metric (Figure 1, the two overlapping lines). The reason is in the code, not the statistics: the guard stack evaluates &lt;code&gt;ScoreThresholdGuard&lt;/code&gt; first.&lt;sup&gt;1&lt;/sup&gt; The adaptive policy can therefore stop &lt;em&gt;earlier&lt;/em&gt; than the threshold rule (via plateau or Bayesian guards) but never &lt;em&gt;later&lt;/em&gt;, and in this simulation it almost never fires earlier once the priors are warm. Whatever the Bayesian machinery is worth, this benchmark cannot show it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft1jcljuca8fw0a98l2rp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft1jcljuca8fw0a98l2rp.png" alt="Figure 1: true reach against judge noise. Threshold and adaptive fall together from 93% to 55%; the fixed six-step budget stays at 93%; confirm-2 stays above 93% throughout." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Trusting one score collapses under noise
&lt;/h3&gt;

&lt;p&gt;Table 1 is the noise sweep. The observed reach for the threshold rule is ~99.5% at every σ: the loop always &lt;em&gt;saw&lt;/em&gt; a score over the bar before it stopped. True reach falls from 93.4% at σ = 0.02 to 54.8% at σ = 0.20.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;σ&lt;/th&gt;
&lt;th&gt;fixed 6, true&lt;/th&gt;
&lt;th&gt;threshold, steps&lt;/th&gt;
&lt;th&gt;threshold, observed&lt;/th&gt;
&lt;th&gt;threshold, &lt;strong&gt;true&lt;/strong&gt;
&lt;/th&gt;
&lt;th&gt;adaptive, &lt;strong&gt;true&lt;/strong&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0.02&lt;/td&gt;
&lt;td&gt;92.8 ± 1.1&lt;/td&gt;
&lt;td&gt;3.66&lt;/td&gt;
&lt;td&gt;99.9&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;93.4 ± 1.4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;92.8 ± 1.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.05&lt;/td&gt;
&lt;td&gt;92.8 ± 1.1&lt;/td&gt;
&lt;td&gt;3.66&lt;/td&gt;
&lt;td&gt;99.7&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;84.6 ± 2.0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;84.1 ± 1.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.10&lt;/td&gt;
&lt;td&gt;92.8 ± 1.1&lt;/td&gt;
&lt;td&gt;3.54&lt;/td&gt;
&lt;td&gt;99.5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;71.2 ± 2.7&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;70.9 ± 2.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.15&lt;/td&gt;
&lt;td&gt;92.8 ± 1.1&lt;/td&gt;
&lt;td&gt;3.38&lt;/td&gt;
&lt;td&gt;99.5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;61.4 ± 3.3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;61.0 ± 3.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.20&lt;/td&gt;
&lt;td&gt;92.8 ± 1.1&lt;/td&gt;
&lt;td&gt;3.23&lt;/td&gt;
&lt;td&gt;99.6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;54.8 ± 3.6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;54.5 ± 3.5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Table 1. Percent of tasks reaching the bar, mean ± sd over 10 seeds. "Observed" is what the loop believed; "true" is what was the case.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Notice the step counts &lt;em&gt;fall&lt;/em&gt; as noise rises. The loop isn't just wrong more often; it's wrong faster. A noisy judge produces a lucky score sooner, and the rule takes the first one it sees.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffco231c43888c9ryt4qg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffco231c43888c9ryt4qg.png" alt="Figure 2: observed versus true reach for the threshold rule. The observed line is flat at ~99.5%; the true line falls to 55%. The shaded gap is labelled " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The fixed six-step budget, the strategy the original headline was beating, holds 92.8% true reach at every noise level, because it never reads the score. Above σ ≈ 0.03, the dumb budget delivers more real quality than either learned rule. It costs 2.3 more steps per task to do it.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Bayesian guard is harmful before it is warm
&lt;/h3&gt;

&lt;p&gt;At σ = 0.10 with no warm-up history, the adaptive policy stops after 2.79 steps on average and reaches the bar truly on 50% of tasks, worse than the threshold rule (71%) and far worse than the fixed budget (93%). It needs about 30 prior tasks to catch up (Figure 3). The &lt;code&gt;should_continue&lt;/code&gt; rule falls back to a plain threshold check for the first three observations, then starts trusting expected-improvement estimates that are still wide.&lt;sup&gt;4&lt;/sup&gt; In a real deployment that is the first sprint on every new task type.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvkst9ptm2sp4zld6709q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvkst9ptm2sp4zld6709q.png" alt="Figure 3: true reach of the adaptive policy against warm-up tasks, 0 to 300. It climbs from 50% to 71% and flattens at about 30 tasks; the threshold rule's 71.2% is a dashed line." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. A one-line fix
&lt;/h3&gt;

&lt;p&gt;Confirm-2, stopping only when two consecutive scores clear the bar, is the best rule tested at every noise level (Table 2). At σ = 0.10 it reaches 97.2% true reach in 4.91 steps: more real quality than the fixed budget, for one step less. It costs 1.4 steps more than the threshold rule and buys 26 points of true reach.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;σ&lt;/th&gt;
&lt;th&gt;threshold&lt;/th&gt;
&lt;th&gt;confirm-2&lt;/th&gt;
&lt;th&gt;smooth-2&lt;/th&gt;
&lt;th&gt;margin +0.05&lt;/th&gt;
&lt;th&gt;fixed 6&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0.02&lt;/td&gt;
&lt;td&gt;93.4 (3.66)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.0 (4.65)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;100.0 (4.28)&lt;/td&gt;
&lt;td&gt;99.9 (4.19)&lt;/td&gt;
&lt;td&gt;92.8 (6)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.05&lt;/td&gt;
&lt;td&gt;84.6 (3.66)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;99.6 (4.73)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;97.8 (4.27)&lt;/td&gt;
&lt;td&gt;96.5 (4.19)&lt;/td&gt;
&lt;td&gt;92.8 (6)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.10&lt;/td&gt;
&lt;td&gt;71.2 (3.54)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;97.2 (4.91)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;92.8 (4.25)&lt;/td&gt;
&lt;td&gt;85.1 (4.03)&lt;/td&gt;
&lt;td&gt;92.8 (6)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.15&lt;/td&gt;
&lt;td&gt;61.4 (3.38)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;95.4 (5.06)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;88.7 (4.28)&lt;/td&gt;
&lt;td&gt;73.9 (3.81)&lt;/td&gt;
&lt;td&gt;92.8 (6)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.20&lt;/td&gt;
&lt;td&gt;54.8 (3.23)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;93.7 (5.16)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;85.3 (4.28)&lt;/td&gt;
&lt;td&gt;64.7 (3.59)&lt;/td&gt;
&lt;td&gt;92.8 (6)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Table 2. True reach % (mean steps). Margin, the intuitive fix, is the weakest: a higher bar is still one noisy sample.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjltuurerfta04g8iz6jl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjltuurerfta04g8iz6jl.png" alt="Figure 4: steps spent against true reach at σ = 0.10, one point per strategy. Threshold and adaptive sit together at 3.5 steps, 71%. Confirm-2 is at 4.9 steps, 97%. Fixed six is at 6 steps, 93%." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Findings
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The published comparison was against the wrong baseline.&lt;/strong&gt; Adaptive beat a fixed budget; it tied the simplest reactive rule, and the guard order guarantees it can't do otherwise here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The decision is only as good as the score.&lt;/strong&gt; A loop that stops on one crossing of the bar is fooled at a rate set by the judge's noise, and it is fooled &lt;em&gt;faster&lt;/em&gt; as the noise grows. Observed success stays flat while real success falls. Any harness that reports "reached the bar" from a single judge score is reporting the judge's variance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning has a cold-start cost that a fixed rule doesn't.&lt;/strong&gt; Before ~30 observations per task type, the Bayesian guard is worse than not having it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redundancy beats sophistication.&lt;/strong&gt; Asking the judge twice (confirm-2) does more for real quality than either a learned prior or a higher bar. That is the same argument CDV makes at the scoring layer with &lt;code&gt;min(A, B)&lt;/code&gt;, the stricter of two judges wins, applied at the stopping layer.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;This is a simulation of the decision policy, not of models.&lt;/strong&gt; The quality curve is a hand-made exponential; real agent progress isn't smooth, isn't monotone, and can regress. Noise is Gaussian and independent per step; a real judge's errors are correlated with the task, which is worse for confirm-2 than this study shows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Noise levels are assumed, not measured.&lt;/strong&gt; I don't know what σ a real LLM critic has on real coding steps. If it is under 0.03, the threshold rule is fine and this note is moot. If it is over 0.05, the fixed budget wins on quality. Measuring that number is the next study.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The adaptive policy was tested as shipped, with default guards.&lt;/strong&gt; Reordering the stack (Bayesian before threshold) or tuning the plateau delta could change result 1. I did not tune anything; that would be a different claim.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Same author, same code.&lt;/strong&gt; I wrote the benchmark and the policy it flatters. The replication and the extension are both mine. Treat the artifact as the check, not my reading of it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The cold-start result depends on &lt;code&gt;total_calls &amp;lt; 3&lt;/code&gt; fallback logic&lt;/strong&gt; in the priors and on the warm-up being drawn from the same distribution as the test set. A mismatched warm-up would be worse.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What would change my mind
&lt;/h2&gt;

&lt;p&gt;A live run, with a real judge scoring real agent steps, where the single-crossing rule's true reach (measured by a held-out oracle: the test suite, a human, a stricter judge) tracks its observed reach within a few points. That would mean judge noise is low enough that none of this matters. I'd also update if a reordered guard stack let the Bayesian guard beat confirm-2 on the noise sweep at equal step cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Artifact
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Original benchmark, restored from public history: &lt;code&gt;git show b8a219f:benchmarks/adaptive_vs_fixed.py&lt;/code&gt; in &lt;a href="https://github.com/azank1/cdv" rel="noopener noreferrer"&gt;azank1/cdv&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Extension scripts, raw results (JSON), and the figure code: &lt;a href="https://github.com/azank1/code-desk-cli/tree/main/research/009-stop-rule" rel="noopener noreferrer"&gt;github.com/azank1/code-desk-cli → research/009-stop-rule&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Environment: &lt;code&gt;cdv&lt;/code&gt; at &lt;code&gt;356d496&lt;/code&gt;, Python 3.12.3, no network, no model calls. Runtime under two minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Notes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;src/cdv/guards.py&lt;/code&gt;, &lt;code&gt;default_guard_stack()&lt;/code&gt;: &lt;code&gt;ScoreThresholdGuard&lt;/code&gt;, &lt;code&gt;PlateauGuard&lt;/code&gt;, &lt;code&gt;BayesianGuard&lt;/code&gt;, then budget, max-steps, timeout, token and output-repeat guards; &lt;code&gt;GuardStack.evaluate&lt;/code&gt; returns the first stop reason. &lt;code&gt;CONVERGENCE_DELTA = 0.01&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;benchmarks/results/adaptive_vs_fixed.md&lt;/code&gt; at commit &lt;code&gt;b8a219f&lt;/code&gt; (2026-06-25); the same table is in the README at &lt;code&gt;README.md&lt;/code&gt; §Evidence.&lt;/li&gt;
&lt;li&gt;Output of the restored script on 2026-09-25: identical rows, 41% step saving, 99.7% goal-reach.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/cdv/priors.py&lt;/code&gt;, &lt;code&gt;AdaptivePriors.should_continue&lt;/code&gt;: &lt;code&gt;if prior.total_calls &amp;lt; 3: return current_score &amp;lt; quality_threshold&lt;/code&gt;, then expected-improvement summation over the remaining steps.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>machinelearning</category>
      <category>research</category>
    </item>
    <item>
      <title>anyone using Jev out there?</title>
      <dc:creator>Azan Hyder</dc:creator>
      <pubDate>Fri, 25 Sep 2026 07:52:42 +0000</pubDate>
      <link>https://dev.to/azankhyder/anyone-using-jev-out-there-40lc</link>
      <guid>https://dev.to/azankhyder/anyone-using-jev-out-there-40lc</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/azankhyder/can-ai-trust-its-gut-1le7" class="crayons-story__hidden-navigation-link"&gt;Can AI Trust Its Gut? How Jev works&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/azankhyder" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" alt="azankhyder profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/azankhyder" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Azan Hyder
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Azan Hyder
                
                
              
              &lt;div id="story-author-preview-content-4733168" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/azankhyder" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Azan Hyder&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/azankhyder/can-ai-trust-its-gut-1le7" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 24&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/azankhyder/can-ai-trust-its-gut-1le7" id="article-link-4733168"&gt;
          Can AI Trust Its Gut? How Jev works
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devops"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devops&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/azankhyder/can-ai-trust-its-gut-1le7" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;10&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/azankhyder/can-ai-trust-its-gut-1le7#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Can Vibe Coding Build Production Software Without an Engineer?</title>
      <dc:creator>Azan Hyder</dc:creator>
      <pubDate>Fri, 25 Sep 2026 07:35:05 +0000</pubDate>
      <link>https://dev.to/azankhyder/can-vibe-coding-build-production-software-without-an-engineer-33db</link>
      <guid>https://dev.to/azankhyder/can-vibe-coding-build-production-software-without-an-engineer-33db</guid>
      <description>&lt;p&gt;&lt;em&gt;Short answer: not yet. Longer answer: an engineer's job splits in two, and a founder can already own one half.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Table of contents&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Someone asked the right question&lt;/li&gt;
&lt;li&gt;"The AI writes the code, so who needs an engineer?"&lt;/li&gt;
&lt;li&gt;The code was never the business&lt;/li&gt;
&lt;li&gt;Run it like an office, not a chat&lt;/li&gt;
&lt;li&gt;Every part of the business, on one board&lt;/li&gt;
&lt;li&gt;"Isn't this just bureaucracy for robots?"&lt;/li&gt;
&lt;li&gt;So what's the worst that can happen?&lt;/li&gt;
&lt;li&gt;How not to fix it&lt;/li&gt;
&lt;li&gt;Vibe code the work. Engineer the office.&lt;/li&gt;
&lt;li&gt;The founder's half&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Someone asked the right question
&lt;/h2&gt;

&lt;p&gt;This week someone asked on X: &lt;em&gt;can vibe coding produce production-ready software without an experienced engineer?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It's the right question, and most answers argue about the wrong thing: whether the model can write the code. It can. &lt;strong&gt;Writing the code was never what made software production-ready.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  "The AI writes the code, so who needs an engineer?"
&lt;/h2&gt;

&lt;p&gt;The belief goes like this. You describe what you want, the model builds it, and the engineer becomes an expensive middleman. &lt;em&gt;Just vibe it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For a weekend project, that's true. You describe, it builds, you click around, it works. Ship it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The model never pushes back, never asks for a raise, and never says "that's not in scope." Which, it turns out, is the whole problem.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then someone pays for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The code was never the business
&lt;/h2&gt;

&lt;p&gt;Think about a restaurant. Great cooks don't make a restaurant. Someone decides the menu. Someone tastes the plate before it leaves the kitchen. Someone watches what the ingredients cost. The cooks can be brilliant, and without those three jobs you're one bad night away from closing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vibe coding hired the cooks. It didn't hire the other three.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuxqgfop56ps9zh1v4pt3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuxqgfop56ps9zh1v4pt3.gif" alt="Cartoon: a four-floor restaurant (owner's office, the pass, the kitchen, front of house) compacts into a laptop running an office of AI desks in a loop: PM, dev, dev, launch, meter, review, with a gate between each, and advisors underneath. You sit at the laptop with the owner hat and the final say. No lease, no payroll."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's what an experienced engineer actually brings, and most of it isn't typing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Deciding what's in scope.&lt;/strong&gt; What gets built this week, and what waits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Saying "not done yet".&lt;/strong&gt; With evidence: which tests must pass, what counts as reviewed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watching the cost.&lt;/strong&gt; Noticing when a task has eaten three times what it should.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ask one model to do all three, in the same chat where it writes the code, and it does them the way a new hire would on day one: confidently, and with nobody checking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run it like an office, not a chat
&lt;/h2&gt;

&lt;p&gt;This is why I'm building &lt;strong&gt;Code Desks&lt;/strong&gt;, a small open-source tool that runs AI coding sessions like an office instead of one long chat.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;desk&lt;/strong&gt; is one real AI coding session (Claude Code, Codex or Cursor) with a job description: product manager, developer, reviewer, or whatever your office needs.&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;office&lt;/strong&gt; is a set of desks working one project on a sprint cadence, written down in one file you can read.&lt;/li&gt;
&lt;li&gt;Work moves between stages through &lt;strong&gt;gates&lt;/strong&gt;. A gate is a checklist with two columns, and nothing moves until both are filled.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The two columns are the trick, because one person can wear two hats:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hat&lt;/th&gt;
&lt;th&gt;Owns&lt;/th&gt;
&lt;th&gt;In business terms&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Owner&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;scope, priority, the final yes&lt;/td&gt;
&lt;td&gt;the CEO, the product manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Engineer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;estimates, risks, tests green, evidence&lt;/td&gt;
&lt;td&gt;the CTO&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The owner decides. The engineer proves. A gate can be &lt;strong&gt;engineer-first&lt;/strong&gt;: the owner's "yes" is refused until the evidence is on file. &lt;em&gt;Nobody can sign off on nothing.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Every part of the business, on one board
&lt;/h2&gt;

&lt;p&gt;Here's the part that matters if you're not an engineer. The office file reads like an org chart with a budget attached:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;desks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;pm&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;     &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;roles/pm.md&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt;     &lt;span class="nv"&gt;harness&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;claude&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;budget&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;10_000_000&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;dev&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;    &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;roles/dev.md&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt;    &lt;span class="nv"&gt;harness&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;claude&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;budget&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;36_000_000&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;review&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;roles/review.md&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;harness&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;codex&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt;  &lt;span class="nv"&gt;budget&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;5_000_000&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;launch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;roles/launch.md&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;harness&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;claude&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;budget&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;4_000_000&lt;/span&gt; &lt;span class="pi"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Product:&lt;/strong&gt; the PM desk turns your idea into scoped pieces of work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Engineering:&lt;/strong&gt; the dev desk builds. A review desk, running a &lt;em&gt;different&lt;/em&gt; model, checks it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Growth:&lt;/strong&gt; a launch desk writes the landing page, the docs and the announcement, in the same project and through the same gates. It's just another job description.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finance:&lt;/strong&gt; every desk gets a token budget per sprint, and a meter reads what each desk actually used from the logs the sessions already write. No estimates, no guessing a price. Just a line like &lt;em&gt;"the PM desk used four times its budget this sprint"&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's the shape of what the meter prints (trimmed):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;usage sprint 2 · 2026-09-22 → 2026-09-29
DESK    HARNESS  SESS  TURNS  TOTAL    BUDGET          PROJECTION
pm      claude   3     412    41.8M    418% of 10.0M   125.4M/30d
dev     claude   5     1105   132.2M   367% of 36.0M   396.6M/30d
review  cursor   2     96     n/a      no data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No dashboard, no invoice. A table that says which hire is over budget and what next month looks like if nothing changes.&lt;/p&gt;

&lt;p&gt;That last one changes the conversation. &lt;strong&gt;Each desk is an investment: tokens in, work out.&lt;/strong&gt; The meter shows what each desk cost. The board shows what it got through the gates. Where next sprint's budget goes is a business decision, and it belongs to the owner.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7fzedn4mycrxbk512ckz.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7fzedn4mycrxbk512ckz.gif" alt="Diagram: run vibe coding like a company. Owner hat (the CEO) and engineer hat (the CTO) on top; four desks, product, engineering, quality and growth, with gates between them; a finance meter showing each desk's tokens against its budget."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  "Isn't this just bureaucracy for robots?"
&lt;/h2&gt;

&lt;p&gt;Fair objection. If you're building a weekend toy, skip all of it.&lt;/p&gt;

&lt;p&gt;But look at what a gate actually replaces. Not meetings. It replaces the moment an experienced engineer leans over and asks &lt;em&gt;"did you actually run the tests?"&lt;/em&gt; The gate asks it every single time, including at 3 a.m. and on the tenth run of a Tuesday, when nobody is leaning over anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what's the worst that can happen?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Without the office:&lt;/strong&gt; the agent says it's done. The tests it ran were ones it wrote itself. (That happened to me: 16/16 green, and the one check that mattered said no.) Nobody tracked what it cost. You launch, and your first real customer finds what the tests didn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With the office:&lt;/strong&gt; the same agent says it's done. The gate runs the project's real test command, it fails, and the work doesn't move. You find out on Tuesday, not from a customer.&lt;/p&gt;

&lt;h2&gt;
  
  
  How not to fix it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hire an engineer to read every line.&lt;/strong&gt; It works for one project. It doesn't keep up with how fast agents write.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use a bigger model.&lt;/strong&gt; A smarter model writes more code, faster. It doesn't decide what's in scope or what counts as done.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write a longer prompt.&lt;/strong&gt; A prompt is a suggestion the agent weighs against its goal. A gate isn't.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0snah4cilpi1r7lied25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0snah4cilpi1r7lied25.png" alt="Tuxedo Pooh meme: hire an engineer, versus vibe engineering"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Vibe code the work. Engineer the office.
&lt;/h2&gt;

&lt;p&gt;So, can vibe coding produce production-ready software without an experienced engineer?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not yet.&lt;/strong&gt; Someone still has to decide what "done" means and write the checks that prove it. That's engineering judgment, and the model shouldn't be the one grading its own work.&lt;/p&gt;

&lt;p&gt;But the rest of the job (the scoping, the handoffs, the "not yet", the budget) can be written down once and run every sprint.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Vibe code the work. Engineer the office.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The founder's half
&lt;/h2&gt;

&lt;p&gt;If you're a founder or a product manager building with AI, you don't have to become an engineer. You have to run the office: hire the desks, set their budgets, decide what "done" means, and keep the final yes.&lt;/p&gt;

&lt;p&gt;That's the half you can own today. Borrow the other half, the checks, from an engineer once, and let the gates ask the question every time after that.&lt;/p&gt;

&lt;p&gt;Code Desks is early (v0, MIT): &lt;a href="https://github.com/azank1/code-desk-cli" rel="noopener noreferrer"&gt;github.com/azank1/code-desk-cli&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What's the first job you'd give a desk that isn't writing code?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Related:&lt;/em&gt; &lt;a href="https://dev.to/azankhyder/can-ai-trust-its-gut-1le7"&gt;Can AI Trust Its Gut?&lt;/a&gt;, on when an agent's fast call can be trusted, and &lt;a href="https://dev.to/azankhyder/vibe-engineering-with-opus-55-route-by-the-feedback-3i77"&gt;Vibe engineering with Opus 5.5? Route by the feedback&lt;/a&gt;, on picking the model by what comes back when it acts.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>startup</category>
      <category>agents</category>
    </item>
    <item>
      <title>Can AI Trust Its Gut? How Jev works</title>
      <dc:creator>Azan Hyder</dc:creator>
      <pubDate>Thu, 24 Sep 2026 17:10:48 +0000</pubDate>
      <link>https://dev.to/azankhyder/can-ai-trust-its-gut-1le7</link>
      <guid>https://dev.to/azankhyder/can-ai-trust-its-gut-1le7</guid>
      <description>&lt;p&gt;&lt;em&gt;Five questions to ask before a fast model decides what your agent is allowed to do.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Table of contents&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The agent that doesn't ask anymore&lt;/li&gt;
&lt;li&gt;"Give your agent a System 1"&lt;/li&gt;
&lt;li&gt;Firefighters and stock pickers&lt;/li&gt;
&lt;li&gt;Five questions before you trust the judge&lt;/li&gt;
&lt;li&gt;"Just use a bigger judge"&lt;/li&gt;
&lt;li&gt;So what's the worst that can happen?&lt;/li&gt;
&lt;li&gt;How not to fix it&lt;/li&gt;
&lt;li&gt;Trust a fast call only where the world corrects it&lt;/li&gt;
&lt;li&gt;Can the gut learn?&lt;/li&gt;
&lt;li&gt;Intuition is earned&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The agent that doesn't ask anymore
&lt;/h2&gt;

&lt;p&gt;Agents don't just write code now. Point one at your website and it'll find prospects, write the emails, send them and book the calls. Point one at your repo and it'll run the migration.&lt;/p&gt;

&lt;p&gt;Nobody wants to click "approve" on every step, so a pattern is spreading: before each action, a small, fast model gets asked one question. &lt;em&gt;Is this OK?&lt;/em&gt; It answers in milliseconds, with a confidence score, and the agent carries on.&lt;/p&gt;

&lt;p&gt;It's a good idea. It's also one more thing you're trusting, and most setups never ask how far.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Give your agent a System 1"
&lt;/h2&gt;

&lt;p&gt;The idea borrows from Daniel Kahneman. &lt;strong&gt;System 2&lt;/strong&gt; is slow, careful reasoning. &lt;strong&gt;System 1&lt;/strong&gt; is the fast, automatic call: the gut. Your big model is the slow thinker, and the little judge in front of every tool call is the gut.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Fast, cheap, always on. What could go wrong?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Firefighters and stock pickers
&lt;/h2&gt;

&lt;p&gt;Kahneman spent a career showing where gut calls fail. Gary Klein spent one showing where they work: fire commanders who knew, without being able to say why, to get their crew out of a building moments before the floor gave way.&lt;/p&gt;

&lt;p&gt;In 2009 the two wrote a paper together to settle the argument, and ended up agreeing. A gut call deserves trust when two things hold:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;the environment is regular enough to be predictable&lt;/strong&gt;, and&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;there's a real chance to learn it&lt;/strong&gt;: lots of practice, with feedback that comes back fast and clear.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A firefighter gets both. A stock picker gets neither: the market is noisy and the feedback is slow and ambiguous, so confidence grows while skill doesn't.&lt;/p&gt;

&lt;p&gt;Now look at the judge in front of your agent. It says "yes" to an email. Does it ever find out whether that email was a mistake? It says "yes" to a migration. Does anything tell it the migration broke production at 3 a.m.?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A judge that never learns whether its "yes" turned out fine is a stock picker.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Confident, fast, and with nothing correcting it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxpbg3xhzwm6enec8z1xh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxpbg3xhzwm6enec8z1xh.gif" alt="Diagram: agent actions sorted by two questions, will I find out fast if this was wrong, and can I undo it. Only fast-feedback, undoable actions are safe for a gut call." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Five questions before you trust the judge
&lt;/h2&gt;

&lt;p&gt;None of these is about a particular product. They're true of any model that sits in front of an agent's actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Where does the question go?&lt;/strong&gt; To judge an action, the judge has to see it: the command, the file path, the email body, the customer's name. If the judge is hosted, all of that leaves your machine on every call. That may be fine. &lt;em&gt;It should be a decision, not a default.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Is "97% sure" a probability?&lt;/strong&gt; A confidence score is only a probability if someone checked it against outcomes: of all the calls it was 97% sure about, were about 97% right? If nobody measured that on &lt;em&gt;your&lt;/em&gt; kind of actions, it's &lt;strong&gt;a vibe with decimals&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. What happens when it isn't sure?&lt;/strong&gt; Every judge has an unsure zone. Does unsure mean allow, deny, or ask a human? The worst answer is the one nobody chose: a default buried in a config file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Can you check a "yes" tomorrow?&lt;/strong&gt; Something goes wrong. Can you show what the judge was asked, what it answered, and which rules it was running at the time? Or is the answer "it said OK, apparently"?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Who else is talking to the judge?&lt;/strong&gt; The judge reads the action, and the action was written by the agent, which may have just read a web page, an email or an issue someone planted. &lt;em&gt;The input to your safety check is partly written by whoever wants to get past it.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  "Just use a bigger judge"
&lt;/h2&gt;

&lt;p&gt;The obvious fix is a smarter model in front. But a bigger judge is slower, so it gets skipped in exactly the places you run the most actions: the fast loops. It still hasn't been measured on your actions. And it still leaves you nothing to check tomorrow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thinking longer doesn't create feedback.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  So what's the worst that can happen?
&lt;/h2&gt;

&lt;p&gt;Play it forward. An outreach agent drafts 200 emails with the wrong price in them. The judge sees 200 well-formed, polite emails to real prospects and is 96% sure each one is fine. They go out.&lt;/p&gt;

&lt;p&gt;You can't unsend an email.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4jv1wlgc5a0b4y5octdw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4jv1wlgc5a0b4y5octdw.png" alt="This is fine meme: 200 emails with the wrong price, the judge 96% sure this is fine" width="617" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nobody did anything wrong. The judge answered the question it was asked. It was just asked to use its gut in a place where its gut had never been corrected.&lt;/p&gt;

&lt;h2&gt;
  
  
  How not to fix it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Turn it off because it's slow.&lt;/strong&gt; Now there's no judge, just faster mistakes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trust the accuracy number on the landing page.&lt;/strong&gt; It was measured on someone else's actions, not yours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add a line to the system prompt.&lt;/strong&gt; Rules get weighed against the goal. Checks don't.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Trust a fast call only where the world corrects it
&lt;/h2&gt;

&lt;p&gt;Sort your agent's actions by two questions: &lt;em&gt;will I find out fast if this was wrong?&lt;/em&gt; and &lt;em&gt;can I undo it?&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Run the tests, lint, read a file:&lt;/strong&gt; the world corrects you in seconds, and nothing's lost. Let the gut call it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send an email, run a migration, move money, delete anything:&lt;/strong&gt; no quick correction, no undo. That's not a gut call. Stop and ask a human, or check it with something slower.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Trust a fast call only where the world corrects it.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Can the gut learn?
&lt;/h2&gt;

&lt;p&gt;Everything above points at one missing piece: &lt;strong&gt;feedback&lt;/strong&gt;. That's exactly what reinforcement learning is for. The judge makes a call, the world answers, and the answer becomes a reward the judge learns from. Done carefully, it turns a stock picker into a firefighter.&lt;/p&gt;

&lt;p&gt;Cheapest first:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Calibrate before you learn.&lt;/strong&gt; Check whether "97% sure" is right about 97% of the time on real outcomes, and adjust the scores until it is. No RL needed, and it fixes question 2 on its own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treat each call as a bandit, not a game.&lt;/strong&gt; A gate decision is one move (allow, ask or deny) with one outcome. A &lt;em&gt;contextual bandit&lt;/em&gt;, the simplest kind of RL, fits that shape better than full RL, and it's far cheaper to run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Every "ask" is a free label.&lt;/strong&gt; When the judge isn't sure and asks a human, the human's answer is training data. So are the quieter signals: a commit reverted after an allow, CI failing after an allow, a later check refusing the work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Then fine-tune the judge&lt;/strong&gt; on what you've collected.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;But who hands out the reward?&lt;/strong&gt; Not the judge, and not the agent. It has to be a &lt;em&gt;second&lt;/em&gt; judge that checks the result after the action, and it can't be argued with. I explored this in an earlier research project, &lt;a href="https://github.com/azank1/cdv" rel="noopener noreferrer"&gt;CDV&lt;/a&gt;: every step an agent claims is scored twice, once by deterministic checks and once by an LLM critic, and the final score is &lt;code&gt;min(A, B)&lt;/code&gt;. &lt;strong&gt;The stricter judge wins&lt;/strong&gt;, so a lenient critic can't pay the gut for a bad call. It also Thompson-samples which clarifying question to ask first, a textbook bandit. The honest limitation I published with it: the critic was the same model as the agent. &lt;em&gt;Independence is the part you have to earn.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr91tcyairdbmifh3r1x0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr91tcyairdbmifh3r1x0.gif" alt="Diagram: the reinforcement learning loop for a gut check. The judge asks " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;How fast it arrives&lt;/th&gt;
&lt;th&gt;Safe to learn from live?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tests fail after an allow&lt;/td&gt;
&lt;td&gt;seconds&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A human answers an "ask"&lt;/td&gt;
&lt;td&gt;minutes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A commit gets reverted&lt;/td&gt;
&lt;td&gt;hours to days&lt;/td&gt;
&lt;td&gt;in reviewed batches&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A customer replies to the wrong email&lt;/td&gt;
&lt;td&gt;days&lt;/td&gt;
&lt;td&gt;offline only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;And where it breaks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Don't let the learner grade itself.&lt;/strong&gt; Self-improving agents are having a moment, and the first question to ask any of them is: &lt;em&gt;who grades the runs it learns from?&lt;/em&gt; If the agent grades itself, it learns to report progress, not make it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You can't learn by trying in the red corner.&lt;/strong&gt; Tests and lint can afford the odd wrong call, and the judge learns from it in seconds. An email, a migration or a payment can't: the lesson arrives after the damage. Those learn only from human decisions, offline, with the judge frozen and versioned between updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You only see what you allowed.&lt;/strong&gt; A denied action never runs, so you never find out whether it was fine. Leave a little room to test that, but only on actions you can undo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price the mistakes honestly.&lt;/strong&gt; If the reward is "the human didn't complain", the judge learns that asking is annoying and drifts toward yes. &lt;em&gt;A wrong yes on something irreversible has to cost far more than an unnecessary ask.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't let attackers teach it.&lt;/strong&gt; The judge reads input the agent helped write (question 5). With online learning, an attacker doesn't just get past the judge once. &lt;strong&gt;They train it.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One more thing falls out of this. &lt;strong&gt;You can't learn from calls you didn't write down.&lt;/strong&gt; Keep what the judge was asked, what it said, which version answered and what happened next. That record answers question 4, and it's your training set at the same time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intuition is earned
&lt;/h2&gt;

&lt;p&gt;Kahneman and Klein didn't conclude that intuition is bad. They concluded that it's &lt;em&gt;earned&lt;/em&gt;, one fast, clear correction at a time. Your agent's gut can earn it too, but only where something tells it when it was wrong, and only if you can look back and check what it said.&lt;/p&gt;

&lt;p&gt;What's your agent allowed to do without asking?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Related:&lt;/em&gt; &lt;a href="https://dev.to/azankhyder/vibe-engineering-with-opus-55-route-by-the-feedback-3i77"&gt;Vibe engineering with Opus 5.5? Route by the feedback&lt;/a&gt;. The same idea one step earlier: pick the model by what comes back when it acts.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>security</category>
      <category>devops</category>
    </item>
    <item>
      <title>I hit the same lesson from the other side: my agent wrote its own test runner, the harness said 16/16, and the one check that mattered said no.</title>
      <dc:creator>Azan Hyder</dc:creator>
      <pubDate>Thu, 24 Sep 2026 11:04:58 +0000</pubDate>
      <link>https://dev.to/azankhyder/i-hit-the-same-lesson-from-the-other-side-my-agent-wrote-its-own-test-runner-the-harness-said-5bj7</link>
      <guid>https://dev.to/azankhyder/i-hit-the-same-lesson-from-the-other-side-my-agent-wrote-its-own-test-runner-the-harness-said-5bj7</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/kenielzep97/an-agent-that-counts-my-receipts-not-my-claims-a3h" class="crayons-story__hidden-navigation-link"&gt;An Agent That Counts My Receipts, Not My Claims&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/kenielzep97/an-agent-that-counts-my-receipts-not-my-claims-a3h" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Sanity Challenge Path One Submission&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/kenielzep97" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3948231%2F09b103a6-4a7f-4016-a261-debf92d5b015.jpeg" alt="kenielzep97 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/kenielzep97" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Self-Correcting Systems
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Self-Correcting Systems
                
                
              
              &lt;div id="story-author-preview-content-4708606" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/kenielzep97" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3948231%2F09b103a6-4a7f-4016-a261-debf92d5b015.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Self-Correcting Systems&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/kenielzep97/an-agent-that-counts-my-receipts-not-my-claims-a3h" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/kenielzep97/an-agent-that-counts-my-receipts-not-my-claims-a3h" id="article-link-4708606"&gt;
          An Agent That Counts My Receipts, Not My Claims
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/sanitychallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;sanitychallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/sanity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;sanity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/kenielzep97/an-agent-that-counts-my-receipts-not-my-claims-a3h" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;34&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/kenielzep97/an-agent-that-counts-my-receipts-not-my-claims-a3h#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              10&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>certainly improving i think... but nonetheless, the bottleneck is more so on debugging nowadays. anyone else notice that models improved but bugs never went to 0? i wonder why...</title>
      <dc:creator>Azan Hyder</dc:creator>
      <pubDate>Thu, 24 Sep 2026 10:55:32 +0000</pubDate>
      <link>https://dev.to/azankhyder/certainly-improving-i-think-but-nonetheless-the-bottleneck-is-more-so-on-debugging-nowadays-39k9</link>
      <guid>https://dev.to/azankhyder/certainly-improving-i-think-but-nonetheless-the-bottleneck-is-more-so-on-debugging-nowadays-39k9</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/azankhyder/ai-doesnt-make-programming-easier-it-moves-the-bottleneck-to-where-it-cannot-see-3lpo" class="crayons-story__hidden-navigation-link"&gt;AI doesn't make programming easier - It moves the bottleneck to where it cannot see&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/azankhyder" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" alt="azankhyder profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/azankhyder" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Azan Hyder
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Azan Hyder
                
                
              
              &lt;div id="story-author-preview-content-4355038" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/azankhyder" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Azan Hyder&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/azankhyder/ai-doesnt-make-programming-easier-it-moves-the-bottleneck-to-where-it-cannot-see-3lpo" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 9&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/azankhyder/ai-doesnt-make-programming-easier-it-moves-the-bottleneck-to-where-it-cannot-see-3lpo" id="article-link-4355038"&gt;
          AI doesn't make programming easier - It moves the bottleneck to where it cannot see
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devops"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devops&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/azankhyder/ai-doesnt-make-programming-easier-it-moves-the-bottleneck-to-where-it-cannot-see-3lpo" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;7&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/azankhyder/ai-doesnt-make-programming-easier-it-moves-the-bottleneck-to-where-it-cannot-see-3lpo#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              2&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            8 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>OpenAI's Hugging Face incident report, p. 19: with the production harness, the propensity to compromise infrastructure "can drop over 
 100x".

 Same model. Different harness.

 Evals score the agent. The damage happens in the run.</title>
      <dc:creator>Azan Hyder</dc:creator>
      <pubDate>Thu, 24 Sep 2026 09:53:48 +0000</pubDate>
      <link>https://dev.to/azankhyder/openais-hugging-face-incident-report-p-19-with-the-production-harness-the-propensity-to-3bb7</link>
      <guid>https://dev.to/azankhyder/openais-hugging-face-incident-report-p-19-with-the-production-harness-the-propensity-to-3bb7</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/azankhyder/the-openai-and-hugging-face-incident-is-this-at-scale-agents-hacked-their-way-out-the-sandbox-dhd" class="crayons-story__hidden-navigation-link"&gt;the OpenAI and Hugging Face incident is this at scale. Agents hacked their way out the sandbox, reached the internet and broke into Hugging Face production systems, and it took eleven days to catch..Evals were there but missing trajectory harness = fail&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-status"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/azankhyder" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" alt="azankhyder profile" class="crayons-avatar__image" width="800" height="1010"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/azankhyder" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Azan Hyder
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Azan Hyder
                
                
              
              &lt;div id="story-author-preview-content-4732333" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/azankhyder" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" class="crayons-avatar__image" alt="" width="800" height="1010"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Azan Hyder&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/azankhyder/the-openai-and-hugging-face-incident-is-this-at-scale-agents-hacked-their-way-out-the-sandbox-dhd" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 24&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-status"&gt;
        &lt;a href="https://dev.to/azankhyder/the-openai-and-hugging-face-incident-is-this-at-scale-agents-hacked-their-way-out-the-sandbox-dhd" id="article-link-4732333"&gt;
          the OpenAI and Hugging Face incident is this at scale. Agents hacked their way out the sandbox, reached the internet and broke into Hugging Face production systems, and it took eleven days to catch..Evals were there but missing trajectory harness = fail
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__contentpreview text-styles"&gt;
          &lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/azankhyder/every-agent-passed-its-evals-the-run-still-failed-why-1b0m" class="crayons-story__hidden-navigation-link"&gt;Every agent passed its evals. The run still failed.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/azankhyder" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" alt="azankhyder profile" class="crayons-avatar__image" width="800" height="1010"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/azankhyder" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Azan Hyder
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Azan Hyder
                
                
              
              &lt;div id="story-author-preview-content-4334080" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/azankhyder" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4048140%2F543e0f33-b62c-4609-90fc-d955dcfe00c5.jpeg" class="crayons-avatar__image" alt="" width="800" height="1010"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Azan Hyder&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/azankhyder/every-agent-passed-its-evals-the-run-still-failed-why-1b0m" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 6&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/azankhyder/every-agent-passed-its-evals-the-run-still-failed-why-1b0m" id="article-link-4334080"&gt;
          Every agent passed its evals. The run still failed.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/architecture"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;architecture&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/azankhyder/every-agent-passed-its-evals-the-run-still-failed-why-1b0m" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;5&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/azankhyder/every-agent-passed-its-evals-the-run-still-failed-why-1b0m#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;



        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/azankhyder/the-openai-and-hugging-face-incident-is-this-at-scale-agents-hacked-their-way-out-the-sandbox-dhd#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
  </channel>
</rss>
