Devs can commit fraud without anyone knowing is my point, actually. Picture a scenario like the 2013 Bitcoin fork but with a twist: a dev introduces a bug that allows a transaction to spend bitcoin without corresponding inputs, and triggers it while in the next block spending Bitcoin to buy a coffee, then after a few more blocks for confirmation, publicly announces the bug and the need to move off of the most-work chain. Miners and devs all agree that mining on top of the most-work chain with the bug doesn't make sense and move all the mining to a minority fork that has the bugfix. Minority fork overtakes the buggy fork. Malicious dev has his Bitcoin back and spends them a second time somewhere else. No one's the wiser.
We can argue about the game theory and what exactly would happen if this was attempted today, but the point remains that double spend is possible and the Bitcoin white paper does not address this issue because it assumes Bitcoin code is set in stone. As soon as you consider that the protocol evolves and is subject to human manipulation, the white paper's guarantees all go out the window. This includes the 21 million bitcoin "limit".