Summary
Dynamic Upgrades introduces an Ethereum smart contract that stores upgrade timestamps for Base nodes, allowing nodes to query the contract and apply changes live.
The EL and CL each run an upgrade-signal poller that reads the contract over L1 RPC, saves the schedule into the client's activation overrides, and applies them wherever the schedule is used. Forks activate at the scheduled time with no restart.
We expect the decoupling of node releases and upgrade timestamps to reduce the number of node releases operators need to run.
NOTE: This change will be rolled out in metrics-only mode for Cobalt, as we collect data to validate that the upgrades work smoothly.