The original waterfall model of programming process had no feedback loops, i.e. “complete and correct” requirements were handed off to the architects who produced a “complete and correct” system architecture, etc. It quickly became obvious that the various documents were seldom completely “complete and correct” so some rework was required. But the various process “gurus” still make pronouncements like “complete and correct” is still doable and try to pretend that the various feedback loops wouldn’t be necessary if you would just do the process right. It’s pretty obvious that that emperor has no clothes.
Most of the agile processes elevate feedback to a first class part of the process. On-site customer or stakeholder representatives give feedback, unit tests give feedback, if pair programming is used, programmers give each other feedback, etc. Feedback is no longer reluctantly allowed in to accommodate imperfect programmers but is encouraged, built into the process, and pushed to as early as possible. Testing can begin as soon as there is executable code.