tasks: local-run-without-telegram-token переведена в feature

- Тип сменён с chore: подъём без токена бота меняет наблюдаемое поведение и
  требует нормы, которой в openspec/specs нет.
- В тело записан второй предмет работы — судьба задачи из Telegram, дошедшей до
  ответа при отсутствующем боте; он же стал четвёртым критерием приёмки.
This commit is contained in:
av
2026-08-13 16:59:44 +03:00
parent 220a4374b1
commit 863ba3b42e
2 changed files with 16 additions and 3 deletions
@@ -1,6 +1,6 @@
# 🧹 Поднимать сервис локально без действующего токена бота
# Поднимать сервис без токена бота, работая одним входом
- **Тип:** chore
- **Тип:** feature
- **Категория:** Очередь — Поднято к долгам входа: живой прогон нужен именно им, а сегодня его нет ни у одной задачи.
- **Зачем:** Адаптер Telegram проверяет токен обращением к Telegram и роняет старт, а боевым токеном запускаться запрещено: проверить поведение живым прогоном не может ни одна задача.
@@ -16,9 +16,18 @@
Запрет запускаться боевым токеном снимать не надо: второй процесс с тем же
токеном перехватывает обновления у работающего.
Разбор 2026-08-13 нашёл вторую половину работы, из-за которой запись сменила тип
с обслуживания на функцию. Отправитель ответов сегодня существует всегда, и
конвейер зовёт его без проверки. Уберите его — и задача, пришедшая из Telegram и
лежащая в базе с прошлого запуска, дойдёт до ответа и уронит процесс. Что с ней
происходит без бота, надо решить и записать нормой: молчаливая потеря принятой
записи запрещена инвариантом.
## Затрагивает
- создание отправителя Telegram при старте в `main.go`;
- ответ отправителю в конвейере расшифровки: задача из Telegram, дошедшая до
ответа при отсутствующем боте;
- секция `[telegram]` конфига и её образец;
- раздел «Запреты» в `CLAUDE.md` — строка про боевой токен остаётся, но рядом
появляется способ поднять сервис без него;
@@ -33,3 +42,7 @@
тот же запуск: в выводе есть строка о том, что бот не поднят и почему.
- Поведение с настоящим токеном не изменилось. Оракул — тест на создание
отправителя с непустым токеном: прежний путь сохранён.
- Задача из Telegram, дошедшая до ответа при отсутствующем боте, не роняет
процесс и не теряется молча. Оракул — тест конвейера с заведённой задачей
источника Telegram и без отправителя: процесс жив, задача осталась пригодной к
повтору либо перешла в `failed`, и об этом есть строка журнала.