<?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: Varun Chennuri</title>
    <description>The latest articles on DEV Community by Varun Chennuri (@varun_chennuri_320867199f).</description>
    <link>https://dev.to/varun_chennuri_320867199f</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%2F4101677%2F075963aa-c857-4b4f-8af7-c99b23311f07.png</url>
      <title>DEV Community: Varun Chennuri</title>
      <link>https://dev.to/varun_chennuri_320867199f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/varun_chennuri_320867199f"/>
    <language>en</language>
    <item>
      <title>My AI-built app had 7 recurring bugs from one disease. I open-sourced the cure.</title>
      <dc:creator>Varun Chennuri</dc:creator>
      <pubDate>Sun, 30 Aug 2026 17:55:45 +0000</pubDate>
      <link>https://dev.to/varun_chennuri_320867199f/my-ai-built-app-had-7-recurring-bugs-from-one-disease-i-open-sourced-the-cure-33pg</link>
      <guid>https://dev.to/varun_chennuri_320867199f/my-ai-built-app-had-7-recurring-bugs-from-one-disease-i-open-sourced-the-cure-33pg</guid>
      <description>&lt;p&gt;My production app was built almost entirely by AI coding agents. It worked —&lt;br&gt;
and then the same bugs kept reopening. Seven tickets, again and again. The test&lt;br&gt;
suite was green the whole time: 46 passing tests, several of which asserted the&lt;br&gt;
buggy behavior, because the AI had generated them from the code it just wrote.&lt;/p&gt;

&lt;p&gt;When I root-caused all seven, they were one disease wearing four costumes:&lt;br&gt;
&lt;strong&gt;business rules living inside individual screens instead of shared contracts.&lt;/strong&gt;&lt;br&gt;
Every AI session is an amnesiac contributor — locally competent, globally blind.&lt;br&gt;
Whatever meaning isn't written down between sessions fragments. Duplication&lt;br&gt;
isn't a shortcut AI takes under pressure; it's its default gait.&lt;/p&gt;

&lt;p&gt;So I did an experiment with a known answer key (my 7 tickets):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mechanical scanners (clone detection, dependency rules) caught &lt;strong&gt;1 of 7&lt;/strong&gt; —
useful, but the disease is semantic, not textual.&lt;/li&gt;
&lt;li&gt;Writing every business rule's definition down ONCE, in a human-owned
registry, and forcing every session to consult it: covered &lt;strong&gt;7 of 7&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;After curing the codebase... the cure itself started drifting within weeks
(the fix rule grew a second implementation; new features started cloning
routes again). &lt;strong&gt;Drift is fractal. Only a continuous audit loop bounds it.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I turned the whole protocol into an open-source CLI: &lt;strong&gt;asdlc&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;asdlc plan&lt;/code&gt; — read-only, tells you what governance would look like in your repo&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;asdlc init&lt;/code&gt; — installs the registry, agent rules (AGENTS.md), and a CI gate&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;asdlc check&lt;/code&gt; — five gates, one exit code; legacy repos baseline existing
debt so only NEW drift blocks&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;asdlc audit&lt;/code&gt; — scheduled re-diagnosis, because the drift never stops&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It wraps jscpd, dependency-cruiser, and Semgrep rather than reinventing them.&lt;br&gt;
The interesting parts are the trust rules, enforced in code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A crashed check reports &lt;strong&gt;ERROR, never PASS&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Silenced warnings &lt;strong&gt;expire&lt;/strong&gt; — suppression ends on a date, and the finding
comes back red&lt;/li&gt;
&lt;li&gt;An AI &lt;strong&gt;cannot approve its own shortcuts&lt;/strong&gt;: baselines and waivers physically
require a human's name plus a pointer to where approval was given&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It was also built the way it preaches: the protocol was authored by two AI&lt;br&gt;
models adversarially reviewing each other with me as judge, the CLI was&lt;br&gt;
cross-reviewed by a rival model (which found 3 real verdict-integrity bugs&lt;br&gt;
before release), and the tool's own validation caught a spec-conformance bug&lt;br&gt;
in itself. Full pilot numbers are in the case study in the repo.&lt;/p&gt;

&lt;p&gt;Honest limits, because this space is drowning in overclaims: gates prove the&lt;br&gt;
absence of known, expressible violation classes — not correctness, and not all&lt;br&gt;
drift. Clone detection sees textual similarity, not semantic equivalence. The&lt;br&gt;
human-authored registry is the load-bearing part; the tool is the enforcement.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/chennurivarun/asdlc" rel="noopener noreferrer"&gt;https://github.com/chennurivarun/asdlc&lt;/a&gt; · &lt;code&gt;npx asdlc-cli plan&lt;/code&gt; is&lt;br&gt;
read-only and changes nothing — that's the whole trial cost.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>programming</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
