I might have identified the problem source.
qualityseeds.lua creates gmo recipes, and assumes 'icon' property, while my mod uses the 'icons' property since sometimes it has multiple layers.
For example:
local seed_item = {
type = "item",
name = seed_name,
localised_name = { "item-name.alien-tree-seed",
{ "alien-biomes." .. treedata.locale },
{ "alien-biomes." .. model_data.locale } },
icons = {
{ icon = "alien-biomes-graphics/graphics/icons/tree-" .. model_data.type_name .. "-trunk.png", icon_size = 64 },
{ icon = "alien-biomes-graphics/graphics/icons/tree-" .. model_data.type_name .. "-leaves.png", icon_size = 64, tint = treedata.colors[1] },
{ icon = "space-age/graphics/icons/tree-seed.png", icon_size = 64, scale = 0.25, shift = { 6, -6 } }
},