User reported missing response for outdoor golf driving ranges. In ava.service logs at 2026-04-14 18:02:50–18:03:40 local, agent called send_message once for an interim ack (telegram_id 17815), then completed with a 1700-char final response in interaction_log id 5adcda38-e52f-4bfd-9eeb-5571247d544e but never called send_message again. scheduled_messages has no row for final answer. Bot still logs 'Responded ... via send tool' because messageSentRef is true after any send_message call, so fallback path never enqueues Engine.resultFinalMessage. This causes silent drop of final answer when model writes final text instead of using send_message after progress updates.
Committed fix in f9629d3 (Bot fallback logic + tests).
Implemented fix in Omni/Ava/Telegram/Bot.hs. Added fallback detection for cases where model emits non-empty resultFinalMessage after running additional tools following last send_message/send_photo call. New helper functions: isUserVisibleSendTool, hasToolCallsAfterLastUserVisibleSend, shouldSendFinalFallbackMessage. Response handling now enqueues fallback final text in this case (including group chats) and updates DM fallback metrics accordingly. Added unit tests for fallback trigger + AGENT_DONE non-trigger. Verified with typecheck.sh Omni/Ava/Telegram/Bot.hs and bild --test Omni/Ava/Telegram/Bot.hs.