The onAbort terminal path persisted the partial turn but wrote nothing to the log, so a turn killed by a client disconnect / proxy drop / stop() was invisible in the logs (unlike onError and the controller catch, which both log). Add a logger.warn with the chat id, completed step count and partial-text length so an aborted turn is traceable.