No constraint

In case there is no constraint, `isValid` returns `true` instead of `[]`. What's worse is that if there were previous validation errors, they were not cleared so `validate` will return those.

This builds on #774 and #775 (which were found because the flawed tests were no longer passing after this fix).