[root@rock810-ori ~]# grubby --set-default-index 0
The default is /boot/loader/entries/5dedb03890064d12ae33dd13b8e4dc31-4.18.0-553.el8_10.x86_64.conf with index 0 and kernel /boot/vmlinuz-4.18.0-553.el8_10.x86_64
You did set default first, before grub2-mkconfig. What if the latter did redefine the default?
ls -l /boot/loader/entries/
The GRUB uses BLS (boot loader specification) module to add those entries to the menu. The entry files do not have index in them.
Perhaps grubby and BLS enumerate the entries differently?
The “index 0” is “first on list”. If BLS puts “greatest version” first, then that is the “0”. One can refer to entry more explicitly than with index number.
Says to use saved_entry from the grubenv. Did grubby or grub2-mkconfig touch that? (Install of kernel package does.)