Ребёнок собирает в Scratch игру: персонаж появляется и сразу перемещается. Первый шаг никто не видит — эту команду можно смело убрать. Но как узнать об этом без риска? Сегодня таких проектов десятки миллионов, и малейшая ошибка улучшателя может сломать замысел.
Решение похоже на таможенный досмотр. Сначала непроверенный оптимизатор сканирует проект, строит граф (сеть) всех связей и предлагает удалить невидимые или бесполезные части. К предложению прикладывается сертификат — описание правки с условиями безопасности. Доверенный контролёр не верит на слово: он заново сравнивает исходную и изменённую программу. Главный ориентир — «линза наблюдения»: только то, что видит игрок. Если действие перекрывается другим до того, как его можно заметить, оно лишнее. Этот принцип опирается на доказанную в специальной программе Lean теорему.
Эксперимент на 300 проектах из интернета показал: 94,3% получили хотя бы одно безопасное улучшение. Обычно чистили неиспользуемые картинки, но иногда удаляли по-настоящему мёртвые команды. Атака из 4278 правок с намеренными ошибками провалилась полностью — контролёр не пропустил ни одной опасной. Всё благодаря теории управления и теории информации: система гарантирует, что не появится незамеченных каналов влияния. Важно, что метод даёт точные гарантии, не полагаясь на вероятности или байесовский вывод. Программу здесь рассматривают как динамическую систему, а её проверку — как строгий детерминированный анализ, а не случайный процесс.
Таможня для кода уже работает. В будущем она сможет проверять правки от искусственного интеллекта. Но уже сейчас ребёнок может нажать «запустить» — его замысел останется нетронутым.
При аудите системы нашли восемь ложных принятий: спрайт подсматривал за другим через номер костюма. Теперь этот канал наблюдения закрыт тестами.