Based on the upgradeable smart contract pattern, a smart contract author can create a contract x that proxies to contract y. Let's say the contract is an ERC20 token where Alice buys 100 tokens.
How can Alice now trust that the developer of the contract will not simply proxy x -> z which contains a new version of transfer() is called, it redirects the tokens to someone else?
If there is no guarantee of not changing, what makes it different to trusting any other third party like a bank or facebook who can change access at any time?