Hey, Martin. Nice of you to develop an argument for why we might have done that, but I'm not buying. <constraint> should be a required child of <constraintSpec>. If you really need a placeholder while you work on the formal constraint, you can leave it (the <constraint>) empty. (Its content model is ANY.) P.S. (The real question, which I personally do NOT want to get into yet, is whether or not <constraint> should be repeatable in order to support multiple natural language messages.)
Agreed. Seems mad. The only thing I can imagine is that this was originally designed before it was clear that ISO Schematron was a viable language for expressing constraints in such as way that they could be processed through to a schema and acted on by a validator, and therefore the original constraints were expressed only in prose as a sort of placeholder for future work.