Type Definition Exporter should not include Global Enumerated List in Type Definition Load File
The standard behavior is that the Exported Type Definition Load File always includes the definition of the enumerated list constraint.
This is fine IF the enumerated list is either A) created based on a Global Enumerated List and modified for this specific object type or B) the Global Enumerated List is no used in any other object type. The 80% use case of Global Enumerated Lists is to reuse an Enumerated List across multiple attributes on different object types.
It becomes problematic when a change needs to be made to the Global Enum list as the developer / admins need to remember that the Global Enumerated List is defined in Load Files for multiple Object Types.
What ends up happening is that the Enumerated List is updated in only 1 of the Type Def Load Files and not in others. Depending on load order the change to the Global Enumerated List is propagated or reverted. Additionally the list constraint for other object types are not updated.
Recommendation: Based on the Enumerated List constraint type, export the Global Enumeration to a separate loadFile (OOTB loader exists) and only reference the Global Enumeration List in the Type Def file. If the Enumerated List Constraint is either a new Enum List (Not global) or an Enumerated List based on a Global Enumerated List continue to export as is.
It may be worth considering exporting the Global List into a separate load File in the case of an Enumerated constraint based on an existing Global List.
Today's work around is to customize the OOTB DefintionExporter classes to add an additional argument which allows the developer to control how to export the Enumerated Lists. This has been proven to work but is limited to an all or nothing approach and brings on additional overhead for every CPS or MOR update.