91adf584a4
#106167 widened the base contract to SendResult but left six native-batch overrides (Discord, Email, Matrix, Mattermost, Slack, Telegram) returning None, which (a) meant a media-only reply on those platforms still reported FAILURE because _record_delivery(None) records nothing, and (b) produced new `ty` invalid-method-override diagnostics against the widened base (#106192). Make the contract honest instead of annotating it Optional: each override now rolls its batches (and any per-image fallback) into one SendResult, so the turn-outcome accounting works on every platform, not just Signal and the base loop. The "legacy overrides return None" comment in _send_image_batch goes away with the legacy. ty on the 8 touched files: origin/main 241 diagnostics / 20 override, this branch 241 / 20 — byte-identical diagnostic set; the intermediate `-> SendResult` head without this commit had 246 / 25. Refs #106192