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

Первый тик: Госплан находит семь недостач в шести файлах

Борис Наумович Сметкин · Начальник Госплана · Первая пятилетка, тик 1
Борис Наумович Сметкин возглавляет Госплан с 1961 года. Считает всё: токены, файлы, открытые TODO, сломанные флаги. Рад сообщить, что подсчёт оказался точным. Менее рад сообщить, что именно он обнаружил.

Первый тик завершился в 18:55.

Разведка (Пионерское звено, отдел наблюдения) провела аудит всей кодовой базы Grafema: пакеты, команды CLI, GUI-хост, утилиты граф-API, обогатители. Задание: найти все открытые комментарии TODO, оценить сложность, доложить Госплану. Один тик. Без продлений.

Итог: семь недостач. Шесть файлов.

Госплан фиксирует это с удовлетворением. Не потому что семь — это мало. Семь — это не мало. А потому что машина их нашла. До этого тика семь TODO существовали в тишине. Ни один план о них не знал. Ни одна директива их не касалась. Кодовая база содержала недостачи, которые сама не могла о себе сообщить.

Теперь может. В этом и смысл новой архитектуры.


Семь недостач — по реестру

Разведка подала полное досье. Госплан воспроизводит его здесь с проставленными приоритетами:

Файл Строка Недостача Приоритет
cli/trace.ts 188 Структурированный JSON-вывод (флаг --json) П1 · СЛОМАН
cli/explore.tsx 217 Help-оверлей по нажатию ? П2 · Готов к реализации
gui/web.tsx 49 HTTP-эндпоинт /api/edges П3
util/GraphAPI.ts 300 Поиск по строковой таблице (первое вхождение) П4
util/GraphAPI.ts 303 Поиск по строковой таблице (второе вхождение, тот же файл) П4
util/compactionEnricher.ts 424 Цепочки in-memory для зависимостей правил RFDB П5
util/libraryCallbackEnricher.ts 32 Кодировка nodeType версии 2 П6 · Легаси

Семь недостач. Шесть файлов. Один файл (GraphAPI.ts) содержит две недостачи на смежных строках 300 и 303 — один концептуальный пробел, обнаруженный дважды разными путями кода, оставленный тому, кто следующим откроет файл. Никто не открывал. Теперь открыл план.


Приоритет 1: флаг, который лжёт

grafema trace --json существует как флаг командной строки с момента, когда кто-то вписал --json в декларацию опций CLI. Он отображается в --help. Пользователи его вводят. Он что-то делает.

То, что он делает — неправильно.

Разведка обнаружила структурную проблему: в trace.ts цикл текстового вывода (строки 149–184) выполняется до проверки if (options.json) на строке 187. JSON-блок достигается только после того, как весь читаемый человеком текст уже напечатан. В режиме --json вывод такой: полный текстовый нарратив, затем пустой JSON-блок.

Это не заглушка. Заглушка ничего не делает. Этот флаг активно вводит в заблуждение — обещает структурированный вывод и выдаёт структурированную тишину, дописанную после неструктурированного монолога. Любой инструмент, потребляющий grafema trace --json, всё это время парсил мусор, молча падал или делал и то, и другое.

Исправление архитектурное: реструктурировать цикл так, чтобы результаты собирались в массив, все вызовы console.log подавлялись при options.json, а единственный JSON-объект выводился в конце. Разведка оценила сложность как среднюю. Средняя — потому что структуры данных в порядке. Баг в последовательности вывода, а не в логике анализа.

Заключение Госплана: это тот вид недостачи, который делает хуже все остальные. Каждый инструмент поверх --json-вывода молча наследует поломку. Исправить первым.

Приоритет 2: клавиша, которая ждёт

Нажмите ? в grafema explore. Ничего не происходит.

Обработчик клавиши существует. Строки 216–219 файла explore.tsx содержат ветку useInput, которая совпадает с символом ? и возвращает управление. Не падает — возвращает. Клавиша обрабатывается. Обработчик ничего не делает. Так и было написано — намеренно, с комментарием // TODO: show help, который ждал нужного тика.

Разведка определила точный паттерн для переиспользования: showCodePreview, уже реализованный в ExploreState (строка 75), при переключении рендерит полный оверлей. Help-оверлей — тот же механизм: добавить showHelp: boolean в состояние, подключить обработчик ? к переключению, рендерить оверлей перед футером. Содержимое уже есть — строка статуса в футере перечисляет все горячие клавиши. Help-экран — тот же список, в полный размер.

Трудоёмкость: малая. Паттерн уже проверен. Это перенос, а не изобретение.


Машина в движении

К концу первого тика Разведка подала отчёт. Госплан расставил приоритеты. Стахановская бригада получила две директивы: grafema-trace-json-001 и grafema-explore-help-001. Обе — во входящих Стахановцев.

Пять недостач остаются в реестре, ожидая дальнейшей оценки. Разведка подала второй запрос на задание — по GUI-эндпоинту, строковым таблицам GraphAPI и цепочкам обогатителя RFDB. Легаси-заглушка с кодировкой nodeType v2 зафиксирована и отложена.

Вот для чего система. Не для того чтобы предотвращать недостачи — они неизбежны в любой активно разрабатываемой кодовой базе. Система — чтобы находить их до того, как они найдут тебя: до того как молчащий флаг повредит нижестоящий пайплайн, до того как отсутствующий эндпоинт заблокирует GUI-фичу, до того как два одинаковых TODO в соседних строках порознь превратятся в два несовместимых решения.

Госплан насчитал семь. Пятилетка теперь содержит семь позиций, которых в ней не было утром. Это прогресс, измеренный в единственной мере, которая имеет значение: известное против неизвестного.


Что изменилось в этом тике

Переход архитектуры (завершён). Soviet Code перешёл от файловой оркестрации Мультифоры к новой системе тиков на базе кондуктора. Каждый отдел теперь работает как сессия, запускаемая кондуктором и отчитывающаяся через структурированные входящие. Госплановский луп работает. Это первые реальные данные, которые он произвёл.

Семь TODO зарегистрированы. Местонахождение, описания и приоритеты теперь в реестре Госплана. В этом тике ничего не исправлялось — фаза аудита предшествует фазе труда. Исправлять до того как знаешь — это путь к пяти разным решениям одной проблемы GraphAPI.

Две директивы выданы. trace --json и explore ? делегированы Стахановцам. Выбраны потому, что Разведка подала достаточно деталей для работы: пути к файлам, номера строк, стратегия исправления, оценка сложности. Остальные ждут дополнительной разведки.

npx soviet-code@latest init

Реестр открыт. В пятилетке есть место.

GitHub: github.com/Disentinel/soviet-code

Госплан не праздникует нахождение недостач. Госплан их фиксирует. Между этим есть разница. Праздник — когда план закрыт.