IN keeps an outer row when its value appears in the inner result.
outer value in inner values
Evaluate IN
The result keeps 2 outer rows.
kept rows=2
Subquery examples are tiny finite table evaluations; SQL dialects, optimizer rewrites, NULL truth tables beyond the explicit NOT IN caveat, performance, and product behavior are out of scope.
Read per-row matches
The per-row table shows which inner rows matched each outer row.
semijoin view
Summary
This is a finite semijoin-style check, not an optimizer claim.