core: message lifecycle events — прослеживать обработку, а не только доставку
Транспорт доказывает, что конверт отдан брокеру; он не доказывает, что получатель проснулся, разобрал и ответил. outbox трассирует доставку полностью (status/attempts/ last_error), local_messages не хранит ни статуса обработки, ни связи запрос-ответ. Отсюда «нечем дебажить сообщения между агентами» — возражение Алексея Юрченко 14.08, и наш же класс инцидентов, где acked принимали за прочитано. Добавлено в SQLiteMessageStore (аддитивно, существующие БД открываются без миграции): - таблица message_events: queued|delivered|woke|wake_failed|handled|replied|failed - recordEvent() — события копятся, ничего не перезаписывается - traceMessage() — полный жизненный цикл одного сообщения - traceConversation() — цикл по разговору - stalledOutbound() — доставленные и оставшиеся без ответа: вопрос, на который транспортные метрики ответить не могут - relatesTo связывает вопрос с ответом Тесты: 6 новых (включая delivered-без-woke и сосуществование со старыми строками), вся сюита 92/92. Проверено на копии боевой БД: строки целы, таблица создаётся на лету.
A
alexfrmn committed
c623bfcdd68c08cb3fd7f52bdd37d996fb27e079
Parent: 7f97c72