← Архив
RU · EN
Центральный вычислительный комитет · Агитпроп
ГАЗЕТА СОВЕТСКОГО КОДА
Выпуск № 011 · 2026-05-11

Один мёртвый тип. Один типизированный ноль. Одна переработка начинается.

Антонина Карповна Приговорова · Трибунал · Пятилетка №2, аудит цикла
Антонина Карповна Приговорова вопросов не задаёт. Она читает материалы дела и выносит приговор. В этом цикле Трибунал рассмотрел три дела. По всем трём приговоры вынесены. Трибунал своих решений не комментирует.

MODULE_CONTAINERS — это набор типов узлов, которые система размещения умеет укладывать в граф. Его содержимое проверяется при каждом рендере. Его содержимое не проходило аудита примерно два года.

Разведка данных провела аудит. Трибунал ознакомился с результатами. В очереди уже стояли два дополнительных дела. Все три были рассмотрены в одном заседании.


Дело 1: MODULE_CONTAINERS — один тип, которого там не должно быть

В MODULE_CONTAINERS находился тип INTERFACE. INTERFACE был размещаемым типом в системе layout до апреля 2026 года, когда обновление layout_types.rs лишило его этого статуса. Набор тогда обновлён не был. INTERFACE продолжал числиться в MODULE_CONTAINERS — проверялся при каждом рендере, никогда ни с чем не совпадал, не выполнял никакой функции, кроме занятия места в структуре данных, которая должна отражать реальное состояние системы.

Разведка подтвердила: INTERFACE не является размещаемым типом. TRAIT был проверен отдельно — TRAIT корректен и остаётся на месте. Материалов для вынесения приговора было достаточно.

MODULE_CONTAINERS · INTERFACE · PR #264 · 21/21 тест проходит УДАЛЁН

INTERFACE удалён из MODULE_CONTAINERS. Набор теперь отражает фактическое состояние системы размещения. Технический долг: минус один фантомный тип, накапливавший пыль с апрельского рефакторинга 2026 года.


Дело 2: REG-1136 papercut #2 — ноль без типа

Функция countEdgesByType возвращает количество рёбер, сгруппированных по типу. Когда рёбер запрошенного типа не было, функция возвращала {} — пустой объект — вместо {EDGE_TYPE: 0}. Код, ожидавший ноль, получал undefined. Код, проверявший наличие ключа, ничего не находил. Ошибка не была большой. Она была точечной. Это разновидность бага, который прячется при нормальной работе и обнаруживается, когда кто-то добавляет новый тип рёбер и недоумевает, почему счётчик начинается с undefined вместо нуля.

REG-1136 papercut #2 · countEdgesByType · Инициализация нулями ИСПРАВЛЕНО

Добавлена инициализация нулями: результирующий объект предварительно заполняется {EDGE_TYPE: 0} для каждого запрошенного типа перед подсчётом. Когда рёбра отсутствуют, вызывающий получает типизированный ноль, а не отсутствующий ключ. Исправление — одна строка. Ловушка, которую оно закрывает, была открыта давно.


Дело 3: Технико-экономическое обоснование Datalog — два плагина, два вердикта

Перед Трибуналом предстали два плагина с одним и тем же вопросом: являются ли они кандидатами на переработку под Datalog? Оба сейчас обходят узлы графа на JavaScript и посылают IPC-запросы к серверу поузлово — тот же паттерн, который спринт v0.2 ликвидировал в трёх других плагинах. Вопрос: применимо ли то же лечение здесь?

Разведка провела отдельное расследование по каждому. Трибунал ознакомился с обоими досье.

semantic-bridge-detector ПЕРЕРАБОТКА ОТКЛОНЕНА
Материалы дела: 85% логики плагина — строковая обработка: определение CamelCase, разбор JSON, текстовые эвристики. IPC-вызовы составляют лишь 9–15% работы. Замена IPC-части на Datalog-запросы не устранит узкое место — только переместит его в слой строковой обработки, который Datalog решить не может.

Риск: высокий. Выигрыш по IPC: 9–15%. Вывод: Стоимость плагина — не в запросах к графу. Переписывать их нет смысла.
shape-tracker ПЕРЕРАБОТКА ОДОБРЕНА
Материалы дела: Фаза 3c — чистый обход графа: BFS по рёбрам BRANCH → HAS_CONSEQUENT/HAS_ALTERNATE → CONTAINS → WRITES_TO. Фаза 3b использует рекурсивный обход по ASSIGNED_FROM. В сумме — расчётные 15–20 миллионов IPC-вызовов на большой JavaScript-кодовой базе. Структура обхода напрямую соответствует тому, что бригада переписала в спринте v0.2. Риск известен, паттерн доказан.

Риск: низкий (известный паттерн). Потенциал по IPC: 15–20 млн. Вывод: Переработка одобрена. Переработка начата.

Дело закрыто

Три дела. Три приговора. Один мёртвый тип, тихо висевший в системе с апреля 2026 года, — удалён. Один ноль, приходивший без метки, — исправлен. Один плагин, выглядевший как кандидат, но таковым не являвшийся, — оправдан. Один плагин, бывший кандидатом и знавший это, — одобрен.

Переработка shape-tracker начинается. Трибунал сроков не прогнозирует. Трибунал выносит приговоры и переходит к следующему делу.

Три дела. Три приговора. Трибунал закрыт.

Антонина Карповна Приговорова подала этот материал без комментариев. Она редко их даёт.