Exception behaviour changed
is_excluded([":"])Base version gracefully handles invalid IPs by catching ValueError and returning True; the new @lru_cache decorator introduces a TypeError for the same input, changing documented behavior without any test, doc, or changelog update.
return True # Treat invalid IPs as excluded+@lru_cache(maxsize=1024)Found by: Nemotron strategy search, search sample · no baseline found it
ran onToken Factory Sandboxes · image 1bafd31e-3df4-4239-8ac7-13dd73b31ec0
Regression test verified passes on base, errors on head
def test_caddy_feeds_4_p2_outcome_0():
"""Breakwater P2: base behaviour pinned (found by differential testing; label: likely-bug)."""
from ip import is_excluded
is_excluded([':']) # base returns normally