[WIP] Add requirements for language fall backs.

I'm open to alternative suggestions.

Yes either we need to change all places persisting stuff in an authoritative entity store to first run it through something like a to be created FailInferredObjects or add an option ::ALLOW_INFERRED to the serializer factory and make that change there (which means touch every place that serializes, except for anything that persists to an authoritative entity store). There are probably fewer places that write to an authoritative store, than places that serialise, than places that pass data model objects. The interface is only advisory, the object itself should not prevent persisting it. The reason for this feature is that if we miss a bug in code review that would result in inferred objects getting into an authoritative store (=data corruption) it is preferable to abort with an error instead.

I think that this does not violate LSP, because it is advisory. The implications are the same as introducing a bool isInferred() method to every object of the data model. This just having the benefit of not needing to add a interface to every data model object.
How or what part of LSP do you think is violated?