Unknown is not none
A menu item with no allergen field is not "allergen-free." It is unlabeled. Those are opposite conditions, and a system that treats them the same can hurt someone.
Most menu tooling encodes allergens as an optional badge — present it if you have it, skip it if you don't. Convenient, and wrong. The absence of the data is itself information the diner needs, and the software should refuse to paper over it.
menu-a11y-engine treats a missing allergen field as an error, not a
warning:
ERROR item-allergens-undeclared "Mystery Special" has no allergens field —
declare it, even if empty. Unknown != none.
An empty list is fine — that is a claim: no major allergens. Silence is not a claim. And it fails closed: if the data has errors, it will not render the menu at all. A half-rendered menu that drops the allergen line is worse than no menu.
The same discipline shows up on the accessibility side. Allergen and dietary information renders as text, never as a colour or an icon alone — because "the green dot means vegan" is not information to a screen reader, and not information to someone who can't distinguish the dot.
Safety and accessibility keep turning out to be the same request: say the thing, plainly, to everyone.
— technika11y