When you generate synthetic evaluation data, two parties touch every task: whoever writes the generator, and whoever writes the grader (a code check or an LLM judge). In a small team they may be the same person, but they are never the same role. The generator decides what input to use and what should happen. The grader decides whether what happened was right. If the two roles share nothing but a free-text prompt, every omitted detail becomes a private assumption on one side and a guess on the other.
That gap is the source of most silent label errors. Research on agent evaluation is blunt about this failure mode: an agent can produce a correct final answer through a wrong process, and scoring only the output hides the broken reasoning underneath LangChain's trajectory evaluation framework. Google's evaluation guidance calls the same thing a silent failure, where an inventory report gives the right number but cites last year's document Google Cloud's methodical approach to agent evaluation. In both cases the grader lacked a field that told it what to inspect, so it inspected only the artifact it could see.
The fix is a spec that is strict on paper. Treat the generated task as a data contract, in the same sense that JSON Schema treats a document as an instance that either validates or does not JSON Schema validation vocabulary. The spec is the agreement; the task instance either satisfies it or gets rejected before it ever reaches the grader.



