Summary
Boolean logic bug in _matches_filters causes events to be incorrectly rejected when filters.tags is None. Expression evaluates incorrectly due to None and anything behavior.
Location
src/phlo/hooks/bus.py lines 196-198
Vulnerable Code
if not (filters.tags and not all(event.tags.get(k) == v for k, v in filters.tags.items())):
return False
When filters.tags is None, None and anything returns None, and not None is True, causing incorrect rejection.
Recommended Fix
Explicitly check if tags exist before applying filter logic:
if filters.tags is not None and not all(...):
return False
Severity: P1 - High
Category: Correctness
Audit Reference: AUDIT.md