Synthetic Evaluation Data That Finds Real Failures

Start from a failure taxonomy, not a prompt for examples
Synthetic generation creates useful coverage only when each case is assigned to a specific behavioral boundary the product must defend. The production boundary is larger than the feature that makes the technique attractive: callers arrive with different authorization, freshness, latency, and quality requirements, while the underlying model and data keep changing. A design is therefore incomplete until it states which inputs are part of identity, what may be reused, what must be recomputed, and which failure should be visible to the caller. Treating those choices as an explicit contract prevents an optimization from quietly becoming a correctness or governance bug.
A taxonomy decomposes failure by intent, input condition, required evidence, forbidden behavior, tool state, and expected recovery path. This mechanism couples layers that teams often measure separately. A change in routing alters traffic shape; a change in traffic shape alters cache behavior and queue time; a change in retained context alters cost, privacy exposure, and model behavior. Preserve the intermediate decisions needed for replay: normalized inputs, policy version, selected route, relevant hashes, model revision, timing, and outcome. The final text alone cannot explain why the system behaved as it did, and it cannot support a safe rollback when the frontier model changes.
Derive categories from incidents, support transcripts, red-team findings, and architecture risks before asking a generator to fill sparse cells. Use coverage of named failure cells with independently reviewed cases as the primary operating signal, but review it beside tail latency, unit cost, policy violations, and an outcome metric owned by the product. Roll out behind a versioned decision with a comparison cohort and an explicit reversal trigger. Representative evaluation must include adversarial boundaries, stale state, partial dependency failure, and the busiest traffic window. That evidence converts a plausible architecture into an operable system and gives the team a durable baseline for the next model, workload, or regulation.
Generation and adjudication must be separated
Using one model and prompt family to create both a case and its expected answer amplifies shared blind spots and stylistic artifacts. The production boundary is larger than the feature that makes the technique attractive: callers arrive with different authorization, freshness, latency, and quality requirements, while the underlying model and data keep changing. A design is therefore incomplete until it states which inputs are part of identity, what may be reused, what must be recomputed, and which failure should be visible to the caller. Treating those choices as an explicit contract prevents an optimization from quietly becoming a correctness or governance bug.
Independent generators, deterministic validators, domain rules, and human review create disagreement signals that reveal ambiguous or contaminated labels. This mechanism couples layers that teams often measure separately. A change in routing alters traffic shape; a change in traffic shape alters cache behavior and queue time; a change in retained context alters cost, privacy exposure, and model behavior. Preserve the intermediate decisions needed for replay: normalized inputs, policy version, selected route, relevant hashes, model revision, timing, and outcome. The final text alone cannot explain why the system behaved as it did, and it cannot support a safe rollback when the frontier model changes.
Use at least two generation strategies, hide provenance during review, and reject cases whose expected behavior cannot be defended from a policy or source. Use inter-reviewer agreement and disputed-label rate as the primary operating signal, but review it beside tail latency, unit cost, policy violations, and an outcome metric owned by the product. Roll out behind a versioned decision with a comparison cohort and an explicit reversal trigger. Representative evaluation must include adversarial boundaries, stale state, partial dependency failure, and the busiest traffic window. That evidence converts a plausible architecture into an operable system and gives the team a durable baseline for the next model, workload, or regulation.
Diversity needs measurable structure
Thousands of paraphrases can produce the illusion of scale while exercising one semantic path repeatedly. The production boundary is larger than the feature that makes the technique attractive: callers arrive with different authorization, freshness, latency, and quality requirements, while the underlying model and data keep changing. A design is therefore incomplete until it states which inputs are part of identity, what may be reused, what must be recomputed, and which failure should be visible to the caller. Treating those choices as an explicit contract prevents an optimization from quietly becoming a correctness or governance bug.
Coverage can be balanced across intent, entity, length, language, format, adversarial pattern, tool state, and consequence, with clustering used to remove near duplicates. This mechanism couples layers that teams often measure separately. A change in routing alters traffic shape; a change in traffic shape alters cache behavior and queue time; a change in retained context alters cost, privacy exposure, and model behavior. Preserve the intermediate decisions needed for replay: normalized inputs, policy version, selected route, relevant hashes, model revision, timing, and outcome. The final text alone cannot explain why the system behaved as it did, and it cannot support a safe rollback when the frontier model changes.
Set per-cell budgets, cluster embeddings inside each cell, and sample edge cases that maximize distance from the existing suite rather than volume. Use effective unique cases after semantic deduplication as the primary operating signal, but review it beside tail latency, unit cost, policy violations, and an outcome metric owned by the product. Roll out behind a versioned decision with a comparison cohort and an explicit reversal trigger. Representative evaluation must include adversarial boundaries, stale state, partial dependency failure, and the busiest traffic window. That evidence converts a plausible architecture into an operable system and gives the team a durable baseline for the next model, workload, or regulation.
Synthetic suites require production calibration
A suite remains valuable only if movement on its metrics predicts movement in real user and incident outcomes. The production boundary is larger than the feature that makes the technique attractive: callers arrive with different authorization, freshness, latency, and quality requirements, while the underlying model and data keep changing. A design is therefore incomplete until it states which inputs are part of identity, what may be reused, what must be recomputed, and which failure should be visible to the caller. Treating those choices as an explicit contract prevents an optimization from quietly becoming a correctness or governance bug.
Calibration compares failure rates and rank ordering across synthetic, curated production, and newly observed traffic slices after each meaningful release. This mechanism couples layers that teams often measure separately. A change in routing alters traffic shape; a change in traffic shape alters cache behavior and queue time; a change in retained context alters cost, privacy exposure, and model behavior. Preserve the intermediate decisions needed for replay: normalized inputs, policy version, selected route, relevant hashes, model revision, timing, and outcome. The final text alone cannot explain why the system behaved as it did, and it cannot support a safe rollback when the frontier model changes.
Maintain a small gold production set, measure correlation by failure class, and retire synthetic cases that no longer discriminate versions. Use correlation between synthetic slice movement and production outcome movement as the primary operating signal, but review it beside tail latency, unit cost, policy violations, and an outcome metric owned by the product. Roll out behind a versioned decision with a comparison cohort and an explicit reversal trigger. Representative evaluation must include adversarial boundaries, stale state, partial dependency failure, and the busiest traffic window. That evidence converts a plausible architecture into an operable system and gives the team a durable baseline for the next model, workload, or regulation.
Research foundation and scope
Self-Instruct and Evol-Instruct show ways to generate and evolve instruction data with language models [SELF-INSTRUCT] [EVOL-INSTRUCT]. Evaluation data has a different duty: reveal real product failures without sharing the generator's blind spots. These sources establish the mechanism, but they do not remove the need to measure the local implementation. A paper's result belongs to its checkpoint, dataset, hardware, traffic, and experimental protocol; a standard describes a contract or risk practice, not a guarantee that a particular product follows it. The useful engineering move is to convert each cited idea into a hypothesis that can be falsified with representative inputs and observable intermediate state.
Volume is not coverage. Thousands of paraphrases can test one path, generator artifacts can reveal the expected answer, and a model judging its own cases can create circular confidence. Write these conditions into the design review before selecting a library or provider. Specify the authoritative source of truth, the authenticated principal, the versions that influence behavior, the maximum consequence of an error, and what the system will do when required evidence is missing. This boundary statement makes later optimization honest: teams can compare speed, cost, or convenience only after candidates satisfy the same correctness, authorization, privacy, and recovery contract.
Read [SELF-INSTRUCT], [EVOL-INSTRUCT], [NIST-GAI] together rather than treating one source as a recipe. Self-Instruct: Aligning Language Models with Self-Generated Instructions supplies one part of the foundation; WizardLM: Empowering Large Language Models to Follow Complex Instructions supplies a second perspective; Artificial Intelligence Risk Management Framework: Generative Artificial Intelligence Profile helps connect the mechanism to evaluation, governance, or operations. The citations are deliberately primary papers, standards, or official documentation. Product-specific claims still require local evidence, and any dated behavior must be rechecked against the cited version before an article or architecture decision is refreshed.
A production implementation blueprint
Start from a failure taxonomy, generate with multiple strategies, keep generation and adjudication independent, apply deterministic validators, cluster duplicates, preserve provenance, and require a defensible expected behavior. Begin with one thin vertical path that preserves all decision evidence. Give each run a stable identifier; capture normalized input, authenticated scope, relevant dependency versions, selected policy, timing, result status, and any external receipt. Keep large or sensitive payloads in a separately governed store and pass bounded references through the orchestration layer. This produces a debuggable system without making raw customer content the default telemetry substrate.
Make state transitions explicit and make every external boundary return a typed result. Distinguish validation failure, permission denial, missing evidence, rate limit, timeout, dependency outage, user cancellation, and internal defect. The distinction matters because each permits a different response: clarify, retry, fall back, defer, compensate, or stop. A generic exception handler that asks the model to try again turns uncertainty into repeated cost and can duplicate irreversible effects. Retries require an idempotency strategy and a stored receipt, not optimism.
Roll out the implementation as a versioned policy. Record which cohort receives it, what baseline it replaces, which metrics can stop the rollout, and how to reverse stateful artifacts such as indexes, caches, adapters, or workflow histories. Review privacy and retention alongside performance. If raw content is needed temporarily for diagnosis, state the purpose, access, sampling, encryption, and deletion window. Production readiness means the team can explain, contain, and reverse behavior under load—not merely demonstrate the happy path once.
Failure lab and evaluation plan
Balance named cells across intent, language, format, tool state, evidence, attack, and consequence. Blind reviewers to generator provenance, measure agreement, and compare synthetic slice movement with a small gold production set. Keep the arrival pattern, data distribution, authorization, and dependency versions close to production. Use a paired baseline where possible and retain per-case results so averages cannot hide a severe slice. Offline evaluation should localize the failing stage; shadow evaluation should expose integration and traffic effects; a canary should confirm user-facing outcomes with a small blast radius. Each stage needs an exit criterion rather than a vague request to 'look good.'
Include impossible or ambiguous prompts, leaked labels, unsupported expected answers, near-duplicates, unrealistic style, benchmark contamination, one generator family, judge favoritism, and synthetic cases that never correlate with production. Add adversarial boundary cases and partial failures, not only malformed inputs. Terminate a worker after an external system may have committed, revoke access after a cache was populated, change one dependency version, and delay one branch until its data is stale. Confirm that cancellation releases resources and that a fallback preserves semantics. The test passes only when the external outcome, audit evidence, and user-visible state agree; a fluent final message is not proof of completion.
Evaluation data needs lineage equal to production data. Record why each case exists, who reviewed the expected behavior, which source or policy supports it, and when it must be refreshed. Separate generated cases from production incidents and prevent test cases from leaking into training. When a metric changes, inspect changed examples before accepting an aggregate. A statistically small regression can still block release if it crosses an authorization, privacy, safety, or irreversible-action boundary.
Operating metrics and decision record
Track taxonomy coverage, effective unique cases, reviewer agreement, disputed and rejected labels, production similarity, model-family bias, discriminative power across releases, and correlation with observed failures. Define every metric with a numerator, denominator, unit, time window, exclusions, and responsible owner. Segment by workload and consequence so a dominant easy class cannot hide a rare costly failure. Pair service signals with product outcomes: latency without completion encourages fast useless answers, while answer quality without queue and cost data can produce an uneconomic service. Review percentiles and distributions rather than relying on a single average.
Keep a synthetic case only when its intended contract and expected result can be independently defended and it adds coverage not already supplied by trusted production examples. Put that choice in a short architecture decision record containing context, alternatives, evidence, assumptions, selected policy, rollout, reversal trigger, and unresolved risk. Link the evaluation snapshot and source versions. This document prevents a benchmark from becoming folklore and tells the next engineer which evidence must be repeated when the model, provider, traffic, data, regulation, or product promise changes.
Monitor leading and lagging signals after release. Leading signals reveal pressure—queue age, cache allocation, disagreement, validation failure, policy denial, or retry growth—before users report harm. Lagging signals show whether the job was actually completed and trusted. Alert on a service objective tied to user consequence, and make the run identifier available to support without exposing private content. Every serious miss should become a reproducible regression case and, when relevant, a new threat or data-quality control.
Primary sources and further reading
- Self-Instruct: Aligning Language Models with Self-Generated InstructionsOriginal research paper · paper
- WizardLM: Empowering Large Language Models to Follow Complex InstructionsOriginal research paper · paper
- Artificial Intelligence Risk Management Framework: Generative Artificial Intelligence ProfileNational Institute of Standards and Technology · standard


