b567261731
The queued lane re-implemented _send_final_text's record / send-with-retry / finalize sequence by duck-typing four private adapter members from gateway/. Lift the bracket into a public BasePlatformAdapter.send_final_ledgered(event, session_key, text, metadata, *, reply_to, is_ephemeral_response); _send_final_text keeps only the ephemeral-delete tail on top, the queued lane calls it with the inbound-id ledger event. ledger_message_id is a real dataclass field now, read directly. Tests trimmed from 18 to 8 invariants (bracket recorded+delivered; flood refusal stays a failed ledger row; forum-topic identity; plain adapter keeps plain send; normal-lane parity; chained/terminal/deeper-chain inbound ids). Still 6 red with main's run_notifications.py swapped in.