I added this code to the do_deterministic_recycling(recipe) function in prototypes -> recycling, and it seems to work.
if recipe.ingredients and recipe.ingredients[1] then
local item = get_prototype("item", recipe.ingredients[1].name)
if item and item.stack_size == 1 then
return false
end
end
I had a lot of problems with armor items during development. As when they have a module grid they become unstackable, by the engine without telling you. For those armors I have implemented a framing recipe. Do you play with an armor mod which does not work? For me it looks like it works as intended. Keep in mind you need at least 4 items for it to deterministically recycle. Do you perhaps have the replace vanilla recipe setting on? I don't see how disregarding items with a stacksize of 1 helps with them recycling. Happy to help more with a deeper explanation of the problem.