<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Shravin Vivek]]></title><description><![CDATA[Shravin Vivek]]></description><link>https://shravinvivek.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>Shravin Vivek</title><link>https://shravinvivek.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 07:24:39 GMT</lastBuildDate><atom:link href="https://shravinvivek.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Why the Agent That Ran a Test Shouldn't Grade It]]></title><description><![CDATA[I'm Shravin, and I build TestAutomate, an agentic regression-testing tool that isn't released yet. This is a condensed version of one design decision we made. The full write-up, including when determi]]></description><link>https://shravinvivek.hashnode.dev/why-the-agent-that-ran-a-test-shouldn-t-grade-it</link><guid isPermaLink="true">https://shravinvivek.hashnode.dev/why-the-agent-that-ran-a-test-shouldn-t-grade-it</guid><category><![CDATA[Testing]]></category><category><![CDATA[llm]]></category><category><![CDATA[AI]]></category><category><![CDATA[QA]]></category><dc:creator><![CDATA[Shravin Vivek]]></dc:creator><pubDate>Fri, 11 Sep 2026 15:56:18 GMT</pubDate><content:encoded><![CDATA[<p><em>I'm Shravin, and I build <a href="https://testautomate.ai/">TestAutomate</a>, an agentic regression-testing tool that isn't released yet. This is a condensed version of one design decision we made. The full write-up, including when deterministic checks beat a model judge, is <a href="https://testautomate.ai/blog/llm-as-a-judge-software-testing/">on our blog</a>.</em></p>
<p>When an AI agent runs an end-to-end test in a real browser, the obvious next move is to ask it how the run went. It was there. It saw everything, and that's the problem with trusting its answer.</p>
<h2>Self-grading is a known bias</h2>
<p>The research that popularized using a model as a judge also cataloged how model judges go wrong. The one that matters most here is self-enhancement bias, where a model rates its own output more generously than a neutral party would.</p>
<p>An agent that has just fought its way through a long flow is the least neutral party available. Its closing summary describes what it set out to do, and a verdict can't be built from intent.</p>
<h2>Split the roles by design</h2>
<p>In our runner, one model drives the browser. A separate verifier model, which never took part in the run, makes one judgment per attempt. It gets two things:</p>
<ul>
<li>the test's expected outcome, written as itemized statements about the end state (including negative ones, like "no other records were modified")</li>
<li>the recorded trajectory, meaning every action the agent took, every result that came back, and the agent's closing summary, labeled as the agent's own account</li>
</ul>
<p>Its standing instruction is to judge only on evidence in that record. If nothing in the trajectory clearly shows an expectation was met, it isn't met, however confidently the summary claimed success.</p>
<h2>The rules that keep the judge honest</h2>
<p>A separate judge isn't enough on its own. We designed against specific failure modes.</p>
<p>Verbosity bias (rewarding long, confident prose) is the most dangerous one here, because an agent summary is exactly that. So the judge gives no weight to the summary's claims, only to recorded actions and results. We also built in an explicit asymmetry. Calling a run a pass when a core behavior broke is treated as much worse than a false alarm, so when the judge is in doubt about a core expectation, it marks that expectation missing.</p>
<p>Strictness like that can turn into noise, so there are pressure valves. An expectation the author marks <code>[incidental]</code> can never fail a run. A change that looks intentional, like a renamed button or an extra confirmation dialog, becomes a flag on a passing verdict. The flag records what was expected and what was seen, along with why it looks intended. A flag never excuses a core expectation that genuinely wasn't met.</p>
<p>If a failed run is retried on a stronger model, the retry gets its own fresh judgment, and nothing is averaged across attempts. The last rule is about admitting when there's no judge at all. If the verifier can't be reached, the run is recorded as failed with a note that the trajectory needs human review, and it's never escalated to the retry, since escalating a run nobody graded would manufacture confidence out of an outage.</p>
<h2>What a verdict should hand you</h2>
<p>A verdict should give you more than pass or fail. You get a reasoning summary, every expectation met, every expectation missing, any flags, and any extra actions the agent took that nobody asked for.</p>
<p><img src="https://testautomate.ai/screens/verdict-detail-reasoning.png" alt="A failed test in TestAutomate where the separate verifier explains that the agent operated on the wrong review cycle, so the expectations tied to the required cycle were not met." /></p>
<p>That's a real failed verdict from our QA environment. The test required one specific review cycle. The verifier's reasoning says the agent operated on a different one, so those expectations weren't met. Instead of investigating everything behind a bare red X, you'd check cycle selection first.</p>
<h2>Where a model judge doesn't belong</h2>
<p>None of this means you should replace coded assertions. If a property is machine-checkable behind a stable interface, a deterministic check is cheaper and faster. It's also perfectly repeatable, while a model judge is probabilistic. The judge earns its place on open-ended flows whose expected outcomes are written in plain language and whose UI won't hold still, which is where most end-to-end suites live.</p>
<p>The full post, <a href="https://testautomate.ai/blog/llm-as-a-judge-software-testing/">LLM as a Judge Software Testing in Practice</a>, covers bias and reliability in more depth and compares who grades a run under each testing approach.</p>
<p>Would you trust a model to grade your end-to-end runs? What would it need to show you first?</p>
]]></content:encoded></item></channel></rss>