The failure is structural, not a model defect. When the output schema says every field must contain a string, and the source text runs out of evidence, the model has one legal move left: produce something that looks like the answer. Language models pick the most likely continuation given what they have seen, which is why confident, clean grammar arrives attached to invented content. Editors of AI drafts describe exactly this pattern: hallucinated statistics delivered with total confidence, and citations to sources that do not exist, each one hard to spot because the prose around it reads well (the AI content editing checklist).
In a chat window a human reads the paragraph and notices the number feels off. In a batch job that touches ten thousand rows, nobody reads anything. The invented value is written to the database, it validates because it is the right type, and it becomes indistinguishable from the values a human typed. The schema evolution literature calls this silent data corruption: data that appears valid but carries incorrect values, which is far more expensive than a loud deserialization failure because nothing alerts you (Conduktor's schema evolution guide).
There is a second reason forced prompts fail. Models are tuned to produce the kind of answer raters reward, and OpenAI's own researchers noted early that the resulting models "can overly hedge" or, in the opposite direction, over-commit when an instruction implies commitment (Leap on hedging in AI text). Your prompt is the instruction. "Fill in every field" is a commitment order.
The fix is to change the contract from "produce a value" to "produce a value or a justified refusal." Structured output is the mechanism, because a fixed schema with named fields and types is what lets downstream code treat a refusal as a first-class result rather than a parsing accident (PromptQuorum on structured output and JSON mode).



