This set of documentation describes the Citrine data format, GEMD, that is independent of any implementation of the format.
However, as the Citrine Platform is assumed to be the primary point of interaction between this data model and most users, known limitations of this model are documented here, with appropriate links to this page provided elsewhere in this documentation.
The Citrine Platform cannot check for cycles in the material history.
Material histories represent a chronology, so cycles in them represent time-travel (physically disallowed). We do not have the ability to check that writing an object doesn't create a cycle in some material history.
The values of
labelsof Ingredient Runs are inherited from the associated Ingredient Specs, and thus are identically equal. However, this was not true in early designs. This means some older implementations may still have those fields in Ingredient Runs and there are therefore order-of-operations concerns that might get in the way of object validation.
So long as a user uses the
specsetter (or invokes the constructor with the
specargument) with an Ingredient Spec object (as opposed to a LinkByUID object), there should be no issue with validation on the Citrine Platform.