Spending time to define requirements saves extraordinary amounts of time.
You always think the requirements are more clear than they are.
If you define requirements after the fact, you will have wasted tons of time swirling.
It's like trying to solve a Dynamic Programming problem without memoization and backwards.
Not just twice as slow, but orders of magnitude slower.
Feels like you're going faster by not doing too much abstract thinking up front, but actually you're going slower.
Each time you start again from the (new, not quite the top) requirements, team members think "here we go again, getting yanked around with new requirements again."
If you don't trust the person giving the requirements you might even presume bad faith: "they didn't like that I was arriving at an answer that wasn't theirs so they scrambled the requirements again to keep me on my toes"