good point, how about this:
in CommandWithUpgrade->install_from_repo slug and version are already available and the package url is passed to the upgraders. move the cache or download logic there and always pass a local path to the upgrader. nuke the two upgraders i wrote that are now useless.