$ the-wire · showcase
PyRIT fixes converter identity collisions that broke registry registration
By RepoJournal · Filed · About AI Red Teaming · Composed from the cited sources · methodology
PyRIT corrected four text converters whose identifiers omitted output-changing settings, so differently configured instances no longer share a hash or collide on registry name.
FIX Include settings that change output in MathObfuscation, NegationTrap, SelectiveText and Zalgo converter identifiers microsoft/PyRIT
MathObfuscation, NegationTrap, SelectiveText and Zalgo now fold their output-changing settings into the converter identifier, so two instances configured differently no longer hash identically. Before this, registering the second of a pair like NegationTrapConverter(wrong_value="1234") and NegationTrapConverter(wrong_value="hunter2") raised ValueError: Instance 'NegationTrapConverter::89a3d225'...
FIX Include custom substitution values in the ColloquialWordswapConverter identifier microsoft/PyRIT
ColloquialWordswapConverter now identifies custom_substitutions by their values as well as their keys, so {"father": ["papa"]} and {"father": ["bapa"]} produce distinct hashes and distinct default registry names. Previously the second registration failed with ValueError: Instance 'ColloquialWordswapConverter::ab18d07b' already exists.
FIX Validate LeetspeakConverter custom_substitutions and match keys case-insensitively microsoft/PyRIT
LeetspeakConverter validates custom_substitutions at construction: uppercase keys such as {"A": ["4"]} and multi-character keys such as {"th": ["7"]} never matched the lowercased character lookup, and an empty replacement list such as {"e": []} raised IndexError on the first matching character. If you pass custom substitutions to this converter, the validation now runs before your run starts ra...
FIX Include settings that change output in MathObfuscation, NegationTrap, SelectiveText and Zalgo converter identifiers (#3288) microsoft/PyRIT
The merge commit carrying the converter identifier fix, with Roman Lutz listed as reviewer, matching what landed in story one.