Все пять safety-свойств Raft прошли. Две реплики разошлись
Реализация Raft на TypeScript под сидированной симуляцией: каждый тик, каждая задержка сообщения и каждое падение узла берутся из сида. На двадцать пятом прогоне две реплики применили разные значения — при том, что правила алгоритма выполнялись все до одного.
Интересен не сам баг, а то, какая проверка его поймала. И вопрос, который из этого следует: откуда я знаю, что остальные проверки вообще на что-то смотрят.
В прошлый раз я воевал с тем, чтобы пол, имя и диагноз в одной строке не противоречили друг другу. Чтобы они не жили каждый в своей песочнице, а наконец-то сошлись. В итоге выкатились карточки, напечатанные через запятую. Но откуда там запятые? Я тогда не проронил ни слова. А это важнейший момент для понимания.
Обычно под «у нас есть тесты на Playwright» все понимают классику: e2e, который открывает приложение, логинится, штурмует страницы и дергает настоящий или почти настоящий backend. А вот в Angular-мире основной пласт UI-автоматизации — CAT-тесты (component autotest), и это совсем другой замес.
Идея в том, что тест поднимает один компонент или даже бизнес-форму целиком в Storybook, открывает это в настоящем Chromium, потом имитирует действия юзера, управляет HTTP-ответами и сверяет интерфейс с эталонными скриншотами. В итоге имеем зверя, который не то unit, не то e2e — что-то посередине.
Баги — это не просто мусор в трекере, а источник инфы о рисках продукта
Ты серьезно думаешь, что QA нужен, чтобы штамповать дефекты тоннами? Чем длиннее список в баг-трекере, тем «полезнее» тестировщик, да? А вот и нет. В статье разжевывают, почему QA — это не охотник за багами, а инженер качества.
В Modus такой инженерный подход к стабильности позволяет заворачивать риски еще до первой строчки кода. И отношение к процессам тестирования после этого меняется кардинально.
Пагинация ломается не только внутри запроса к базе. Это цепочка: бэкенд определяет порядок и границу страницы, фронт хранит курсор и объединяет ответы, а пользователь меняет фильтры, повторяет запросы и возвращается на экран.
Разберём шесть ситуаций, в которых локальные проверки зелёные, а список целиком работает неправильно.
5ⁿ → 4n+1: сколько на самом деле дают редукции в explicit‑state model checking
Проверка модели полным перебором упирается в комбинаторный взрыв, и практически вся инженерия в этой области — не про сам поиск, а про то, как его избежать. Две классические техники — редукция по симметрии и редукция частичных порядков — описаны в литературе десятилетиями, но их эффект обычно приводится либо асимптотически, либо на одном показательном примере. Ниже — измерение на работающей реализации: во сколько раз каждая редукция сокращает пространство состояний, сколько она стоит в пересчёте на состояние, на каких спецификациях она не даёт ничего, и — главное — экспериментальная проверка того, что четыре условия ample‑множества действительно необходимы, а не унаследованы из статьи без разбора. Три результата, ради которых стоит читать дальше: Читать далее
Не надо выдавать ИИ‑агенту больше свободы лишь потому, что он выглядит смышлёным. Расширять его полномочия стоит только тогда, когда внешняя система вокруг агента способна надёжно вылавливать его косяки.