Is this a bug or a misusing by myself?

What’s happening is not @future is matching the URL note that’s the last line in your above screenshot. And then the two above lines are included in the results because when there’s a matching item it’s ancestors are always show so that the match has some context.

If you had a flat list your search would have worked well. But when the items you are notting have children removing them gets more complicated. I think what you want is something like this:

//* except (@future union @future//*)

That says:

  1. Match everything in your outline: //*

  2. Then remove everything that’s tagged with @future or that is a descendent of an item that’s tagged with future: except (@future union @future//*)