QA bounces get filed under "the developer missed something." Usually the developer missed something because the requirement never said what the something was. The bounce is late; the cause is early.
A requirement that does not bounce is one that is written to be verified, not to be approved. It describes the observable state of the world when the work is finished, in language someone other than the author could check. "Works correctly" is unverifiable. "Returns an error within 200ms when the field is empty" is verifiable.
Pyloq drafts toward the second kind because the second kind is what QA is going to check anyway, two weeks later, at ten times the cost. Write the verification criteria at the start, and the bounce simply does not happen.