fix: only upgrade, never downgrade