To make the shopping-cart/item-set recommender work generally we need add and remove variants of an event. So "add-to-cart" must also have a "remove-from-cart". We will need to treat each user's history as an aggregation of these, much like $set/$unset.
The algo can do this if we add event aggregations for more than $set/$unset. Or maybe we wait for re-architecture and do this in the algo.
But this will have to be accounted for in SelfCleaningDataSource now. We can specify add/remove pairs in the engie.json so I'll make a proposal for this but it will be read and followed in SelfCleaningDataSource so I imagine it will be in the eventWindow spec.