# SDD ledger — plan: docs/superpowers/plans/2026-09-04-channel-discovery.md Адаптация процесса: проект НЕ git-репозиторий (рабочее дерево C:\telbase, деплой docker compose). Вместо коммитов фиксируем затронутые файлы и результат проверок; вместо git-диффов ревьюер читает файлы из brief. Рабочая папка плана: .superpowers/sdd/channel-discovery/ Pre-flight правки плана (сделаны контроллером до старта): - Task 3: добавлены недостающие интерфейсы delete_candidate() и advance_search() (Task 6 на них ссылается). - Task 6: унифицированы метки недоступной истории (закрытая группа/канал — история скрыта; канал — история недоступна). - Task 5: уточнена detect_lang_ru (>=0.15 -> True, <=0.03 -> False, иначе None). Состояние задач: - Task 1: complete (db.py, constants.py, settings_routes.py; review clean; minor: min<=max пауз не проверяется — кандидат в UI-задачу) - Task 2: complete (ban_guard.py; review clean; minors: wait_join_delay не покрыт живым прогоном, min<=max не enforced, защитные `or 0`) - Task 3: complete (discovery.py; review clean; контракт: внешние dict camelCase, set_candidate_status только new/review, delete_task чистит лог; minors: идемпотентность mark_rejected, сортировка лога) - Task 4: complete (telegram.py discovery_* + add_dialog_monitored; review clean; fix round 2: форум читает >=3 сообщ./тема; контракт: join без паузы, discovery_read c topic_id/topic_title) - Task 5: complete (discovery_eval.py; review clean; семантика: topic "main" для None, ИИ-ветка дополнительно проверяет наличие ключа провайдера) - Task 6: complete (discovery_worker.py + main.py loop; review clean; deferred minor: авто-join без лимита ретраев — риск застревания конвейера на битом кандидате, решить в финале/E2E) - Task 7: complete (discovery_routes.py + main.py; review clean; deferred minors: двойной reject не идемпотентен, join ранее отклонённого оставляет запись в blacklist — решить в финальной волне) - Task 8: complete (store.js discovery-функции, ChannelsView сегмент, DiscoveryView каркас+мастер; review clean) - Task 9: complete (DiscoveryView табы/кандидаты/ЧС/квоты, Icon users/megaphone/list, settings discPaused в _PUBLIC_BOOL; review clean; minors: прямой api-импорт в вью, discCandidateStatus мёртвое, resetLocal не чистит discCounts) - Task 10: complete (ТЗ 4.9 + сборка/health; E2E с живым аккаунтом — за пользователем, шаги в task-10-report.md) - Фикс-волна (I1–I4/M1–M5/m1–m6): complete (final-fix-report.md; smoke зелёный) - Scoped-ревью фикс-волны: complete (final-review-report.md) — 2 Important + 4 Minor закрыты правками в discovery_worker/ban_guard/discovery_routes/settings_routes; повторный smoke A–E зелёный; образ пересобран, контейнер поднят, API 200. Все 10 задач + фикс-волна выполнены, ревью чистое. Осталось: живой E2E с Telegram-аккаунтом (шаги в task-10-report.md).