Every team I have worked with promotes changes through environments, and every team has shipped something that passed all of them and still went wrong in production. That is not a failure of discipline. It is what environments are: a sample of reality, taken under conditions you chose.
00 / What staging actually proves
Staging proves that a change does not fail in the ways you thought to look for. It is a real and useful thing to prove, and it is smaller than it feels, because staging is missing the parts of production that cause the interesting failures:
the data volume, and the one tenant whose data is shaped unlike everyone else's;
concurrency — real users doing things at the same time, with caches already warm;
the integrations, in the state they are actually in today;
the clients, in the versions people are actually running.
So the question that decides how a release goes is not "did it pass staging?" but "if it is wrong in production, what do we do in the next ten minutes?" On a live product…