Ground beef: three failure modes, no pipeline bug

Cooper

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_proxy——no 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).