AI evals and observability: how teams measure AI quality
04
Key concepts
8 min read · Chapter 4 of 10
01
Entity and identity
What is the unit of record, and how do we know it is the same one?
The unit that gets evaluated is a release bundle: the dated model version, sampling settings, prompt, tool definitions, retrieval settings and guardrail versions, treated as one thing. Changing any part makes a new bundle. A judge has an identity too: model version, judge prompt and the example answers in it. "GPT-x judge with prompt v3" and "GPT-x" are different instruments, and a score means little unless the report names both.
"The model" is several things: the named model, a dated snapshot, an alias that points wherever the provider chooses, the serving platform and the product wrapped around it. Anthropic's 2025 bugs hit the same model at different rates on its own API, Amazon Bedrock and Google's Vertex AI, so pinning a version wouldn't have helped. Its 2026 problems sat in the Claude Code product layer, and the company said the API and inference layer weren't affected, so teams that built on the API were spared.
Below the bundle sit the eval case, the versioned dataset, the run, the trial (one attempt) and the trace; OpenTelemetry gives traces standard IDs, and nothing gives a dataset row or a grader one. Vendor names shift too: Galileo became Splunk Agent Observability within weeks of its sale.
02
State and lifecycle
What states exist, and what moves an entity between them?
A change moves through proposed, evaluated, rolled out, released and monitored, with blocked and rolled back as exits. Test cases have states of their own: candidate, active, quarantined for flakiness, retired when stale or saturated. In Anthropic's guidance, capability evals start with low pass rates and give the team something to climb, then "graduate" into regression evals, which should sit near 100%, once they pass reliably.
Models carry states set by the provider (active, legacy, deprecated, retired), with slightly different meanings at each lab and cloud. Judges move between calibrated, drifting and recalibrated, and vendors between free, paid, acquired and sunset. OpenAI's guide says its hosted Evals product goes read-only on October 31 and shuts down on November 30, 2026.
03
System of record and ledger
Who owns the truth, and how do systems reconcile?
There's no single record of quality. Four stores hold pieces of it:
| Record | Where it lives | The catch |
|---|---|---|
| What happened on each request | The trace store | Sampled, kept from 14 days to a few years depending on plan, content capture off by default |
| Test cases and scores | The eval platform | Consoles can close; OpenAI's hosted Evals ends November 30, 2026 |
| Prompt versions | Git, or a prompt-management tool | A tool that lets anyone edit prompts can bypass code review |
| What the provider saw | The lab's request logs | Kept for days or not at all, depending on the lab and contract |
| What the agent actually did | The system it acted on (help desk, payments, CRM) | The trace says "refund issued"; only the payments system knows |
None of these is a ledger. I'd keep each eval result with its bundle, model version, judge version, dataset version and date in storage you control, in files git can diff. The EU AI Act makes deployers of high-risk systems keep logs for at least six months, longer than some model versions live.
04
Rules and policy
What logic decides outcomes, and who can change it?
The rules that bite are internal: the rubric (what "good" means for each failure mode), pass thresholds, which checks block a merge, who signs off, and who may override or lower a threshold. I'd add who may change the judge, since that changes every score after it.
Practice varies on strictness. Anthropic wants regression evals near 100%; Hamel Husain, a consultant who writes widely on evals, says the acceptable rate is a product decision. Will Larson found the tests for an internal agent useful as "directional context" rather than a blocking gate, because runs were flaky; one fix is to block only when a case fails three tries out of three.
After incidents, labs wrote stricter rules for themselves. OpenAI said it would treat model behaviour issues "as launch-blocking like we do other safety risks". Anthropic added a per-model eval suite for every Claude Code system-prompt change, soak periods and gradual rollouts. xAI said it would publish Grok's system prompts and require review after an unauthorised prompt edit in May 2025.
Contracts set the outer rule. Lab terms disclaim the accuracy of outputs: Anthropic's commercial terms, for example, provide outputs "as is" and make the customer responsible "to evaluate whether Outputs are appropriate". Testing quality is contractually the builder's job.
05
Effective dating
Which version of the rule applied at that moment?
An eval result holds for one bundle, one judge and one dataset version on one date. An alias in production is an unannounced model change, and a judge called by alias is an unannounced change to your ruler. Datasets age too: a test set built before a policy change passes the agent confidently on the old policy.
Dates I'd keep on a calendar as of October 2026:
| Change | Effective | Status (Oct 2026) |
|---|---|---|
| Anthropic's Claude Sonnet 4.5 retires (deprecated September 30) | November 30, 2026 | Upcoming |
| OpenAI's hosted Evals goes read-only, then shuts down | October 31 and November 30, 2026 | Upcoming |
| OpenAI's GPT-5 and o3 snapshots shut down (deprecated June 11) | December 11, 2026 | Upcoming |
| Gemini 3.8 Flash list price doubles, so a judge on it doubles in cost | January 1, 2027 | Upcoming |
| LangSmith changed how base traces are counted and billed, per a third-party tracker | July 21, 2026 | Live |
| EU AI Act high-risk duties, including testing against preset metrics | December 2, 2027 | Upcoming; moved from August 2, 2026 |
Notice periods set the rhythm: at least 60 days at Anthropic, at least six months for OpenAI's generally available models, as little as two weeks for some Google previews, and Microsoft's Foundry upgrades standard deployments automatically when a model retires. A team on several providers inherits the shortest clock in its stack. Changes can break the call itself: Anthropic's models from Claude 4.7 onward return an error if temperature or top_p is set to a non-default value. Benchmarks age as well; SWE-bench Verified lasted about 18 months from launch in August 2024 to OpenAI dropping it.
06
Interfaces and standards
What format and protocol do counterparties speak?
Tracing is closer to portable than evals. OpenTelemetry's AI conventions define spans for model calls, agent runs and tool calls, plus an event to carry an evaluator's score; they're still in "Development", so vendors fill gaps with their own SDKs or Arize's related spec, OpenInference.
Evals have no shared format: Promptfoo's YAML files, Inspect's Python tasks, Google ADK's evalset JSON and Braintrust's experiments don't move cleanly between tools, so lock-in sits in the eval history more than in the traces. Gates plug in through CI: Braintrust's GitHub Action can block a merge when a score falls below a threshold, and Promptfoo's has a fail-on-threshold setting. Inspect, from the UK AI Security Institute, is the closest thing to a neutral runner, and batch APIs at OpenAI, Anthropic and Google halve token prices for runs that can wait, which covers most nightly suites.
Labs disagree on how to grade agents. Anthropic grades the outcome (did the refund land, did the tests pass) so a valid path nobody anticipated isn't punished. Google's ADK scores tool calls against an expected sequence, with an exact-match default, which suits regression tests and penalises creativity. OpenAI's trace grading sits between, scoring whole traces against criteria.
07
Networks and counterparties
Who sits between us and the outcome, and what do they want?
| Party | What they control | What they absorb when quality slips |
|---|---|---|
| Product team (PM, engineers) | The gate, the rollout, the bundle | Rework, rollbacks, the customer conversation |
| Domain experts | What "good" means | Their time; they're scarce and rarely budgeted |
| Model providers | Model versions, aliases, retirement dates, terms | Reputation when the regression is theirs |
| Eval and observability vendors | The viewer, the workflow, the stored history | Little; contracts don't cover missed regressions |
| Users | The real ground truth, through behaviour | The bad answers, usually first |
The domain expert is the counterparty I'd underestimate least. Husain and Shankar recommend one domain expert who sets the standard, and that person's labels are the most valuable asset in the stack. Their method comes from practitioners who also sell a paid course on it, so I treat it as well-tested advice rather than settled research.
Users are also, in practice, the monitor of last resort, and their feedback is biased: OpenAI said its GPT-4o update over-weighted short-term thumbs-up and thumbs-down signals, which is how flattery looked better in the numbers.
08
Regulatory layering
Jurisdiction × activity × entity type: is it a license or a certification?
No law tells a PM how to build a test set. The rules arrive in layers, and which ones apply depends on what the product decides:
| Layer | What it covers | Applies to a support chatbot? |
|---|---|---|
| General law | Misrepresentation, consumer protection, anti-discrimination | Yes, after the fact (Air Canada) |
| AI-specific law | EU AI Act; US state laws on hiring, credit and insurance | Disclosure only, unless it makes decisions about people |
| Sector rules | Medical devices (FDA), bank model risk, insurance | Only in those sectors |
| Contracts and questionnaires | Versioning, change notice, test evidence | Yes, for any B2B seller |
For the help-desk company the binding layers are general law and its customers' contracts. A team whose agent screens job applicants or prices insurance gets the AI-specific and sector layers too, and bias testing becomes part of the eval suite. That side is covered in AI governance and model risk.
09
Exceptions and reversals
What goes wrong, and how is it undone?
| Exception | Who starts it | What happens |
|---|---|---|
| Blocked at the gate | The suite | Triage: real regression, eval bug, judge noise or an accepted trade-off |
| Passes offline, fails on the rollout slice | Real traffic | Stop widening; add the failing traces to the test set; re-run |
| Rolled back after an incident | Users, support or monitoring | Revert the bundle; check caches and actions already taken; write the test case first |
| Forced change by the provider | Retirement notice, alias move, removed parameter | A model upgrade with a deadline |
| Judge changed or retired | The provider or your team | Re-score a human-labelled anchor set; mark old and new scores as not comparable |
| Eval tool shut down or sold | The vendor | Export datasets and results before the deadline |
Reversal is easy for prompts and model pins and hard for everything else. A retired model can't be rolled back to, and agent actions stay done: in July 2025 Replit's coding agent ran destructive commands on a customer's database during a code freeze, and the fix afterwards was separating development from production. Compensation is close to nonexistent. After its April 2026 postmortem Anthropic reset subscribers' usage limits; I found no lab credits or refunds to builders for degraded quality after any incident.
10
Liability allocation
When it fails, who pays?
| Failure | Who absorbs it first | How |
|---|---|---|
| The agent states a wrong policy | The company running it | Air Canada paid C$812.02 after a tribunal held it responsible for its chatbot |
| The provider's model or serving stack degrades | The builder, toward its own customers | No quality SLA; lab caps of about 12 months of fees; accuracy disclaimed |
| The agent takes a harmful action | The customer, then the agent vendor | Contract and goodwill (Replit) |
| A quality claim turns out to be false | The vendor making the claim | Texas v. Pieces; SEC "AI washing" penalties |
The deployer owns what its AI says and does. Providers disclaim accuracy, cap liability at roughly a year of fees and write SLAs for uptime (Bedrock's credits apply when a region is down), so when a lab's change causes the regression, the builder still faces its customers. Inside the company, the PM who owns the quality bar owns the gate decision, so I'd record each sign-off with the report behind it.