- Replace logging.basicConfig with QueueHandler/QueueListener
so all log output writes from a single thread
- Add %(threadName)s to format for thread identification
- send_summary now accepts original_sender (raw From header)
- Context stores original_sender separately from AI-generated sender
- _do_send_reply tries original_sender first, then AI sender fallback