"Second, for a given integer type (such as natural___XDLU_0_2147483647), the type for the nodes in TYPE_MIN_VALUE and TYPE_MAX_VALUE really should be a natural___XDLU_0_2147483647. ie, the type of an integer constant should be the same as the type of its min/max values."
No, the type of the bounds of a subtype should be the *base type*. That's how the tree has always looked, as far back as I can remember.