A good handoff answers every question a developer would otherwise have to guess. That means every state of every screen, specs written as tokens, every asset exported, and notes on the edge cases.
My bar is simple. I ship everything a developer needs alongside the design: all the media, all the information, and the edge cases that might occur on the frontend or the backend. Something is ready when developers, PMs, and other designers agree it feels complete, both in how it works and how it looks.
The second half of the answer: handoff is a conversation, not a file you throw over a wall.