The basic problem is that the code is the ultimate authority — there is no adjudication protocol — so if there’s a vulnerability in the code, there is no recourse. And, of course, there are lots of vulnerabilities in code.
To me, this is reason enough never to use smart contracts for anything important. Human-based adjudication systems are not useless pre-Internet human baggage, they’re vital.
I’d love to see a smart contract platform that allows human adjudication somehow! Devil’s in the details, but still, seems promising. It would be directly counter to most of that camp’s ideology and dogma though, so I’m not holding my breath.
(News flash: society is built on human trust. Code won’t change that.)