concurrency group по ref + cancel-in-progress: свежий коммит в ветку МР
(или мерж в main) отменяет ещё не закончившийся предыдущий прогон.
Завершённые прогоны не затрагиваются.
push фильтрован по main (мерж МР триггерит прогон), pull_request —
opened/synchronize/reopened (новые коммиты в ветку МР перезапускают прогон).
Обычные коммиты в ветки без МР больше не запускают CI.
Ревью rust: перенос в вики не должен удалять из репозитория то, что нужно
агенту для работы (бэклог, статус, планы, код-стайл, спеки). Дублирование
вики и репы разрешено и обязательно: вики — актуальные версии для людей,
docs/ — зеркало для контекста агентов. README разведён по ролям.
Хелпер Support/TestTenantStore: реестр на списке с Create/UpdateStatus,
DI получает .Repository. Потребители (10 файлов), фейк удалён,
тесты 1340 зелёные.
Хелпер Support/TestFileStorage: словари объектов/типов + журнал удалений,
подставка читает состояние на момент вызова (позиция потока при Put — по
контракту порта). Потребители (9 файлов) перетипизированы на .Storage,
фейк удалён, тесты 1340 зелёные.
Хелпер Support/TestDiscoveryStore сгенерирован из фейка: состояние (tasks/
candidates/blacklist/log/monitored) сохранено, 29 методов порта читают состояние
на момент вызова, неожиданных методов нет. Потребители (8 файлов) перетипизированы
на .Store, фейк удалён, тесты 1340 зелёные.
Хелпер Support/TestTelegramStore: словари каталога/превью + NSubstitute-подставка,
все методы порта читают состояние на момент вызова (семантика sync/upsert/
мониторов/бэкфилла сохранена). Потребители (5 файлов) перетипизированы на
.Store, фейк удалён, тесты 1340 зелёные.
Хелпер Support/TestAiClassifier: вся поверхность фейка (FilterResult/ClassifyResult/
Throws-флаги/счётчики) сохранена, сервисы получают NSubstitute-подставку
(.Classifier), поведение читает состояние на момент вызова, счётчики через
When/Do. Потребители (5 файлов), фейк удалён, тесты 1340.
Хелпер Support/TestGlobalSettingsStore: словарь состояния + NSubstitute-подставка
(GetAsync через Returns, SetAsync через When/Do), DI получает .Store.
Потребители (4 файла) перетипизированы, фейк удалён, тесты 1340.
Хелпер Support/TestRegistry.With: поиск/списки по фиксированному списку через
Returns с Arg-матчерами. Потребители (3 файла) перетипизированы на
ITenantRepository, фейк удалён, тесты 1340 зелёные.