A harness has four parts. The dataset holds cases — inputs paired with expected outcomes or a grading rubric. The runner executes the system against every case, ideally against the production prompt and tool configuration. The scorers grade each run. The report diffs results against the previous baseline, so a change that breaks three cases is visible before it ships rather than after a user finds it.
Scoring splits by answer type. Objective behaviour gets deterministic checks — did it call the right tool, is the output valid against the schema, did it stay within policy. Subjective quality gets a model-graded judge with a written rubric, and that judge must itself be calibrated against human ratings before its scores mean anything; an uncalibrated judge produces confident numbers about nothing. The cases a judge cannot settle go to human review.
The golden set is curated, not collected. The best cases come from production failures and human-in-the-loop corrections — real inputs the system actually got wrong — plus adversarial cases including prompt-injection attempts. Fifty reviewed cases outperform a thousand unreviewed ones. The harness earns its keep in CI, where it gates releases: a change that drops the pass rate or the judge score does not deploy, which is what makes an AI system maintainable rather than frozen.
Public benchmarks and private evals answer different questions. Suites like lm-evaluation-harness or HELM rank foundation models on generic tasks and are useful for shortlisting candidates; they say little about your system, because your prompts, tools and data distribution are the system. The golden set that matters is built from your own tasks, and it has to be protected — cases that leak into training data or get overfit through repeated tuning stop measuring anything.
Everything in the harness is versioned: the dataset, the prompt templates, the judge prompts and the scorers themselves. A score only means something against a frozen configuration, and an improvement that cannot be tied to a specific change is superstition. Mature teams store results per commit, so the answer to "when did this regress" is a lookup rather than an archaeology project, and model upgrades become a controlled experiment instead of a leap.
Codazz builds this in production — Evaluation & Observability.