I need to look more at your query ... I think the fact one of the "and" statement collapsed to an empty set means that it should have returned an empty set.

That having been said, you are also correct that refs is constantly changing and by being included in a playlist, it is possible you can setup a scenario where it actually then needs to be excluded from the playlist (and thus included again...). The saving grace here is that refs are real tags, and thus don't fire tagModified events when they are changed ... The more I think about this the more I think that soup membership needs to be idempotent .... I'll work on this. At the very least, jEmplode soups should be -- they should _appear_ to work exactly like they used to.