This is not an authoritative answer and will be deleted if a better one is posted.
The order of kernels on the grub menu is largely sorted by version. However grub does seem to know the difference between a release candidate and the final version. It also seems to treat the "-" character as a separator, in addtion to ".".
Example (edited, after grep menuentry /boot/grub.cfg
):
menuentry 'Ubuntu, with Linux 5.8.0-050800-lowlatency' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-050800-lowlaten>
menuentry 'Ubuntu, with Linux 5.8.0-050800-lowlatency (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-qp-sp-ps2' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-qp-sp-ps2-advan>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-qp-sp-ps2 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-qp-sp-powersave' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-qp-sp-pow>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-qp-sp-powersave (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-qp-sp' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-qp-sp-advanced-0ac3>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-qp-sp (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-qp->
menuentry 'Ubuntu, with Linux 5.8.0-rc1-stock' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-stock-advanced-0ac3>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-stock (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-sto>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-spv2' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-spv2-advanced-0ac356>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-spv2 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-spv2>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-ds4' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-ds4-advanced-0ac356c1>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-ds4 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-ds4-r>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-ds3' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-ds3-advanced-0ac356c1>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-ds3 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-ds3-r>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-ds1' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-ds1-advanced-0ac356c1>
menuentry 'Ubuntu, with Linux 5.8.0-rc1-ds1 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-rc1-ds1-r>
menuentry 'Ubuntu, with Linux 5.7.0-doug-hwp' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.7.0-doug-hwp-advanced-0ac356>
menuentry 'Ubuntu, with Linux 5.7.0-doug-hwp (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.7.0-doug-hwp>
menuentry 'Ubuntu, with Linux 5.7.0-050700rc6-lowlatency' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.7.0-050700rc6-lo>
menuentry 'Ubuntu, with Linux 5.7.0-050700rc6-lowlatency (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.>
menuentry 'Ubuntu, with Linux 5.7.0-050700rc3-lowlatency' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.7.0-050700rc3-lo>
menuentry 'Ubuntu, with Linux 5.7.0-050700rc3-lowlatency (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.>
...
In the above list 5.8.0-rc1-ds4
is actually the most recently compiled, but is 7th in the list. The first in the list is actually rc1 from the mainline PPA, with an incorrect file name, because it is actually -rc1. The 5.8.0-rc1-qp-sp-ps2
one is actually quite old, and I assume it is the extra "-" separator that contributed to its position in the list.