Very, very few things that we call “requirements” in software are in fact requirements. Most of them are little more than high-level checklist items.
Software is all about making wise decisions about tradeoffs. The way to achieve that is to have shared clarity about goals and constraints, and thus allow maximum flexibility in execution.
“We could make things far better by choosing to have a different problem” is one of the most important thoughts in software.