UNITS

Unit and currency tokens, read by UnitGuard, each mapped to a canonical name.

The canonical form is what makes km and kilometers the same unit. A flat set would treat every abbreviation-versus-spelling difference as a unit swap and refuse "Convert 50 km to miles" against "Convert 50 kilometers to miles" — two ways of writing one question.

Two tokens may share a canonical name only when they denote the same quantity. Grouping by "sounds like the same unit" turns this map into a source of false hits: ton and tonne differ by 9%, est and edt by an hour, and collapsing either pair means the cache answers a question nobody asked. Spelling variants alias; near-synonyms do not.

Ambiguous abbreviations are excluded on purpose: in (inch), m (metre), s (second), try (Turkish lira) and real (Brazilian real) all appear far more often as ordinary words than as units, and a guard that fires on "how do I try this" is worse than no guard.