Files
transcriber/tasks/items/stalled-pipeline-metric.md
T
av 5501384cdc tasks: упразднены цели и роадмап, объявлена стадия build
- 11 записей типа goal закрыты с причиной, называющей задачи-наследники;
  ROADMAP.md удалён, индекс остался один — BACKLOG.md;
- 33 записи переписаны: ссылка «Двигает пункты N «Завершения» цели» уступила
  место прямому утверждению — без целей номера пунктов вели в никуда;
- шапка BACKLOG.md размечена парой <!-- стадия -->, порядок строк теперь
  объявлен зависимостью, а не важностью.
2026-08-13 16:00:14 +03:00

36 lines
2.7 KiB
Markdown

# ✨ Показывать метрикой задачу, застрявшую в состоянии
- **Тип:** feature
- **Категория:** Очередь — Признак вставшего конвейера — вторая половина той же работы.
- **Зачем:** Вставший конвейер неотличим от простоя: возраст задачи в состоянии не считается, и очередь без движения выглядит как отсутствие работы.
По метрикам видно, что конвейер встал, и это отличимо от «работы нет».
Сегодня метрики считают события — принято, распознано, отказано, — а состояние
очереди не считает ничто. Пустая очередь и очередь, где десять задач висят третий
час, дают одинаковый нулевой прирост счётчиков.
## Затрагивает
- `internal/metrics` — метрика числа задач по состояниям и возраста самой старой
из них;
- таблица задач: колонка состояния, по которой считаются числа, и отметка
времени перехода, по которой считается возраст самой старой;
- `docs/architecture.md`, раздел эксплуатации — что означает каждое число;
- `docs/database.md` — частота съёма чисел.
## Критерии приёмки
- Число задач в каждом состоянии видно на `/metrics`. Оракул — тест: завести три
задачи в разных состояниях и снять метрики.
- Возраст самой старой задачи в состоянии виден числом и растёт, пока задача не
сменила состояние. Оракул — тест на задаче с заведомо старой отметкой времени.
- Съём чисел не мешает работе воркеров. Оракул — чтение кода: запрос идёт по
индексу состояния и не берёт захват.
## Рамки
Правило оповещения на этой метрике заводит задача `owner-alerting` — здесь
только число. Порог «сколько считается застреванием» здесь не решается: он
зависит от замеров `speechkit-limits` и `intake-limits-measure`.