How we know an agent still works

Agent behaviour changes when a model changes, a prompt changes, or a provider updates something they did not tell you about. Without a harness, the first sign is a customer noticing — which is not a quality process, it is a hope.

AIShipped in segment S13 · 831 words
QUESTIONTOOLS CALLEDREVISIONS READANSWER“Why did the cost ofPRD-100 rise 14%since March?”Cost Agent · Recommendresolve(PRD-100, 2026-03-01)resolve(PRD-100, today)costRollup(both)The same services the interface calls.No private read path.330-1140rev A · releasedECO-2214eff. 2026-07-01cost · ERPread-only, as at todayOne line drives it:the control boardsuperseded in July.330-1140 @AECO-2214click to reproduceEvery citation names an object at a revision, so the reader can re-run the resolution and get the same bytes. An agent that cannot cite abstains and escalates.

What it is, and what it is not

A set of cases with known-correct answers, run against every agent before a model change, a prompt change or a provider version bump reaches a tenant.

It is not benchmarking. Published benchmarks measure general capability on general tasks; what matters here is whether the BOM Agent still correctly identifies why a cost moved on a structure with a phantom in it. Those questions have almost nothing to do with each other.

It is also not a substitute for the architecture. Permission tiers, tool allowlists and citations bound what a wrong answer can cause; evaluation is about how often answers are wrong in the first place. Both are necessary and neither replaces the other.

What gets measured

Two things, and the second is the one people forget.

  • Was the answer right? Against cases where the correct answer is known because the underlying deterministic service produces it — the cost decomposition, the affected object set, the duplicate cluster.
  • Did it abstain when it should have? A case with insufficient evidence has a correct answer of *I cannot establish this*, and an agent that produces a confident response instead has failed that case as surely as one that gets a number wrong.
  • Did the citations resolve? A claim citing an object at a revision that does not support it is a failure even when the conclusion happens to be correct, because the reader's ability to check is the thing being tested.
  • Did it stay inside its tier? An agent at Recommend attempting a write is a harness failure rather than a security incident, because the tool layer refuses it — but it indicates something has drifted.

The failure it prevents

A provider ships a model update. Nothing in the release notes suggests it matters, and for most requests it does not.

But the Change Agent's drafts start including affected objects at depth four that it previously reported at depth three and stopped — a subtle change in how it summarises a traversal it did not perform differently. Reviewers see slightly longer affected lists and approve them, because the lists look thorough.

Three weeks later somebody notices that a change was scoped wider than it should have been and a part was revised unnecessarily. Tracing that back to a model update is nearly impossible after the fact. A harness catches it before the update reaches a tenant, because the golden case has a known affected set and the new output does not match it.

How the cases are built

From the deterministic services. Where impact analysis, resolution or comparison produce the ground truth, the case is generated rather than hand-written — which is why the harness can be large without being expensive to maintain.

From real questions. Cases derived from demo transcripts and support conversations, because the questions people actually ask are shaped differently from the ones anybody invents. That is also where the abstention cases come from: the questions with no good answer are the ones users ask most confidently.

From past failures. Every reported bad answer becomes a case. That is the ordinary discipline of a regression suite and it matters more here, because an agent failure is rarely reproducible by staring at it — you need the case to run it again.

Cases are versioned with the tenant configuration they assume, so a case that depends on a particular object model does not silently start failing because the model moved on.

How it meets your ERP

Cases involving ERP-sourced values use recorded fixtures rather than a live connection, because a harness whose results depend on today's inventory is one that fails for reasons unrelated to the agent.

That means the harness verifies the *reasoning* over ERP context — that the Cost Agent separates a price change from a structure change correctly — rather than verifying your ERP. The connector's own correctness is tested separately, against its published field map.

One class of case is specifically about the boundary: an agent asked to change a cost, or to publish to a production ERP from a tier that does not permit it. The expected result is refusal, and a harness run where those pass is a run where the ownership rules are still holding.

Where the boundary is

A harness measures the cases in it. Real questions are more varied than any case set, and an agent can pass every case and still be wrong about something nobody thought to test. That is the honest limit, and it is why the permission tiers and the citation model carry the weight they do.

Results are not published as a score. A single accuracy figure invites comparison against numbers produced by different methods on different data, and the comparison would be meaningless in both directions. What is published is the behaviour the harness enforces — abstention, citation resolution, tier adherence — rather than a percentage.

Facts

Runs beforeEvery model change, prompt change or provider bump
MeasuresCorrectness · abstention · citation resolution · tier adherence
Ground truthGenerated from the deterministic services
Case sourcesReal transcripts · past failures · generated cases
Abstention casesCorrect answer is *I cannot establish this*
ERP valuesRecorded fixtures, never a live connection
Boundary casesRefusal is the expected result, and it is tested
Not publishedA single accuracy score — it would be meaningless

Frequently asked

Why not use published benchmarks?

Because they measure general capability on general tasks. What matters here is whether the BOM Agent still correctly identifies why a cost moved on a structure containing a phantom assembly, and those two questions have very nearly nothing to do with each other.

How can you know the correct answer?

For most cases, because a deterministic service produces it — impact analysis, resolution and comparison give ground truth the agent is expected to reason over correctly. Those cases are generated rather than hand-written, which is why the harness can be large and still maintainable.

Do you test that it declines to answer?

Yes, and it is the half people forget. A case with insufficient evidence has a correct answer of I cannot establish this, and an agent producing a confident response instead has failed that case as surely as one that returns a wrong number.

What happens when a model provider updates?

The harness runs before the update reaches a tenant. The failure it exists to catch is subtle — an agent summarising a traversal slightly differently, producing affected lists that look thorough and are wider than they should be — which is nearly impossible to trace after the fact.

Does it test against our live ERP?

No, against recorded fixtures. A harness whose results depend on today's inventory fails for reasons unrelated to the agent. It verifies the reasoning over ERP context — separating a price change from a structure change — while connector correctness is tested separately.

Do you publish an accuracy score?

No. A single figure invites comparison against numbers produced by different methods on entirely different data, and that comparison would be meaningless in both directions. What is published instead is the behaviour the harness enforces: abstention, citation resolution and tier adherence.

Can an agent pass everything and still be wrong?

Yes, and that is the honest limit. Real questions are more varied than any case set, so an agent can pass every case and still be wrong about something nobody thought to test — which is exactly why permission tiers and citations carry the weight they do.