# ✨ Поднимать сервис без токена бота, работая одним входом - **Тип:** feature - **Категория:** Очередь — Поднято к долгам входа: живой прогон нужен именно им, а сегодня его нет ни у одной задачи. - **Зачем:** Адаптер Telegram проверяет токен обращением к Telegram и роняет старт, а боевым токеном запускаться запрещено: проверить поведение живым прогоном не может ни одна задача. Замечено при попытке проверить вход вживую в задаче `oidc-login` 2026-08-12; подтверждено прогоном: с выдуманным токеном старт кончается отказом создания отправителя раньше, чем поднимается HTTP-сервер. Отсюда следствие, которое стоит дороже самого неудобства: **поведенческая верификация живым запуском недоступна проекту вовсе**. Всякая задача, меняющая наблюдаемое поведение, проверяется только тестами, а «поднять и посмотреть» остаётся человеку с боевым конфигом. Запрет запускаться боевым токеном снимать не надо: второй процесс с тем же токеном перехватывает обновления у работающего. Разбор 2026-08-13 нашёл вторую половину работы, из-за которой запись сменила тип с обслуживания на функцию. Отправитель ответов сегодня существует всегда, и конвейер зовёт его без проверки. Уберите его — и задача, пришедшая из Telegram и лежащая в базе с прошлого запуска, дойдёт до ответа и уронит процесс. Что с ней происходит без бота, надо решить и записать нормой: молчаливая потеря принятой записи запрещена инвариантом. ## Затрагивает - создание отправителя Telegram при старте в `main.go`; - ответ отправителю в конвейере расшифровки: задача из Telegram, дошедшая до ответа при отсутствующем боте; - секция `[telegram]` конфига и её образец; - раздел «Запреты» в `CLAUDE.md` — строка про боевой токен остаётся, но рядом появляется способ поднять сервис без него; - `docs/review.md`, подраздел «Недоступно проверке»: строка про недоступность живого прогона снимается или сужается. ## Критерии приёмки - Сервис поднимается с пустым токеном бота: HTTP отвечает, воркеры идут, бот не создан. Оракул — запуск с конфигом без токена и запрос `GET /health`: код 200. - Отсутствие бота названо в журнале один раз при старте, а не молчанием. Оракул — тот же запуск: в выводе есть строка о том, что бот не поднят и почему. - Поведение с настоящим токеном не изменилось. Оракул — тест на создание отправителя с непустым токеном: прежний путь сохранён. - Задача из Telegram, дошедшая до ответа при отсутствующем боте, не роняет процесс и не теряется молча. Оракул — тест конвейера с заведённой задачей источника Telegram и без отправителя: процесс жив, задача осталась в достигнутом состоянии, в повтор не ушла и в `failed` не переведена, а недоставка видна записью журнала с идентификатором задачи. Правка критерия 2026-08-13, решение владельца на чекпоинте: прежняя редакция требовала повтора либо `failed`, и оба исхода отвергнуты дизайном с ценой — пометка отказа на удавшейся работе врёт панели и метрике, а повтор не помогает, потому что бот от ожидания не появится.