I’ve been stuck on kernel version 6.3.12
since 6.4.4
onwards was not working well for me.
I had increased dnf’s installonly_limit
to 5, as subsequent releases did not fix my issue.
The recent 6.4.9
release was the 5th update.
I had read that updates will never remove an active kernel, yet the kernel I was booted into was overwritten.
I use Discover to update.
So what gives? My best guess is that the never overwritting part only applies to DNF and not Discover? I’m gonna run into this issue again upon the next kernel release, and want to avoid a painful repeat 
Are you 100% certain that the 6.3.12 kernel was the one you had booted from at the time the upgrade was done?
There should be no difference between discover and dnf as far as leaving the currently booted kernel installed. (or gnome software for that matter)
Note that doing an offline update is different since one is not actually booted with the desired kernel when the update is done.
Using dnf one always gets a list of packages to be installed/upgraded/removed before one tells the system to proceed (unless one uses the -y option on the command line). Gui apps for software updates do not give the user the same amount of information or control and that may have led to the removal of the kernel you wanted to keep.
Note that one can always remove unwanted kernels with dnf as well.
sudo dnf remove kernel*6.4.5*
would remove all the kernel packages for the 6.4.5 kernel as an example. This would allow one to keep the total number of newly updated kernels less than the value defined for dnf to keep.
Ah so this is the root of the problem! Discover is set to do offline updates. I will have to remove unused kernels to keep myself below the limit of 5 in the future. Thanks for helping to identify the root cause!