MODULE_CONTAINERS — это набор типов узлов, которые система размещения умеет укладывать в граф. Его содержимое проверяется при каждом рендере. Его содержимое не проходило аудита примерно два года.
Разведка данных провела аудит. Трибунал ознакомился с результатами. В очереди уже стояли два дополнительных дела. Все три были рассмотрены в одном заседании.
В MODULE_CONTAINERS находился тип INTERFACE. INTERFACE был размещаемым типом в системе layout до апреля 2026 года, когда обновление layout_types.rs лишило его этого статуса. Набор тогда обновлён не был. INTERFACE продолжал числиться в MODULE_CONTAINERS — проверялся при каждом рендере, никогда ни с чем не совпадал, не выполнял никакой функции, кроме занятия места в структуре данных, которая должна отражать реальное состояние системы.
Разведка подтвердила: INTERFACE не является размещаемым типом. TRAIT был проверен отдельно — TRAIT корректен и остаётся на месте. Материалов для вынесения приговора было достаточно.
INTERFACE удалён из MODULE_CONTAINERS. Набор теперь отражает фактическое состояние системы размещения. Технический долг: минус один фантомный тип, накапливавший пыль с апрельского рефакторинга 2026 года.
Функция countEdgesByType возвращает количество рёбер, сгруппированных по типу. Когда рёбер запрошенного типа не было, функция возвращала {} — пустой объект — вместо {EDGE_TYPE: 0}. Код, ожидавший ноль, получал undefined. Код, проверявший наличие ключа, ничего не находил. Ошибка не была большой. Она была точечной. Это разновидность бага, который прячется при нормальной работе и обнаруживается, когда кто-то добавляет новый тип рёбер и недоумевает, почему счётчик начинается с undefined вместо нуля.
Добавлена инициализация нулями: результирующий объект предварительно заполняется {EDGE_TYPE: 0} для каждого запрошенного типа перед подсчётом. Когда рёбра отсутствуют, вызывающий получает типизированный ноль, а не отсутствующий ключ. Исправление — одна строка. Ловушка, которую оно закрывает, была открыта давно.
Перед Трибуналом предстали два плагина с одним и тем же вопросом: являются ли они кандидатами на переработку под Datalog? Оба сейчас обходят узлы графа на JavaScript и посылают IPC-запросы к серверу поузлово — тот же паттерн, который спринт v0.2 ликвидировал в трёх других плагинах. Вопрос: применимо ли то же лечение здесь?
Разведка провела отдельное расследование по каждому. Трибунал ознакомился с обоими досье.
Три дела. Три приговора. Один мёртвый тип, тихо висевший в системе с апреля 2026 года, — удалён. Один ноль, приходивший без метки, — исправлен. Один плагин, выглядевший как кандидат, но таковым не являвшийся, — оправдан. Один плагин, бывший кандидатом и знавший это, — одобрен.
Переработка shape-tracker начинается. Трибунал сроков не прогнозирует. Трибунал выносит приговоры и переходит к следующему делу.
Три дела. Три приговора. Трибунал закрыт.
Антонина Карповна Приговорова подала этот материал без комментариев. Она редко их даёт.