Раннер падал каждые две с половиной минуты, а job для одного репозитория не мог запуститься больше суток. Мы искали сетевой баг — с захватом пакетов и дампом памяти в WinDbg. Настоящая причина оказалась в одной строке фильтра API и логике watchdog'а.
Поскольку проект состоял из пяти репозиториев, каждый из них обзавёлся своей собственной CI. Красиво архитектурно — и дорого по минутам GitHub Actions. Подняли свою Windows-машину с одним раннером на всех пятерых — и написали для него сторожа, которому предстояло с треском провалиться меньше чем через сутки.
Что делать, если парсер генерирует документацию для класса, которого не может найти глобальный текстовый поиск по всему репозиторию? История одной ложной паники.
Каждая пересборка гоняла Doxygen и парсинг XML заново, даже если ничего не изменилось. Двухуровневый кэш на двух отпечатках эту боль снял. Но название неслучайно с подвохом: реальную скорость он дать не может, потому что кэшировать умеет только то, что вообще можно пропустить целиком.
Рабочее название движка оказалось занято брендом отладчика микроконтроллеров. Мы перебирали короткие варианты с подстрокой ude, одновременно оценивая благозвучие, чистоту и продвигаемость.
Никакой драмы с падением прода — только курьёзная и показательная находка. Прогнали автономный ИИ-аудит по ядру движка и наткнулись на условие, которое гарантированно выполняется всегда.
Старая универсальная модель хранила данные как бесформенные строки, что приводило к тихим потерям информации. Мы переписали ядро на строгие типы, заменив тихую деградацию на громкие ошибки валидации.