Evals Are the AI Delivery Pipeline

- Published on

Evals Are the AI Delivery Pipeline
Software teams learned to stop treating testing as the ceremony at the end.
Tests moved into the delivery pipeline because code changes continuously. A passing build became evidence that a version deserved to move closer to production. Static analysis, integration tests, security checks, and staged rollouts created a sequence of gates between “someone changed something” and “users now depend on it.”
AI systems need the same shift.
Too many teams still treat evaluation as a benchmark exercise performed when choosing a model. They assemble a spreadsheet, compare a few scores, select a winner, and then build a product whose prompts, tools, retrieval, memory, policies, and traffic change every week. The original evaluation remains in a deck while the behavior it measured no longer exists.
An AI product is not a model. It is a changing system that produces probabilistic behavior. Its evaluations should therefore operate like a delivery pipeline.
Every material change should earn its way forward with evidence.
The Thing Under Test Is the Whole Behavior Path
A model score tells us something useful about a model under specific conditions. It does not tell us whether our product will perform the work we promised.
The product's behavior emerges from the model, system instructions, retrieved context, tool descriptions, orchestration, state, and the interface through which a user gives direction. Change any of those and the outcome can change.
A prompt edit can make tool use more cautious and reduce task completion. A retrieval improvement can surface more relevant documents while accidentally exposing conflicting versions. A faster model can make routine steps cheaper but mishandle the rare cases where ambiguity compounds. A new approval gate can improve safety and create a dead end no workflow knows how to resume from.
The evaluation target must be the capability as the user experiences it.
If the capability is “prepare a safe dependency upgrade,” the test should not end when the model names the correct version. It should cover repository inspection, change quality, compatibility handling, tests, and the evidence returned to the user. If the capability is “answer a policy question,” the evaluation should test source selection, citation support, uncertainty, and refusal when the available policy is insufficient.
We evaluate the behavior path because that is what production runs.
Start With Work, Not a Generic Benchmark
The strongest evaluation sets are built from representative decisions and failures.
Begin with tasks the system is expected to perform. Include the common path, but do not let frequency erase consequence. A rare task that can publish data, move money, or modify production deserves disproportionate attention.
Useful cases often come from four places:
- real user requests, carefully sanitized where necessary
- expert-designed cases that express the intended capability
- production failures and near misses
- adversarial cases aimed at known boundaries
Each case should include more than an input and an ideal paragraph. It needs acceptance criteria. What facts must be present? Which actions are allowed? What evidence must support the result? Which outcomes are clearly wrong? Where is reasonable variation acceptable?
Some criteria can be exact. A generated configuration must parse. A cited source must exist. A tool call must remain inside the approved account. Other criteria require judgment. The recommendation may have several valid forms, but it still needs to address the real tradeoff and communicate uncertainty honestly.
Representative work gives an evaluation meaning. Without it, the score becomes a number searching for a product decision.
Separate Outcome, Process, and Policy
One aggregate score hides the kind of failure we need to fix.
I prefer to evaluate at least three dimensions.
Outcome quality asks whether the result solves the task. Is the code correct? Is the analysis useful? Is the answer grounded? Does the artifact satisfy the requested constraints?
Process quality asks how the system got there. Did it inspect the relevant files? Did it use the right tool? Did it recover from a failure? Did it waste ten expensive calls on a path a smaller model could have rejected immediately?
Policy compliance asks whether the behavior stayed inside its authority. Did it reveal protected information, skip a required approval, follow an instruction from untrusted content, or claim an action completed without evidence?
A result can be correct and still fail the process or policy test. An agent might produce the right database migration while bypassing the repository's required migration tooling. A research answer might be factually accurate but cite private data the user was not allowed to access.
Those are not partial successes. They are distinct failure modes that need distinct gates.
Deterministic Checks Should Carry the Easy Weight
Not every AI output needs another model to judge it.
Use parsers for syntax, schemas for structure, test runners for behavior, policy engines for permissions, and direct state reads for completed actions. Deterministic checks are fast, reproducible, and easy to debug. They also reduce the temptation to interpret a persuasive explanation as proof.
Model-based grading is valuable where meaning and judgment matter. It can compare a response against a rubric, identify unsupported conclusions, or assess whether a proposed architecture addresses the actual constraints. But a model judge should not replace a check software can perform exactly.
Judges also need evaluation. They can prefer a writing style, reward verbosity, miss a subtle policy violation, or agree with outputs from the same model family for correlated reasons. Calibrate them against expert-reviewed examples and track disagreement rather than hiding it inside an average.
The goal is not to automate every judgment. It is to spend human judgment where it changes the decision.
A Release Gate Needs a Baseline
An eval becomes operational when it can answer a release question.
Is the proposed version better enough to ship? Which behavior improved? Which regressed? Did cost or latency change? Are the failures concentrated in a critical slice?
That requires a baseline. Run the current production configuration and the candidate against the same representative cases. Compare more than a total score. Segment results by task type, risk, language, customer environment, tool path, and any other boundary that matters to the product.
A candidate that improves average quality by four points but doubles policy failures should not pass. Neither should one that makes routine work cheaper by quietly degrading the difficult ten percent the product was built to solve.
Release policy can be explicit:
- no regression on critical safety cases
- a minimum pass rate for core workflows
- bounded cost and latency changes
- manual review for newly failing or materially changed cases
- a rollback path if production signals disagree with the offline result
Not every change needs the same gate. Editing customer-facing policy behavior deserves more scrutiny than tuning the phrasing of an internal summary. The pipeline should reflect consequence.
Traces Turn Failures Into Test Cases
Offline evals are always incomplete. Production will find combinations the test set did not imagine.
That is why observability and evaluation should form a loop.
A useful trace records the capability invoked, context sources, model and configuration, tool calls, relevant outputs, policy decisions, latency, cost, verification results, and user-visible outcome. When a run fails, the team should be able to turn that trace into a sanitized regression case.
The conversion matters. A failure that remains only in a dashboard is likely to recur. A failure that becomes a durable case changes the release standard for every future version.
Production feedback can also expose false confidence in the test set. Perhaps experts approve an answer that users consistently rework. Perhaps the system passes synthetic tool cases but fails when an external API returns partial success. The evaluation pipeline has to learn from operational reality, not defend its original rubric.
This is how the system accumulates reliability rather than merely accumulating prompts.
Test the Boundaries, Not Only the Happy Path
Agent systems fail at transitions.
Context moves from retrieval into reasoning. A proposal becomes a tool call. A tool acknowledgement becomes a completion claim. One worker hands state to another. A task pauses for approval and resumes under a new session.
Each boundary deserves cases where the information is incomplete, contradictory, stale, or malicious.
What happens when the retrieved document instructs the agent to ignore policy? When the tool times out after possibly completing the action? When the user changes scope after a plan is approved? When two workers race to update the same record? When the model is correct but cannot produce the required evidence?
These cases measure the agent harness, not only the model. They are often the tests that distinguish an impressive prototype from a system a team can operate.
Evals Need Ownership
An evaluation set is a product asset. Someone has to own its meaning.
Domain experts should help define what good looks like. Engineers should make runs reproducible and integrate the gates. Security and policy owners should define consequential boundaries. Product teams should connect scores to user outcomes. Operators should feed production failures back into the suite.
If evaluation belongs only to an AI research group, it can drift toward model comparison. If it belongs only to application engineering, it can miss domain correctness. Shared ownership is slower at the beginning and much faster than discovering in production that every team meant something different by “quality.”
Cases also need maintenance. Policies change. Tools change. Some failures stop being relevant. Others become more important. Version the suite, review changed criteria, and preserve enough history to understand why a release passed at the time.
The Pipeline Changes How Teams Build
Once evaluations become part of delivery, they change engineering decisions upstream.
Capabilities gain clearer contracts because vague behavior is difficult to test. Tool results become more structured because evidence needs to be checked. Context sources gain provenance because failures need to be traced. Model routing becomes measurable rather than ideological. Product conversations become less about whether an output “feels smarter” and more about which work improved under which constraints.
This is similar to what continuous integration did for software. The pipeline does not guarantee correctness. It creates a shared, repeatable standard a change must satisfy before trust expands.
The standard will never be complete. It can still be useful.
Ship Behavior With Evidence
AI teams will keep changing models, prompts, tools, retrieval systems, memory, and orchestration. That pace is not going away.
The answer cannot be to evaluate once and hope the surrounding system remains equivalent. The answer is to make evaluation part of how behavior moves.
Build cases from real work. Separate outcome, process, and policy. Use deterministic checks where certainty is available. Calibrate judgment where it is not. Compare candidates to a visible baseline. Turn production failures into permanent tests. Gate the changes that carry consequence.
An AI release should not be a prompt someone liked in a demo. It should be a version of behavior that has earned its way through evidence.