Fairly sure it's to do with TQ not checking that the 1st and 2nd compose items were not the same.
Compose packet takes 3 item UIDs.
main item and 2 minor uids. Server obviously checks that you have all the items and performs calculations. the issue being they at one point didn't check that the two minor items were not the SAME. therefor you could compose for half the cost by sending fake packets.