3 - Add a way to penalize certain tags in the output
A big part of how apotheosis decides the best output is tag matching. It takes a list of all tags owned by at least one input item, and prioritizes outputs by the number of tags that a candidate output item has that are in that input tag list.
Since there is no penalty a candidate output item having a tag that is not in the input tag list, this means that it tends to be easier to craft an item the more tags it has. Conversely, it is harder to craft items with fewer tags.
In extreme cases, like with bunny ears, which have no tags, this makes them pretty much impossible to craft.
Items with only one tag, especially when that tag is not usually found by itself in other items, are usually possible but still extremely difficult to craft. I am pretty sure nobody is finding a recipe for string on their own, for example.
Cardboard boxes, as another example, only have the wood tag, which is one reason we cannot find a recipe for it (it also has a negative bias, which in addition to the tag problem makes it impossible to find a recipe for).
I have two ideas for solving this problem
First, we could use hamming distance to calculate tag match instead of just counting the number of tags in common. That way, it discourages extra tags in the output item that no input item has. If we fuse a bunch of items with no metal, for example, it should discourage an output that has the metal tag.
Another option is to have items with anti-tags. For example, we could have negative counterparts to all output tag items. An anti-fire, for example, would prevent the output from having a fire tag. There are many ways to do it. It could be weighted to 1000 like output tags, it could have the same weight as regular tags. Just some way for an item to have an anti-tag that discourages that tag in the output. I think negative counterparts to all output tag items is just the simplest way to do this.
.