Tag
A tag is one case of an open variant: lowercase colon syntax, optionally carrying a payload — :ok, :error(String), :primary.
Tags are structural: the same spelling interoperates across modules when payload shapes line up (not module-owned identities). They participate in row algebra and open-variant typing.
A payload-less tag used as a plain value or compile-time key (
:cascade,:serializable, the effect key inDatabase(:primary)) is still just a tag, not a separate "symbol"/"atom" concept.A set of tags is a row; the error channel is a row of tags too (error-row.md).
Not to be confused with a label (a keyword-argument name like
~f/name =at calls).See variant.md, open-variant.md, and ../08-errors.md.