Files
healthlog/docs/backlog/alert-tishina-potoka.md
T
av 8331328134 Дозакрыты находки ревью по слиянию сущностей
- Правило покрытия получило второй разряд (условный, как у точек), запрет
  вырождения формы и счёт содержательных элементов ряда: скелет из скаляров и
  ряд из null больше не затирают маршрут. Победитель внутри доставки стал
  функцией множества версий — общим помощником с точками, — а провенанс
  поднимается и при совпавшем хеше, иначе отложенная доставка возвращала витрину
  к прежнему содержимому.
- Одно поле не того типа больше не уносит сущность, а пропуски видны в учётной
  записи доставки (миграция 00008, NULL = «не измерялось»); каноническая форма
  считается один раз и вне транзакции; откат бинаря поверх новой схемы отказывает
  на старте; текст ошибки разбора не несёт значений из тела.
- Ревью кода профилем deep (девять проходов) нашло две регрессии и обе закрыты:
  безусловный второй разряд запирал законный досчёт навсегда, а выбор победителя
  был квадратичен по числу присланных версий одного ключа.
2026-08-02 16:38:18 +03:00

2.1 KiB

Активный алерт «данных нет N часов»

Приоритет: низкий

Пропажу потока сейчас замечает человек. /stats покажет факт, но только если туда заглянуть — а заглядывают ровно тогда, когда уже что-то заподозрили.

Активное уведомление закрывает разрыв: сервис сам сообщает, что данных нет дольше порога. Канал — тот же, что у остальных моих проектов.

Порог не единый: быстрый проход идёт каждые 5 минут, но ночью телефон заблокирован и тишина штатна (находка 28). Значит порог считается по времени суток или по последней успешной доставке каждой автоматизации отдельно.

Приоритет низкий, пока сервис на рабочей машине и я вижу его каждый день. После деплоя на rivendell поднимется.

Источник алерта не может жить внутри serve

Отказ стража версии схемы (база новее бинаря) останавливает процесс, а restart: unless-stopped даёт цикл перезапуска. Значит алерт «данных нет N часов», живущий внутри сервиса, на эту причину остановки не сработает по построению — он не поднимется вместе с ним. Обоснование стража («откат делает оператор, он в этот момент рядом») верно для ручного отката и не покрывает перезапуск хоста или откат деплоя.

Пришло из задачи «Дозакрыть находки ревью по слиянию сущностей» (проход ops, negative).