Currently the spec underspecifies the behaviour in the case when the canister increases its memory or compute allocation such that the cycle balance of the canister drops below its freezing threshold.
This case is a potential footgun for developers because it can lead to unexpected uninstalls of the canister.
Example:
The developer sets the freezing threshold to 1 year.
The canister has enough cycles to last 1 year with its current memory and compute allocation
The developer increases the memory or compute allocation of the canister (intentionally or unintentionally due to a bug). If the increase is large enough, then the canister becomes frozen and its runway could be much smaller than 1 year (e.g. few hours).
The underspecification is motivated by:
The compute_allocation and memory_allocation settings are ignored in this abstract model of the Internet Computer, as it does not address questions of performance or scheduling.
However, this example demonstrates that memory and compute allocations also affect the lifetime of the canister.
Currently the spec underspecifies the behaviour in the case when the canister increases its memory or compute allocation such that the cycle balance of the canister drops below its freezing threshold.
This case is a potential footgun for developers because it can lead to unexpected uninstalls of the canister.
Example:
The underspecification is motivated by:
However, this example demonstrates that memory and compute allocations also affect the lifetime of the canister.