<?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: Parsa Mohammadi</title>
    <description>The latest articles on DEV Community by Parsa Mohammadi (@parsa4873fe3aa).</description>
    <link>https://dev.to/parsa4873fe3aa</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%2F4123367%2Fb113c98f-dac0-460b-9a2a-62b60d32987f.png</url>
      <title>DEV Community: Parsa Mohammadi</title>
      <link>https://dev.to/parsa4873fe3aa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/parsa4873fe3aa"/>
    <language>en</language>
    <item>
      <title>AI-Generated Code Needs a Different Kind of Pre-Screening</title>
      <dc:creator>Parsa Mohammadi</dc:creator>
      <pubDate>Tue, 15 Sep 2026 08:54:27 +0000</pubDate>
      <link>https://dev.to/parsa4873fe3aa/ai-generated-code-needs-a-different-kind-of-pre-screening-3908</link>
      <guid>https://dev.to/parsa4873fe3aa/ai-generated-code-needs-a-different-kind-of-pre-screening-3908</guid>
      <description>&lt;h1&gt;
  
  
  AI-Generated Code Needs a Different Kind of Pre-Screening
&lt;/h1&gt;

&lt;p&gt;Code review was built around an assumption: a human wrote this, and another human is checking it.&lt;/p&gt;

&lt;p&gt;That assumption is breaking down fast.&lt;/p&gt;

&lt;p&gt;A growing share of the code hitting pull requests now comes from AI coding assistants, and it doesn't fail the way human-written code fails. Code reviews built for one failure mode don't automatically catch the other.&lt;/p&gt;

&lt;p&gt;Pre-screening AI-generated code before it reaches a reviewer isn't optional anymore. It's the only way review capacity keeps up with how fast the code is arriving.&lt;/p&gt;

&lt;p&gt;That's also why AI-generated code pre-screening tools have become a distinct category rather than a feature bolted onto existing review tools. The job is different enough to need its own approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why AI-generated code needs a different filter
&lt;/h2&gt;

&lt;p&gt;Human-written bugs tend to cluster around effort and attention: a tired engineer skips an edge case, a rushed PR misses a null check. Reviewers have decades of intuition for spotting that pattern.&lt;/p&gt;

&lt;p&gt;AI-generated code fails differently.&lt;/p&gt;

&lt;p&gt;It's confident, syntactically clean, and often plausible-looking even when it's wrong.&lt;/p&gt;

&lt;p&gt;It can invent a function that doesn't exist, misunderstand the intent behind a ticket, or quietly reproduce an anti-pattern from its training data that happens to compile fine.&lt;/p&gt;

&lt;p&gt;None of that looks like a "tired engineer" bug.&lt;/p&gt;

&lt;p&gt;It looks like normal code, right up until it isn't.&lt;/p&gt;

&lt;p&gt;GitClear's analysis of over 200 million changed lines of code found duplicated code blocks becoming far more common as AI authorship scaled, exactly the kind of pattern a human reviewer skimming a large diff is likely to miss.&lt;/p&gt;

&lt;p&gt;The review process didn't change.&lt;/p&gt;

&lt;p&gt;The thing it is reviewing did.&lt;/p&gt;

&lt;p&gt;Reviewer intuition is calibrated to the left-hand panel, and the volume is arriving from the right.&lt;/p&gt;

&lt;p&gt;That's the real argument for pre-screening: the failure mode changed, so the review process built for the old failure mode is checking for the wrong things.&lt;/p&gt;

&lt;h2&gt;
  
  
  What pre-screening AI-generated code actually needs to catch
&lt;/h2&gt;

&lt;h3&gt;
  
  
  01 — Hallucinated dependencies and APIs
&lt;/h3&gt;

&lt;p&gt;An AI assistant will sometimes call a method that doesn't exist on the object it's using, or import a package that isn't in the project.&lt;/p&gt;

&lt;p&gt;It reads fine.&lt;/p&gt;

&lt;p&gt;It doesn't run.&lt;/p&gt;

&lt;p&gt;A screening pass that just checks style and formatting won't catch this. It needs to actually resolve what the code is calling against what's real.&lt;/p&gt;

&lt;h3&gt;
  
  
  02 — Context loss across a large diff
&lt;/h3&gt;

&lt;p&gt;AI-generated code is good within a narrow window, and weaker on context awareness across a bigger change.&lt;/p&gt;

&lt;p&gt;It can lose the thread: two functions in the same PR handling the same edge case two different ways, or a rewritten function that no longer matches an invariant the rest of the codebase depends on.&lt;/p&gt;

&lt;p&gt;A 1,000-line PR makes this easy to miss, right when a human reviewer has the least time to catch it.&lt;/p&gt;

&lt;h3&gt;
  
  
  03 — Plausible-but-wrong logic
&lt;/h3&gt;

&lt;p&gt;The hardest category.&lt;/p&gt;

&lt;p&gt;Code that runs, passes the obvious test cases, and is still wrong for a case nobody thought to write a test for.&lt;/p&gt;

&lt;p&gt;Static analysis catches syntax problems. It doesn't catch a model's confident misunderstanding of what the ticket actually asked for.&lt;/p&gt;

&lt;h3&gt;
  
  
  04 — Pattern drift from what already works
&lt;/h3&gt;

&lt;p&gt;If the codebase has an established way of handling retries, auth checks, or error propagation, AI-generated code doesn't reliably know that unless it's told.&lt;/p&gt;

&lt;p&gt;Pre-screening that checks new code against existing patterns catches drift before it becomes the third inconsistent way of doing the same thing.&lt;/p&gt;

&lt;p&gt;It's the kind of problem worth discussing in the open rather than solving quietly in isolation, since most teams are hitting the same drift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-screening is not the same job as code review
&lt;/h2&gt;

&lt;p&gt;This distinction matters more than it sounds like it should.&lt;/p&gt;

&lt;p&gt;Code review asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is this the right approach, does it fit the design, should we ship it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pre-screening asks a narrower question first:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is there anything here a reviewer needs to know before they spend their attention on it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Two questions, asked in order.&lt;/p&gt;

&lt;p&gt;The narrow mechanical one is answerable automatically.&lt;/p&gt;

&lt;p&gt;The wide one is the only part that actually needs a human.&lt;/p&gt;

&lt;p&gt;Collapsing the two into one step is how review queues get backed up.&lt;/p&gt;

&lt;p&gt;A reviewer opening a 1,000-line AI-generated PR with no pre-screening has to do both jobs at once. The narrower mechanical checks eat the time that should go to the judgment call.&lt;/p&gt;

&lt;p&gt;Separating them means the mechanical stuff gets caught automatically, and the human time goes to the part that actually needs a human.&lt;/p&gt;

&lt;h2&gt;
  
  
  What good pre-screening looks like in practice
&lt;/h2&gt;

&lt;p&gt;It runs before a human ever opens the PR, as part of the CI/CD pipeline rather than a parallel check they have to remember to read.&lt;/p&gt;

&lt;p&gt;It's specific about what it found and why, not a wall of generic linting output.&lt;/p&gt;

&lt;p&gt;A screening tool that buries real issues under a pile of false positives gets ignored within a few weeks; teams learn to click through it the same way they learn to ignore a smoke alarm that goes off every time someone makes toast.&lt;/p&gt;

&lt;p&gt;Good pre-screening gets faster and more accurate over time as it learns which patterns actually cause problems in a given codebase.&lt;/p&gt;

&lt;p&gt;That's the opposite of applying the same generic ruleset to every team regardless of what their incident history actually looks like.&lt;/p&gt;

&lt;p&gt;Teams that get this right aren't reviewing less.&lt;/p&gt;

&lt;p&gt;They are reviewing unevenly, on purpose.&lt;/p&gt;

&lt;p&gt;The teams that get this right aren't reviewing less. They're spending their review time on the 10% of changes that actually need a human's judgment, instead of splitting attention evenly across all of it.&lt;/p&gt;

&lt;p&gt;Pre-screening is the prevention half of the story.&lt;/p&gt;

&lt;p&gt;For what happens after something still slips through, see &lt;a href="https://tomosu.ai/blogs/automated-root-cause-analysis-beyond-mttr.html" rel="noopener noreferrer"&gt;why automated root cause analysis needs to look past MTTR&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;Tomosu pre-screens AI-generated changes at the merge gate, checking them against how your codebase actually works and what has actually broken it before.&lt;/p&gt;

&lt;p&gt;If review capacity is the bottleneck on your AI-assisted development, we're opening a small design partner cohort.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tomosu.ai/" rel="noopener noreferrer"&gt;Learn more about Tomosu&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>codereview</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
