That said, ghosting a candidate is completely uncalled for.
(I guess that's not true in states that don't allow "any or no reason" but I don't know what those states are, if any.)
This is how it is with two out of three people. By the time they pass the filter of their resume and whatnot, two or three people are OK. They can answer basic questions, they act normally, they seem to have been doing the job as they said for a few years. They are also somewhat interchangeable with the person we interviewed before. Then we interview someone else, and maybe they were referred by an internal team member with a recommendation, maybe they are just a standard deviation above who we interviewed in terms of what they know. There's nothing really wrong with the people rejected, it's "you seem to know how to program basic features like two out of three people we interviewed, but we interviewed someone else who has a deep understanding of the language we use".
Zero benefit to them with small but non-zero chance of causing them a lot of problems. Unless a lawyer looks over the feedback, all it takes is an uncharitable reading to try to spin it into an attack on a protected class.
Individually leaving shopping carts where it's most convenient is the best course of action but in aggregate we're all worse off for doing it.
I will never understand why companies fail to give candidates constructive feedback. Especially at the final rounds. Even if it was “you were great, but we are going with someone else at this time”. One ounce of feedback is investing in people reapplying or wanting to work for your company. No feedback at all makes people look elsewhere.
Ambition and success are similar to me. It’s a few practiced disciplines every single day. Nobody can gatekeep that except you.