The rule
"It compiles" is not done. "Tests pass" is not done. Done is the agent driving the actual product in a browser — clicking the flow, reading the network tab — and then re-verifying against the production URL after deploy.
When to run it
Every feature, every fix, every deploy. It's a loop, not an event.
The play
1. Scope the change and make the agent state its plan before touching code. 2. Implement on a branch. Structural edits re-render; behavior changes get exercised end-to-end. 3. Verify locally in a real browser session: the actual click path, console errors, API responses — not just unit tests. 4. Deploy, then verify the live URL immediately: status codes, auth boundaries, one full user flow. Expect edge-cache propagation lag; retry before diagnosing ghosts. 5. Log what shipped in the commit and in project memory, so the next session starts warm. 6. Anything irreversible — deletes, migrations, money — pauses for a human yes.
Where it breaks
Verification theater: screenshots that raced an animation, tests that mock the exact thing that's broken. And deploying five changes at once — when production misbehaves you want one suspect, not a lineup.