AI Wrote the Code. It Must Not Be the Judge

By Slashdot Staff

The argument in one paragraph

Generative AI is now writing a meaningful share of enterprise software. The instinctive response, using more generative AI to test it, has a flaw at its core: a probabilistic system cannot be the final authority on another probabilistic system’s output. Trustworthy verification at AI speed requires a hybrid architecture in which AI reasons, deterministic systems execute and judge, and humans approve what matters. Everything else is a confident guess about a guess.

The problem AI created for verification

Software verification was designed for human-speed change. A team wrote code, a team tested it, and the two moved at roughly the same pace. AI-assisted development broke the symmetry. Code volume now compounds: generated features, generated refactors, vendor platforms shipping their own AI-written updates on their own schedule. Verification done the traditional way remains stubbornly linear, one authored test at a time, one triaged failure at a time.

Every engineering leader has seen where that mismatch leads. Coverage erodes quietly. Maintenance backlogs grow. The regression suite becomes the thing nobody fully trusts but everybody depends on. And the release decision, the one moment where the organization commits real money and reputation, ends up resting on a pass rate that says nothing about what was actually covered or why.

The tempting fix is symmetry restored by force: if AI writes the code, let AI write and run the tests, end to end, no humans involved. That fix fails for a reason worth being precise about.

Why can’t AI verify its own output?

Large language models are probabilistic. Ask one to generate a test and it produces a plausible test, which is genuinely useful. Ask it to judge whether software behaves correctly and you have stacked one probability distribution on top of another. The uncertainty compounds rather than cancels. A plausible-looking green result from a probabilistic judge is not evidence of correctness. It is a confident guess about a guess.

There is a second, quieter failure mode: shared blind spots. A model asked to verify code written by a similar model tends to inherit the same assumptions that produced the defect. The judge and the defendant went to the same school.

None of this makes AI useless for verification. It makes AI mis-assigned when it is given the verdict. The engineering question is not whether to use AI in testing but where its authority should stop.

Where should the boundary sit?

The division of labor that holds up in production looks like this:

ResponsibilityWho owns itWhy
Reading specs, proposing requirements and test coverageProbabilistic AILanguage understanding and generation is what these models are for
Drafting repairs when the application changesProbabilistic AIPattern recognition across change is high-volume, low-authority work
Executing tests and rendering pass or fail verdictsDeterministic engineThe same test against the same build must produce the same answer, every time
Approving what enters the test estate, and what changesNamed humansAccountability cannot be delegated to a model; no board or regulator accepts “the AI decided”

The principle compresses to four words: AI proposes, humans govern. The AI does the expensive cognitive work at machine speed. Deterministic execution makes the results reproducible. People own every consequential decision, with a record of what was proposed, what was approved and by whom.

How does a governed agentic loop actually work?

This is the architecture Virtuoso QA has built as Touchstone, the platform’s agentic assurance layer, and the mechanics generalize to any serious implementation of the pattern. The loop closes in nine steps:

  1. Ingestion. Specifications, process documents and user stories load into a knowledge base the agents work from, so proposals are grounded in your application rather than the model’s general priors.
  2. Requirements generation. Agents convert source material into structured, versioned test requirements, each arriving as a reviewable proposal with citations back to the source document.
  3. Human review. A person accepts, edits or rejects. Nothing enters the estate on the model’s word alone.
  4. Journey design. Approved requirements are shaped into the structure of executable test journeys, again as proposals.
  5. Materialization. An autopilot agent builds each approved journey into a runnable automated test against the real application in a real browser.
  6. Deterministic execution. The tests run in CI, cross-browser, on a deterministic engine. Same test, same build, same verdict.
  7. Failure classification. When something fails, the system classifies the outcome and traces it to the offending step, separating application defects from test decay.
  8. Repair proposal. For test decay, agents propose the repair as a reviewable diff. A human approves before anything is trusted again.
  9. Rerun and record. Repaired journeys re-execute, and every agent action along the way is recorded: what changed, why, who approved.

Two design choices carry most of the weight. Grounding: the agents operate from an ingested knowledge base and encoded team directives, not from raw prompting, which is why their proposals cite sources instead of asserting from nowhere. And the human gate as default: review is not a compliance afterthought bolted onto an autonomous system, it is the mechanism that makes autonomy acceptable. Beneath the orchestrating agents, specialist agents handle the workflow stages, and the deterministic engine renders every verdict.

What the loop produces besides passing tests

A closed, governed loop has a by-product that turns out to matter more than the automation itself: a complete, versioned record connecting source to requirement to journey to test to result to human decision. This is where platforms such as Virtuoso QA demonstrate the value of connecting AI-assisted test creation with deterministic execution and human oversight. By preserving the relationship between requirements, test results, and approval decisions, organizations can build a more reliable foundation for release confidence without relying solely on pass rates or manual reporting. When someone asks, months later, how a release was verified, the answer exists as data rather than as the memory of whoever was in the room. In regulated industries that record is the difference between an uncomfortable audit and a routine one. Everywhere else it is the difference between institutional knowledge and tribal knowledge.

What this architecture refuses to claim

Honesty is load-bearing in this category, so two boundaries stated plainly. First, fully autonomous QA, no human in the loop, is not today’s reality, here or anywhere, and engineering leaders should treat any vendor claiming it with suspicion. What runs in production today is autonomy within governed bounds, and the governance is the point. Second, auto-acceptance exists but is deliberately narrow in scope; the default is that a person approves, because the default is what your auditors and your incident reviews will actually encounter.

The results of drawing the boundary correctly are not subtle. A global IT services provider cut test authoring effort by 92% and maintenance effort by 96% on a core insurance platform. A national footwear retailer reduced regression effort from 143 hours to 42 while coverage rose from 0 to 74%, effort down and coverage up simultaneously, which is precisely the trade-off this architecture dissolves. (Source: Virtuoso QA published customer case studies; results vary by environment and scope.)

Frequently asked questions

Isn’t a human gate just a bottleneck with better branding?

No, because the human is reviewing proposals, not doing the work. Reviewing a cited requirement or a repair diff takes minutes; authoring and maintaining the equivalent by hand took the hours the metrics above measure. The gate moves human effort from production to judgment, which is where it was always highest-value.

What makes execution “deterministic” when the tests were AI-generated?

Generation and execution are separate systems. Once a proposed test is approved and materialised, it runs on an engine with no probabilistic components in the verdict path. The AI’s involvement ends at the proposal; the answer to “did this pass” never depends on a model’s mood.

How is this different from self-healing tests?

Self-healing repairs element-level breakage during execution. A governed loop operates at the system level: it detects change, assesses impact, proposes repairs as reviewable diffs, and records the decision. Healing keeps a test running; the loop keeps the whole estate trustworthy.

The claim and the architecture are different things

The uncomfortable truth for the industry is that “we added AI to testing” and “we made verification trustworthy at AI speed” are different claims, and only the architecture separates them. AI that proposes inside a deterministic, human-governed system is an assurance layer. AI that judges its own homework is a liability with a dashboard. The paradigm shift in testing is not that machines now write the tests. It is that the verdict, the record and the accountability finally got separated from the generation, and once you have seen verification built that way, the old way starts to look like what it was: hope, with tooling.

Related Categories