dd72b42ba4
A cron job fired, the scheduler logged "delivered to telegram:<chat> via live adapter", and nothing reached Telegram (#77763). The log line was not evidence of a send: * the silence-narration filter returns {"success": True, "delivered": False} (a successful *drop*), and the dict-normalization branch read only "success", so a filtered message counted as delivered; * an empty payload (no text, no media) skipped the send entirely and still fell into the "delivered" branch; * the log line named the chat but not the lane, so a wrong-thread delivery and a phantom one are indistinguishable after the fact. _confirm_adapter_delivery now inspects both result shapes: an explicit `delivered: False` is a rejection even with a truthy `success`, and a success with no message_id and no raw_response is accepted but logged as UNVERIFIED. The empty-payload case fails closed into the existing standalone/warn handling, and the delivered log carries thread= and message_id=. Failing closed on the live lane is only half the fix on a native target: the standalone fallback sent the same empty payload, and the Telegram adapter returns SendResult(success=True) for empty content without an API call — a phantom live delivery became a phantom standalone one. Both _send_to_platform call sites now sit behind one skip guard, so "empty payload fails closed" holds on every lane (#77763).