- raises block must be pytest.raises (func attr check) with matcher
exactly naming IntegrityError (dotted-name boundary match, so
NotIntegrityError fails)
- INSERT OR IGNORE/quoted/qualified table spellings normalized before
matching so they cannot bypass the raises-block requirement
- probe count is per-function (each of the two sanctioned functions
must hold exactly one probe), not an aggregate