The rule that outranks everything
Go back to the Chef’s tart, still sitting in the review queue. Someone with a peanut allergy searches your menu:
no exclusion exclude allergens: ["peanut"] ------------------------ ------------------------------ Tomato soup Tomato soup Peanut satay skewers (left out, has peanut) Garden salad Garden salad Chef's tart (left out, allergens not known)
Nothing says the tart contains peanuts. It is left out because nothing established that it does not. A record is returned only if the field is not marked unknown on it, has a value at all, and that value is none of the excluded ones. Those three conditions are one SQL clause, in the query, not an instruction in a prompt.
This is the difference between a tool and a filter. A filter keeps what it cannot rule out; a missing allergen column reads as “no allergens” and the tart is served to someone who should never have seen it. Fail closed means the opposite: no data is not good news.
A key can pin exclusions of its own. A key that pins allergens: [peanut] applies that to every call made with it, and a caller cannot widen it: their exclusions are merged with the key's, never subtracted. That is how you hand a key to a team whose agent you do not control and still keep the promise.
Every result also carries unknown_safety_fields, so an agent can tell the difference between “no allergens” and “we do not know the allergens” and say so to a person.