No process is perfect. We cannot eliminate honest human error. Neither can we test exhaustively. We can shift left and automate our testing, but sooner or later, a mistake will happen. The solution is not to slow down, but instead to mitigate the risk. We need to force ourselves to control the batch size, by decoupling deployments from releases.
And when things go wrong - and they will - then we must be prepared to fail forward fast, limiting the blast radius wherever possible.