Not searches can display unexpected results in TaskPaper because when TaskPaper displays search results it also includes the ancestors of those results.
Take this example outline:
My Big Project:
- My Big Task. @done
My big note.
Now search for
You may be surprised to find that "- my big tasks" is still visible. The reason for this is that "My big note" is not tagged with @done. So even though "- My big task" is marked done, it is still displayed because it's the ancestor of "My big note.
Because of this in TaskPaper you'll often want "not" searches to translate to: "not any of this item, or it's descendants". The good news is there's a pretty easy pattern to follow in these cases. Do your "not" search. And then use "except" to remove the descendants of that same search from the results like this:
not @done except @done//*