ruff 0.16.0 stabilized PLR0917 (too-many-positional-arguments) out of
preview. The project selects PL wholesale and CI installs ruff unpinned,
so the rule switched on by itself and four signatures went red without a
line of source changing.
Every flagged call site already passed the tail arguments by keyword, so
the signatures were understating a contract the code had already adopted.
Mark that tail keyword-only:
DetectorRegistry.__init__ - six optional config knobs, all keyword
_append_findings - matches/text positional, context keyword
_process_dns_packet - packet data positional, context keyword
_make_packet (test helper) - eight defaulted fields, all keyword
_process_dns_packet was the only caller passing positionally; it now
names path/packet_num/dns_detector/result like every sibling call does.
313 tests pass, ruff clean on both 0.15.7 and 0.16.1, mypy unchanged at
its three pre-existing errors.
Add ASCII art, project number badges, justfile tip, and learn module
links. Add missing justfile to dlp-scanner. Update main README with
source code links and bump project count to 23/67.