Confident Output Is Not Evidence of Work
Ask a model what people are saying about a topic right now. It will answer. It will answer whether or not it searched anything, and the two answers are equally fluent, equally specific, and equally structured. Reading the prose cannot tell you which one you got.
That is the whole problem with grounding an automated pipeline on a generated answer. The failure mode is not garbage output — garbage would be easy. It is a well-formed, plausible answer produced entirely from prior knowledge, describing a state of the world that may be months out of date.
Require Something Only the Real Path Can Produce
The gate is to demand an artifact the model cannot fabricate its way past. Here that is a citation: at least one link to a post on the platform being sampled, on one of that platform's actual hostnames. A search that ran produces those naturally, because it saw the posts. A model answering from memory has nothing real to point at.
Note what the gate deliberately does not do. It makes no judgment about whether the reading is insightful, whether the temperature is correct, or whether the summary is well written. Quality is not mechanically checkable and attempts to check it produce a worse instrument. Provenance is checkable, and it is the property that actually distinguishes a real sample from a hallucinated one.
Store the Failure, Loudly
A card that fails the gate is not silently discarded. It is stored with its raw text and marked as failed, for two reasons. Diagnostically, the rejected output is the only evidence of why the run did not work — a prompt that stopped producing citations is telling you something, and deleting the evidence deletes the signal. Operationally, a sampler that quietly produces nothing looks identical to a quiet day.
The same reasoning covers parsing. When the response is supposed to be structured and is not quite, parse tolerantly, keep what you can, and mark the row rather than dropping it.
The Prompt Is Not the Enforcement
The instruction does ask for citations, and asking helps. But the instruction is a request and the gate is a check, and only one of them is load-bearing. This is the same distinction as the previous lesson's clause about untrusted input: you can ask a model for a property, and you should — but if the property matters, something outside the model has to verify it.
The test for whether you have a gate or a hope is simple: if the model ignored the instruction entirely, would anything notice?