But in general I think you do want version ranges, because the PVP is supposed to tell you, “If 3.2 works, then 3.2.8 will work as well.” Of course, nothing except hard real-world experience can tell you if that’s true. But if we don’t accept it as a possibility, and instead require our users to only use our specific version bounds, it would be impossible to ever build any package due to conflicts. Users would be stuck immediately ignoring all those specific bounds.
The funny thing is that if you do have hard real-world experience, version bounds are unnecessary. And if you don’t have hard real-world experience, then version bounds are at best a “possibility”. It does throw the whole delicate scheme into question. (And yes, this debate has been trod many times before. Stackage is one answer to the question. Another potential answer would be even more automation that can help packages give better guarantees about their dependency constraints.)