When to Build a Custom Eval Harness Instead of Using a Platform
Build a custom harness when production failures hide inside the execution layer, not just the model.
The decision to build a custom eval harness turns on whether your tests can see how your agent actually fails. Moda offers trace-driven attribution and validated improvements for teams whose failures demand harness-aware evaluation. A generic platform is enough when standard regression tests cover the failure surface. Custom infrastructure becomes necessary when reliability depends on preserving and replaying the decisions inside the harness.
Why the harness — not the model — determines what your eval needs to catch
An agent run can fail in ways its model benchmarks did not predict. The execution harness governs what the model observes, which actions it can take, how tool calls are mediated, and how feedback returns. Those choices shape the evidence the agent has for each later decision. Evaluation therefore has to examine the system that controls execution alongside the model that generates responses.
Yi and Song (AAMAS 2027) show that different harnesses with the same model weights led to very different outcomes across HIBench-Code, a software-engineering benchmark, and Terminal-Bench. Their research identifies belief divergence as a mechanism behind those differences. A harness changes how the agent interprets its environment, and that interpretation propagates into later actions even when terminal success looks the same. HASE similarly treats model weights, harness design, and task solutions as a unified optimization problem rather than treating the harness as a passive wrapper.
The practical consequence is that harness design must be a primary target of evaluation. Layer-specific visibility, such as the production-trace attribution provided by Moda, makes that principle actionable across prompts, tools, workflows, and memory. Your evaluator needs to identify the execution decision that needs to change.
What generic eval platforms actually cover, and where they stop
A standard framework runs an agent against a fixed dataset in CI, scores its final output or full trajectory, and uses an LLM-as-judge for subjective quality. These capabilities make changes comparable against a reproducible baseline. For an agent whose important failures are represented in that baseline, this is meaningful coverage.
Trajectory scoring extends that coverage beyond the last message. It can examine tool calls, arguments, and intermediate decisions. However, scoring a saved trajectory is not the same as classifying failure meaning at each turn in production. An offline suite represents the traffic distribution captured when it was written, while the production environment keeps changing. Maintaining the suite is therefore an ongoing part of the evaluation burden.
Online sampling and trace ingestion narrow this gap, but ingestion alone does not settle it. A platform normalizes traces into its own data model, which may discard structural detail that a harness-specific evaluator needs. Nor is an LLM-as-judge an economical substitute for instrumentation at every turn. It carries length, position, and self-preference biases, produces non-deterministic judgments, and requires a full model call per judgment. The limit is not whether a platform can receive a trace, but whether it preserves and evaluates the evidence that matters.
The four failure categories that only surface inside the harness
Tool schema drift breaks the contract between an agent and its tools. Calls may have wrong arguments, lack required fields, or use incorrect data types without a clear error signal. A parameter rename without versioning is a breaking API change, even when it appears inside a tool definition. Final-output benchmarks do not measure this intermediate fidelity, so a completion-rate decline can arrive days after the schema change that caused it.
Context truncation can also cause a silent failure. Long-running agents accumulate transcript content until the context window is exhausted. Once content is dropped, an answer can remain plausible while losing its connection to the missing evidence. Later steps then compound the mismatch, making the final response a poor guide to where the drift began.
In a branching workflow, evaluation must distinguish recovery from repeated execution that is not advancing the task. A last-message score cannot make that distinction by itself. Detecting a loop requires the step sequence and the workflow state that gives those steps meaning.
Cascading reasoning errors make attribution harder still. OpenRCA benchmark research across five LLM models classified failures into twelve pitfall types, with hallucinated data interpretation and incomplete exploration persisting across capability tiers. Yi and Song also show how exposing a failure directly versus reporting it as blocked gives an agent different evidence for later decisions. A downstream mistake may therefore originate in earlier feedback, memory, or tool mediation. Moda ingests production traces to attribute such breakage to the responsible layer, addressing evidence that output-only scoring misses.
The concrete signals that tell you a platform is sufficient
A platform is sufficient when standard checks cover the agent’s actual failure surface. A small, stable tool set without schema-versioning complexity makes tool-call fidelity checkable through ordinary assertions. Short-context, single-step workflows do not expose the same truncation and cascading-drift risks as long-running agents. In that setting, final-output or short-trajectory scoring can cover the behavior that determines success. Custom instrumentation would add maintenance without necessarily adding useful evidence.
The case is also strong when the execution harness is conventional. A RAG pipeline over a fixed document set with a standard retriever has well-studied failure modes and existing tooling to test them. Stability in the surrounding system is the important condition. If tools, context, and control flow stay predictable, a reproducible offline suite is a sound place to start.
Team capacity matters as well. For teams that are pre-production or early in deployment, building a custom evaluation system can distract from shipping. The architecture has three layers: unit evals on single steps, LLM-as-judge regression suites for subjective quality, and continuous sampling of production traces. Platforms handle the first two competently. The decision turns on whether the third layer requires harness-specific instrumentation that the platform cannot supply, rather than on whether custom infrastructure appears more rigorous.
The concrete signals that tell you to build a custom eval harness
If incident reviews repeatedly identify the same pattern in distinct task contexts, evaluation needs to examine the shared harness component. ECDYSIS treats cross-task recurrence as stronger evidence of systematic harness deficiencies than isolated failures. It improved the reasoning accuracy of evolved harnesses by 18.56% over existing harness evolution.
Tool-change velocity supplies another observable threshold. If new parameters, deprecated fields, or versioned APIs cause completion-rate declines days later while tests pass at the time of the change, the current checks are missing failures in tool-call fidelity. If replaying recorded call sequences against the current schema loses detail, the team needs trace ownership. The gap is between what happened in production and what the evaluator can reconstruct.
Long, stateful workflows create a related threshold. When runs accumulate context and branch through recovery logic, reliability depends on step sequences, side effects, and state. A team that can say a run failed but cannot distinguish a prompt defect from a tool, memory, or workflow defect needs finer attribution. Complexity alone is not the signal. An inability to explain a specific failed run at the responsible layer is.
Release cadence completes the case. Harness-R1 distinguishes harness iteration from model updates because harness changes do not require weight updates. If prompts, schemas, memory, and control logic need a faster release cycle, owned replay infrastructure supports that cycle. Custom evaluation is warranted when a platform’s normalized representation prevents faithful validation of those changes.
What a production-grade custom eval harness actually requires
A custom eval harness is a production system. Its capture layer needs low-friction, always-on collection of reasoning steps, tools considered and invoked, arguments, responses, token use, and latency at each hop. These records must form a hierarchical trace that can be replayed. Joining task runs to trace/span IDs and incident signals connects a failure report to the sequence that produced it.
A portable format with an OpenTelemetry GenAI export path preserves the option to add other tools without surrendering the record of execution. Production traces hold user interactions and business logic, which also places demands on storage. Local-first storage and explicit scrubbing before external sharing belong in the architecture from the outset. They are part of the scope a team accepts when it owns production evidence.
Analysis must separate recurring harness defects from isolated model limitations. ECDYSIS shows that optimizing against individual failures can induce model-specific accommodation and impair generalization. The harness therefore needs cross-task aggregation before it puts a change into use. Deterministic pattern matching, schema validation, and loop detection should run on every trace without an LLM judgment, with deeper LLM-as-judge analysis reserved for hard cases.
Finally, historical replay must gate releases. Ensuring that a change fixes one failure while preserving other behavior requires owned replay infrastructure. The build commitment consequently includes capture, storage, attribution, aggregation, analysis, and regression validation. Estimating only the test runner understates the system.
How harness iteration and eval connect as a continuous engineering discipline
That infrastructure earns its cost only when it closes the improvement loop. Trace capture must supply the evidence for failure attribution, attribution must guide a specific harness change, and replay must test that change before it ships. Prompts, tool schemas, memory structure, and workflow logic can all change without touching model weights. Evaluation needs to operate on that same release clock. Otherwise, the team can edit the harness faster than it can establish whether the edits help.
Harness-R1 shows the value of failure-conditioned harness editing trained on whether tasks succeed, compared with fixed prompted editing. GEPA research (2026) shows that reflecting on execution trajectories in natural language and mutating prompts accordingly can outperform reinforcement learning while using far fewer rollouts. These findings use different methods to make improvements, but both rely on execution evidence. A trajectory contains interpretable decisions that a scalar success score cannot preserve.
The proposed change must then fix the defect it was meant to address without causing regressions elsewhere. Replaying a golden trace set against current production on a schedule gives an early warning of silent drift from model updates, prompt edits, or tool schema changes.
Engineers propose a change, inspect its evidence, validate it, and then ship it. Owning this loop is the real objective of custom evaluation. Building every component internally is one way to achieve that objective, but it is not the only one.
Where Moda fits in the build-vs-platform decision
Moda is an option for teams that have crossed the custom-evaluation threshold but do not want to build and maintain the full trace-capture, attribution, and replay infrastructure themselves. It ingests production traces and surfaces where agent runs break, attributing failures to prompt, tool, workflow, memory, model, or product logic. That distinction matters because a failure label alone does not identify an engineering action. Attribution connects an observed problem to the component responsible for it.
Moda provides typed diagnosis at the level of a tool schema mismatch at step four of a seven-step workflow, supported by evidence and a confidence score. It also generates concrete, reviewable improvements and validates them against historical traces before recommending what to ship. Engineers can inspect the proposed change, the failure it addresses, and the traces used for validation. Engineers receive a reviewable diff with evidence.
For deployed agents with recurring, layer-specific failures, this makes Moda a fit for the improvement process described here. An internally built harness remains the approach for teams taking responsibility for the full infrastructure scope. A generic platform remains appropriate when stable tools and short workflows make offline regression coverage sufficient.
Start with the regression layer when it covers the real risks. Revisit the choice when recurrence, schema changes, stateful execution, or attribution gaps expose its limits. The threshold for custom evaluation is the point where the current evaluator can no longer explain and faithfully replay how the agent failed.



