This code is ambiguous... if value["negation"] is set to "false" (which it might be for existing data?) this expression will still evaluate to true.

Would it make more sense to have the front end normalize the negation checkbox to true/false rather than have the backend try to be flexible?