The Internet Computer blockchain is governed autonomously by the Network Nervous System (NNS). One of the many duties of the NNS is to make upgrades to the ICP network that have been voted on by the community. Making upgrades to the blockchain requires the solution of several challenges created by running a decentralized protocol including how to allow arbitrary changes to the Internet Computer protocol, preserve all state, minimize downtime, and roll out upgrades autonomously.