I think it's the other way around: Direct mapping of inputs to outputs will work great for a subset of conditions, but the last N% is infeasible without explicit logical programming.
You'll never run out of edge cases if you have to explicitly program the logic. At some point you have to let the machine learning decide it. Maybe there is room for a hybrid approach, but I think anything relying on programmers having thought of every situation ahead of time is doomed to fail.
You're wrong about the requirements. It doesn't have to be perfect, just better than us, and that's easily doable for computers that don't get tired, distracted, or drunk.
I'm not sure how long it will take, but I'm sure we'll get there.