When upgrading an SNS frontend canister, you need to first “prepare” the assets via dfx deploy xx --by-proposal and then “commit” them via proposal. One can manually delete prepared batches if they are not commited.
Where exactly is the batch stored. Is it in the asset canister memory?
How long are batches kept if they are never commited? Will they remain forever if they are never commited?
Could it make sense to delete batches after a while, e.g. 1 month, if they are never committed? To avoid taking up unnecessary memory in case they go forgotten?
Is it possible to see all non-committed batches of a canister?
Yeah, that could make sense. 1 month sounds like it would be long enough for most governance systems.
If there is a forgotten batch you get Canister called ic0.trap with message: Batch 14 is already proposed. Delete or execute it to propose another. on dfx deploy --by-proposal. And if you have the rights to propose a batch you also have the rights to delete a batch, so you wouldn’t be blocked by a forgotten batch