Even with humans out of the loop you will still want features like branches, pull requests, tags/versioning, build reproducibility, etc.
All the others seem necessary. Maybe you don't need branches at all, of course we do! Things have to have names.
There could be some fun cryptographic ways you could do it directly inside of git.