TL;DR

A successful merge confirms the code landed, and a successful deploy command confirms the command finished. Only checking the live page and response shows whether users can reach the change.

what does a green deploy actually prove?

A successful merge tells me the code landed. A successful deploy command tells me the command finished. Neither shows what a user sees.

The public page could still show an old cached version, the wrong environment, or a route that never picked up the change.

how do i know users can see the change?

After deploying, I open the actual page and fetch the actual response. I look for the change in the bytes a user can reach.

If it is not there, I have not finished the work. That check helps me avoid telling people a fix is live when it is still invisible to them.

when can i say a change is shipped?

A commit is a receipt for the commit. A merge is a receipt for the merge. The live page is the receipt that matters to the person waiting for the change.

I check the live result before I say it is deployed.

FAQ
Does a successful deploy mean users can see the change?

No. It means the deploy command finished. Check the public page and response to confirm the change is visible.

How do I verify a website change is live?

Open the actual public page and fetch its response. Look for the change in the bytes users can reach.

Why can a deployed change still look old?

A user may reach an old cached page, the wrong environment, or a route that did not pick up the change.