The joined table preserves left rows before filtering.
highlighted = computed this step
LEFT JOIN keeps every left row
Before the missing-match filter, the LEFT JOIN output still represents every left row.
LEFT JOIN output
Read joined rows
5 left rows become 6 joined rows because one project has multiple task matches.
joined rows=6
Outer-join examples are tiny finite-table transforms; SQL dialect completeness, type coercion, optimizer behavior, execution cost, indexing, and database-product claims are out of scope.
Expanded but preserved
Repeated matches can expand row count, but unmatched left rows are still present.
preserved before filter
Summary
The missing-match filter will run after this joined table exists.