validationProblems

Every way this descriptor fails to describe a surface a model could have declared, or an empty list if it describes one.

Public because it is what an application validating a hand-edited file needs, and because a consumer that wants to report the problems rather than be thrown at should not have to catch an exception to enumerate them.

The rules are the declaration DSL's rules, deliberately: a descriptor is derived from a declaration, so a file asserting something the DSL refuses describes a model that cannot exist. Every problem is reported, not the first — a file with three mistakes should teach a person three things.