e49a7fe568
_resolve_thread_id() falls back to _last_inbound_thread[chat_id] when no explicit thread is present. That fallback exists for interactive DMs, where Google Chat spawns a fresh thread per top-level user message and the adapter drops thread_id to keep the session key stable. It also fired for cron deliveries, which carry job_id in their metadata but no thread: the output landed as a reply inside the last inbound thread instead of starting a new top-level message. Bypass the _last_inbound_thread fallback when metadata has a job_id (i.e. the message is an automated cron delivery), so cron output posts at top level unless an explicit thread is requested.