Munchable reads a food label and tells you whether a product suits a digestive condition you have. Under every answer it gives sits one sentence:
Based on the product's listed ingredients. Always read the physical label.
Eleven words. It is not legal boilerplate, it is the honest scope of the answer above it: the product knows what a label says, and a label is not the same thing as a food. Everything downstream of that, what the app is allowed to claim, what it must never claim, and where each caveat is written down, turns out to be an architecture problem rather than a copywriting one.
This post is the map of those sentences, the two that drifted, and the one surface that deliberately has none.
The caveat lives with the thing it caveats
The canonical version is a constant in the rules engine package, next to the condition labels:
/** Rendered on every scan result (PLAN.md §6, §7). */ export const DISCLAIMER = ' Based on the product’s listed ingredients. Always read the physical label.…