Ubuntu Core upgrade vs manual installation of gadget & base

Say I have an Ubuntu Core device with a model assertion specifying base: core20, and gadget/software snaps also using base: core20. I then manually create and install a new gadget with base: core24, and install a new snap also based on core24.

This leaves the device with both core20 and core24 bases installed. Is it correct that the system itself still uses core20 as its run-time, as defined by the model assertion, even though my new snaps (including the gadget) use core24?

If so, I’m unclear why one would need to perform a remodel as described in Upgrade Ubuntu Core. What are the practical benefits of remodeling over what I’ve done? Or am I doing something unsupported? Does having a differing run-time between device and snaps have unintended consequences?

Additionally, the remodelling documentation states:

The remodelling process is triggered by either updating the model assertion, running the snap remodel command, or from the snapd REST API.

Does this mean that if I publish a new model assertion with a different base and sign it, devices using the old model will automatically upgrade? If so, how can this be controlled or disabled?

Thanks in advance for any clarification.

Followed up in the SF 00410188 case

I then manually create and install a new gadget with base: core24 , and install a new snap also based on core24 .

If I remember correctly snapd will stop you from installing a 2nd gadget on the device

Either way, as you mention yourself below both your boot base and gadget are still the one mentioned in the model. So that’s what is different in the remodel operation, it can change what is the boot base, the gadget, kernel etc.

Does this mean that if I publish a new model assertion with a different base and sign it, devices using the old model will automatically upgrade? If so, how can this be controlled or disabled?

not currently. The snapd REST API mentioned here, is the on-device one

Thanks @pedronis (and @gairepravesh on the ticket!)

I was a bit unclear. I didn’t install a second gadget, I just updated the already existing gadget with a new revision.

What confuses me, is that I am able to install core24 on a device whose model has base core20 and then update the gadget referenced in the model from one with base: core20 to one with base: core24. However, when using ubuntu-image I cannot create a similar system, as it does not allow mismatch in base snap between model and gadget, giving error

Error: Error preparing image: cannot use gadget snap because its base "core24" is different from model base "core20"

I guess the correct thing to do is just to remodel, such that all snaps on the device have core24 base. Then there won’t be any extra overhead from running two bases.