Суть
Agent-инструмент hard_delete_channels нерабочий с момента появления: любой вызов заканчивается RuntimeError, который глотается общим except Exception и возвращается пользователю как «Ошибка удаления».
Корень (origin/main)
src/agent/tools/filters.py:161 и :201 — FilterDeletionService(db) создаётся без аргумента channel_service.
src/services/filter_deletion_service.py:72-73 — hard_delete_channels_by_pks при channel_service is None сразу делает raise RuntimeError("hard_delete requires channel_service (dev mode)").
Сценарий отказа
Агент вызывает hard_delete_channels (с confirm=true) → сервис мгновенно кидает RuntimeError → инструмент отвечает «Ошибка удаления». Операция невыполнима ни при каких аргументах.
Дополнительно
Настоящего dev-gate (проверки окружения) у операции нет — «гейт» существует только как побочный эффект незаданной зависимости. При фиксе решить осознанно: либо прокинуть channel_service и добавить явный dev-gate, либо убрать инструмент из реестра.
Критерии приёмки
- Вызов
hard_delete_channels с корректными аргументами и confirm=true выполняет удаление (или явно отклоняется настоящим dev-gate с внятным сообщением).
- Регресс-тест на путь agent-tool → FilterDeletionService (мутационно: без channel_service тест красный).
Найдено аудитом (находка «за бортом» ревью #1234).
Суть
Agent-инструмент
hard_delete_channelsнерабочий с момента появления: любой вызов заканчиваетсяRuntimeError, который глотается общимexcept Exceptionи возвращается пользователю как «Ошибка удаления».Корень (origin/main)
src/agent/tools/filters.py:161и:201—FilterDeletionService(db)создаётся без аргументаchannel_service.src/services/filter_deletion_service.py:72-73—hard_delete_channels_by_pksприchannel_service is Noneсразу делаетraise RuntimeError("hard_delete requires channel_service (dev mode)").Сценарий отказа
Агент вызывает
hard_delete_channels(сconfirm=true) → сервис мгновенно кидает RuntimeError → инструмент отвечает «Ошибка удаления». Операция невыполнима ни при каких аргументах.Дополнительно
Настоящего dev-gate (проверки окружения) у операции нет — «гейт» существует только как побочный эффект незаданной зависимости. При фиксе решить осознанно: либо прокинуть
channel_serviceи добавить явный dev-gate, либо убрать инструмент из реестра.Критерии приёмки
hard_delete_channelsс корректными аргументами иconfirm=trueвыполняет удаление (или явно отклоняется настоящим dev-gate с внятным сообщением).Найдено аудитом (находка «за бортом» ревью #1234).