So, it turns out fractional level requirements will work, just not as I suspected, and it’s only aesthetically pleasing if you do it for items that are available at level 0.
From looking at the file Drotten pointed me to, a combined tag gets created consisting of required level plus item name, and then those are ordered. When I tried using -0.1 and -0.2 levels, I was creating pseudo-names like “-0.1Item A” and “-0.2Item B” thinking I could make “Item B” come first since it’s level was less. Of course, the “-0.1” part still comes before “-0.2” alphabetically, so my test had no effect. When I take alphabetical order into account instead of numerical it works! But not so fast, it only looks OK because the recipe is unlocked at start. If I try the same approach with another set of items in my mod that are supposed to be unlocked at level 1, the ordering OK, the unlocking works as expected, but I get the unappealing “Unlocked at Level 0.9” in red lettering when I look at the workbench of my newly promoted carpenter.
For any devs who may be seeing this, since you are already reworking crafting, perhaps you might consider adding an “ordinal” property to the recipes in the lists themselves same as there is for the higher level categories. I’m guessing it would be backward compatible since if it defaulted to 0, then everything would behave as it does now if it wasn’t explicitly used.