Ground beef: three failure modes, no pipeline bug

Verification failed; nothing accepted. Four items sent, three figures returned, one rejected by the gate — and of the two that passed, one is subtly wrong in a way no automated check can see.

The re-scout, and why it was worth doing

Every URL was re-fetched with the pipeline’s own fetcher and checked to contain its figure, rather than trusted from a browser — a lesson from the silk batch. That caught a blocker before any model time was spent: the USDA FSIS website returns HTTP 403 to the pipeline, site-wide. A browser renders JavaScript and sends a browser user-agent; the pipeline does neither. A URL verified from one tool is not verified for another. The affected item was excluded — carefully, because an item that loses its URLs but keeps its question doesn’t get skipped, it inherits the previous item’s URLs, which would have asked a burger article how grinder lots are structured and invited a verbatim, confident, wrong answer.

What came back

FieldValueAgreementVerdict
cattle_per_patty_typical1002/2passes, but see below
patty_mass_standard112 g1/1passes, and is misleading
provenance_can_it_be_known41/1rejected — correctly
beef_per_animal_proxyno figure returned

The rejection is the gate at its best

none of the reported values (4, 4, 4) appear in the quoted sentence

The quote names Nebraska, Texas, Uruguay and a South Dakota trim plant. Four is the right answer — and the model reached it by counting entities in a sentence, which is derivation, not extraction. The digit 4 is nowhere in the text. The gate refused it for exactly the right reason: derived is a claim about provenance, and only a human may make it. A correct answer, correctly refused.

The row to actually worry about: 112 g

patty_mass_standard verifies perfectly and means something other than what was asked. Its quote:

To achieve uniform sizing for the broiled and pan-broiled patties, 112 grams of ground beef were pressed into each patty mold.

That is a laboratory’s test-patty size from a cooking-yield methods section — an internal protocol detail, not a retail or foodservice standard. The item asked for a market patty weight and named the quarter-pound (113.4 g) as its source. What makes it dangerous is the near-miss: 112 g sits about one gram from the real quarter-pound, so nothing looks wrong. A real number, from the right document, on the right subject, stripped of the context that gave it meaning.

And the one that passed is a ceiling wearing a point value

cattle_per_patty_typical stored lo = mode = hi = 100 from:

Meat from more than 100 cows can be used to make one hamburger.

That is a maximum, and a hedged one. The batch spec warned about this exact misreading in as many words — and predicting it did not prevent it, which is the second time a spec’s own warning failed to stop the thing it named. Storing it as a typical value with zero spread is the one reading the sentence does not support.

Conclusion

Three rows, three different failure modes, none of them a pipeline bug: one correct refusal, one context-stripped near-miss, one ceiling flattened into a point. The re-scout and the gate both did their jobs. Nothing here gets promoted without reading each quote against its own document first.


Adapted from the project’s review record batch-06-ground-beef-REVIEW.md (CC BY 4.0).