- BloomFilter class: O(n) space, configurable error rate - HashDedupStore: daily JSON files, 7-day retention, auto-rotation - Cross-run dedup in run_gate(): rejects entries seen in prior runs - CLI: --dedup-stats, --dedup-purge commands - Stats file rotation capped at 1000 entries - Purge command for full hash reset