The criteria isn't being *ignored*, but rather the criteria is **always validated**.

Consider that:

`(not "a")`

matches anything not equal to `"a"`

(hence this will include `"b"`

)
`(not "b")`

matches anything not equal to `"b"`

(hence this will include `"a"`

)

As such, `(not "a") or (not "b")`

will always return all records.

Another way to think about this is that:

```
(not "a") or (not "b")
```

is equivalent to:

```
not ("a" and "b")
```

And since something cannot be both `"a"`

and `"b"`

at the same time, this will always be validated.

I suspect that you actually require the logic:

```
(not "a") and (not "b")
```

Which may be equivalently written:

```
not ("a" or "b")
```

That it to say, neither `"a"`

nor `"b"`