the short name with any parameters, as shown in the UI, e.g. Varchar(15)
the full path with any parameters, as written in Pure
Primitive and opaque types are interned, so equal types are usually the same instance. Equality is still structural, as it must hold across copies of this module too: the same family and the same full name, which for an enumeration is its path alone, so its values are not compared.
A type Cube does not know, e.g. a new engine type. It is carried through unchanged but never compared or given values. Instances are interned, one per path and parameters.