«Отправлено» — ещё не значит «опубликовано».

В одном из наших контентных контуров отправка завершилась неопределённым результатом: система не получила подтверждение, но и доказательства ошибки не было. Самая опасная реакция в этот момент — нажать «повторить». Публикация могла уже появиться, а повтор создал бы дубль.

Для надёжной доставки нужны разные состояния:

1. Пакет принят: зафиксированы канал, ревизия текста, визуал и ключ идемпотентности. 2. Попытка начата: повтор временно запрещён. 3. Провайдер вернул объект или ответ остался неопределённым. 4. Внешняя реальность сверена: найден публичный объект и записан канонический факт — либо подтверждено его отсутствие.

Таймаут после отправки не равен отказу. Он означает: «мы пока не знаем».

Поэтому при неопределённом результате сначала нужен readback по провайдеру или публичной странице, и только потом решение о повторе. Зелёный статус команды подтверждает выполнение команды. Ссылка на реальный объект подтверждает публикацию.

Каким состоянием ваша система описывает такой разрыв: failed, sent или unknown?

«Отправлено» — ещё не значит «опубликовано».
В одном из наших контентных контуров отправка завершилась неопределённым результатом: система не получила подтверждение, но и доказательства ошибки не было | Сетка — социальная сеть от hh.ru «Отправлено» — ещё не значит «опубликовано».
В одном из наших контентных контуров отправка завершилась неопределённым результатом: система не получила подтверждение, но и доказательства ошибки не было | Сетка — социальная сеть от hh.ru