For the last decade, a fair amount of requirements ambiguity got absorbed quietly by the development process itself. A vague ticket went to an engineer who asked clarifying questions, made reasonable assumptions, and produced something close enough to right that a review cycle or two closed the gap. The ambiguity cost time, but it got resolved along the way.
AI-assisted code generation removes a lot of that absorption. A model given a vague prompt doesn't ask a clarifying question unless it's told to. It produces a plausible, confident answer to the question it was actually asked, which may not be the question that was meant. The ambiguity that used to get quietly resolved by a human now gets confidently and quickly built into working code.
Why this makes requirements more important, not less
The intuitive expectation was that AI tooling would make requirements engineering less important: the model handles more of the translation from idea to implementation, so the idea itself could stay looser. The opposite is closer to true. A precise specification was always valuable; it's now valuable immediately, because the round-trip from bad requirement to bad output is now measured in seconds instead of days, and it happens before anyone had a chance to notice the ambiguity.
Teams that treated requirements as a lightweight formality, a ticket title and a sentence, could get away with it when a human was doing the interpretive work. That same lightness now produces a working but wrong feature, quickly, with a confident implementation that looks done.
What good practice looks like now
This doesn't mean returning to waterfall-style requirements documents. It means being more disciplined about the specific artifacts that were always good practice and often skipped under time pressure: acceptance criteria stated concretely enough that a reviewer (human or otherwise) can check against them, edge cases named rather than implied, and a clear statement of what's explicitly out of scope. None of this is new. It's just newly urgent, because the cost of skipping it now shows up in hours, not sprints.