Подставки собираются Substitute.For с фиксированным Returns (SourceWith), проверки вызовов — Received/DidNotReceive. Фейк-классы удалены, тесты 1340 зелёные (один моргнувший тест TelegramIngressServiceTests — гонка порта харнесса, не воспроизводится).
Первый фейк из чек-листа задачи #1: Substitute.For<IDiscoveryPacer>, счётчики DelayCalls -> Received/DidNotReceive, колбэк OnDelay -> When/Do. Фейк удалён, тесты 1340 зелёные.
SaaS-мониторинг Telegram: ядро (модули Cards/Kanban/Pipeline/Tenants/Settings/ Discovery, Api, Infrastructure), сервисы telegram/ai/ml/storage, фронт Vue, контракты и grpc-hosting, деплой-конфиги (dev/prod/observability/CI-раннер), Gitea Actions CI, документация (ТЗ, техдок, api-map, код-стайл, планы, бэклог). Текущее состояние: все этапы роадмапа 0–12 закрыты, сборка 5 sln 0/0, тесты 1340/130/52/38/9 зелёные.