Standard upgrade attempt fails defender.proposeUpgradeWithApproval but works with upgrades!

I keep running into an error where I deploy the boilerplate ERC20 taken from the wizard but then it fails when attempting an upgrade. I am using defender.deployProxy and defender.proposeUpgradeWithApproval for the deployment and upgrade respectively. I have performed the same tasks with the exact same contracts using the "upgrades" format and everything works perfectly. The minute I attempt to use defender, the deployments work well and all goes through standard approvals using safe wallet and ending with verification. It's when I attempt to call upgrade that it errors out and keeps telling me in safe that "This transaction will likely fail" (which they do).

So for example, V1 MyDevERC is straight from the wizard:

import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PausableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";

contract MyDevERC is Initializable, ERC20Upgradeable, ERC20BurnableUpgradeable, ERC20PausableUpgradeable, OwnableUpgradeable, ERC20PermitUpgradeable {
    /// @custom:oz-upgrades-unsafe-allow constructor
    constructor() {
        _disableInitializers();
    }

    function initialize(address initialOwner) initializer public {
        __ERC20_init("MyDevERC", "MDERC");
        __ERC20Burnable_init();
        __ERC20Pausable_init();
        __Ownable_init(initialOwner);
        __ERC20Permit_init("MyDevERC");
    }

In V2, MyDevERCv2.sol, I literally just adjust contract name and then add the following function:

    function getStatus() public pure virtual returns (string memory) {
        return "Now it is updated";
    }

I have broken it down to the most basic upgrade.

However, when I run:
const proposal = await defender.proposeUpgradeWithApproval(proxyAddress, MyV2, { salt: salt });

It consistently fails. Again, the same process minus the salt addition for defender works perfectly with upgrades.

So, just a recap:
1 ) Running initial deploy and upgrades using "upgrades" = zero issues.
2 ) Running deploy with salt using defender seems to work albeit, defender doesn't allow me to launch without salt which the documentation says it should.
3 ) Attempting to upgrade the script using defender and salt, does not work.

Can you share more details on what exact errors you are getting, and when/where do you see each of those errors?

Please run with debug logging enabled (see Required information when requesting support for Upgrades Plugins) and provide the console output when running the script that fails.

If possible, please also provide the other information mentioned in that link.