<?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: Shyam Verma</title>
    <description>The latest articles on DEV Community by Shyam Verma (@ssv445).</description>
    <link>https://dev.to/ssv445</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%2F4218630%2F0ba9946f-6592-49a3-99b0-7a2e284655c8.jpg</url>
      <title>DEV Community: Shyam Verma</title>
      <link>https://dev.to/ssv445</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ssv445"/>
    <language>en</language>
    <item>
      <title>Running AI agents in parallel: 6 failures and their fixes</title>
      <dc:creator>Shyam Verma</dc:creator>
      <pubDate>Mon, 02 Nov 2026 10:27:37 +0000</pubDate>
      <link>https://dev.to/ssv445/running-ai-agents-in-parallel-6-failures-and-their-fixes-3eg2</link>
      <guid>https://dev.to/ssv445/running-ai-agents-in-parallel-6-failures-and-their-fixes-3eg2</guid>
      <description>&lt;p&gt;For the last month I've been building a Mac app with several AI coding agents working in parallel. Each agent has its own copy of the repo. I coordinate and make the calls.&lt;/p&gt;

&lt;p&gt;The agents write working code most days. Here are 6 things that still slowed us down: what went wrong, how we noticed, the fix, and how long it took.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Too many agents building on one Mac
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What went wrong:&lt;/strong&gt; each agent ran its full build and tests before every push. On one day, 5 to 7 of these runs went at once on a 12-core Mac. The load average reached about 290.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How we noticed:&lt;/strong&gt; tests failed that had nothing to do with the change. Every pull request got slower.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; one machine-wide lock. Every heavy job waits its turn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 2 hours 26 minutes from the issue to the merged fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Timing tests failed under load
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What went wrong:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A timing test failed at a load average of 54 to 66. The branch never touched its code.&lt;/li&gt;
&lt;li&gt;A benchmark ran far slower at a load of 92 than at a load of 16.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;How we noticed:&lt;/strong&gt; red runs on unrelated branches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; tests that measure time moved to their own suite. Pull requests skip it. It runs once per release, on a quiet machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; about 4 days from the first logged failure to the merged fix. The fix itself was one pull request, merged in about 4 hours.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. A hung test held the lock all night
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What went wrong:&lt;/strong&gt; the lock from the first fix created a new problem. One test run hung from 00:32 to 05:58 and held the lock the whole time. Every other agent waited.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How we noticed:&lt;/strong&gt; late. Nothing alerted on a lock held for hours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A watchdog stops a hung test within minutes and names it.&lt;/li&gt;
&lt;li&gt;An alert fires when the lock is held for over 60 minutes. It would have caught this hang about 4 hours earlier.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; merged the same day, about 13 and a half hours after the hang ended.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Local tests passed, production failed
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What went wrong:&lt;/strong&gt; our website has short share links like &lt;code&gt;/r/reddit&lt;/code&gt; that redirect to &lt;code&gt;/?s=reddit&lt;/code&gt;. I asked for one generic rule instead of one per channel. An agent wrote placeholder rules on Cloudflare Pages, like this one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;/r/:source  /?s=:source  302
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The local dev server (&lt;code&gt;wrangler pages dev&lt;/code&gt;) filled &lt;code&gt;:source&lt;/code&gt; in the query string. Production passed it through as plain text. Every link went to &lt;code&gt;/?s=%3Asource&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How we noticed:&lt;/strong&gt; on the live site. The change had passed the unit tests, a local end-to-end run and a review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; we rolled the site back and went back to one written-out rule per link. Every deploy now opens each share link live.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 41 minutes from the bad merge to the merged fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Reading a status moved a real setting
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What went wrong:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A scratch build of the app used the real app id.&lt;/li&gt;
&lt;li&gt;It only &lt;em&gt;read&lt;/em&gt; its login-item status, through &lt;code&gt;SMAppService.mainApp.status&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;macOS then pointed my real login item at that scratch copy.&lt;/li&gt;
&lt;li&gt;The copy was deleted minutes later. My login item pointed at nothing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;How we noticed:&lt;/strong&gt; an agent found the line in the macOS background-items log during a review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; every test copy gets its own app id. A build that would never register a login item never asks for its status.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; 1 hour 37 minutes from the issue to the merged fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. The test VM borrowed a binary from the host
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What went wrong:&lt;/strong&gt; our end-to-end tests run in a throwaway macOS VM. The test script copied the host's &lt;code&gt;node&lt;/code&gt; into it. That &lt;code&gt;node&lt;/code&gt; came from Homebrew and needed a library that exists only on the host. In the VM it died with &lt;code&gt;dyld: Library not loaded&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How we noticed:&lt;/strong&gt; one check failed during a release run. The app itself was fine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; copy only a self-contained &lt;code&gt;node&lt;/code&gt; into the VM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time:&lt;/strong&gt; to be honest, the fix is still in review as I write this.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I would recommend
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;When agents share one machine, queue the heavy work.&lt;/li&gt;
&lt;li&gt;Put a timeout and an alert on every lock.&lt;/li&gt;
&lt;li&gt;Keep tests that measure time out of the per-change run.&lt;/li&gt;
&lt;li&gt;Check edge and OS behaviour live. A local dev server can differ.&lt;/li&gt;
&lt;li&gt;Give every test copy its own identity.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The app I'm building is &lt;a href="https://poxture.com/?s=devto" rel="noopener noreferrer"&gt;Poxture App&lt;/a&gt;. It checks your posture on a Mac.&lt;/p&gt;

&lt;p&gt;What has slowed you down when agents work in parallel, and how long did the fix take?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
