VibeVM
Contents
On this page
en
Publisher
org.vibevm.core
Version
1.0.0latest
Audiences
Reading time
6 min
Rendered
Read aloud
never

CONVERT-SOURCE — стройка глагола и флип корпуса на XML

01_STATUS: ЗАВЕРШЁН — 2026-08-24: XML-переход доведён до конца (K1…K7 + K6.5-адресуемость; корпус 871+четыре README-хвоста, 2170 ячеечных имён, оба линта, мир рематериализован, панели all green) · остатки — B-106 (доисторическая гниль ссылок) · закон: vibevm/vibespecs/common/PROP-051-refactor-umbrella.xml (BUILT)

Периметр

02Мандат владельца покрывает авторские исходники спецификаций: хостовое дерево spec/ и каждый член packages/. Вне периметра: vibedeps/ и весь материализованный/генерённый стейт (PROP-051 ##VIBEDEPS-NEVER-CONVERTED — переезжает рематериализацией), CLAUDE.md/AGENTS.md/GEMINI.md (имена — контракт харнессов), refs/** (чужое), фикстуры тестов (данные, не исходники), корневые *.md и campaigns/** (операционные документы, не спеки; захотим — тем же глаголом отдельной волной по слову владельца).

Нарезка

03K1 — глагол. Ядро классификации в vibe-specdoc (convert.rs: класс 1/2/3 по PROP-051 ##HONESTY-BY-REVERSE + loss-diff) и тонкая команда vibe refactor convert-source в vibe-cli (walk + skip-правила ##CONVERT-SOURCE-SURFACE, prompt/--force/ --dry-run, пофайловый отчёт, коды выхода). Юниты на ядро (все три класса, комменты как content-loss, оба направления) + e2e на голом корпусе (tempdir): чистый файл, файл с комментом, already, dry-run, непарность после конверсии. Делегируется; спека коммитится до спавна. ПОСАЖЕН 2026-08-24 (bf6a9bd9): codex-воркер K1-CONVERT, отчёт с красным доказательством класса 3 в архиве; честная девиация воркера — канонический to_markdown завершает финальный блок двумя \n, фикстура класса 1 обязана нести канонические байты.

04K1b — семейство глаголов (довесок после посадки ядра). --from/--to на всех глаголах (PROP-051 ##FROM-AND-TO), convert-package-src (валидация корня по vibe.toml, обход всего пакета) и convert-spec-src (только spec/ пакета; без аргумента — текущий корневой проект) — тонкие врапперы над тем же ядром (##WRAPPERS-SHARE-THE-CORE), плюс алиас convert-src. Отдельный воркер на тёплом worktree K1 или свежий пакет — по состоянию K1. ПОСАЖЕН 2026-08-24 (2609cfc3): тот же codex-воркер свежим тредом на тёплом worktree; санкционированный сплит refactor/{mod,convert_source}.rs; отказ резолюции корня едет тем же refused-счётчиком, что и файл; visible_alias вместо скрытого clap-alias (воркер поймал конфликт пакета с требованием видимости в --help).

05K2 — инвентарь. СНЯТ 2026-08-24 живым инструментом (convert-spec-src по хосту + convert-package-src по всем 86 корням версий). Числа: хост spec/ — 112 кандидатов (0 byte-stable, 105 IR-stable-loss, 5 ir-divergent, 2 отказа парса, 1 generated-скип, 3 already-xml, из них 2 — ЧУЖИЕ xml в research-кэше); пакеты — 840 кандидатов (1 byte-stable, 836 IR-stable-loss, 3 ir-divergent, 16 generated-скипов), причём 129 md под node_modules — чужой вендоринг, конвертировать нельзя. Механический разбор жанра потерь (токен-мультимножества минус/плюс): комментарных потерь в авторском корпусе НОЛЬ (все 21 — node_modules); 786 файлов — чистый респеллинг под канон эмиттера (пустые строки после факт-лида и на EOF, пайп-паддинг таблиц, сброс :---:-выравнивания — записанное решение PROP-045 «spelling, не семантика», перенумерация ordered-списков, легализация вложенных fences четырьмя бэктиками, демоция повторных H1 в иерархию). Настоящий хвост, ЖАНРОВО: (а) БАГ ПИВОТА — бэктикнутый токен внутри comment= статуса возвращается ПРОБЕЛАМИ той же длины (vibevm/vibespecs/design/map-query-language.xml, `471e3b1b` → 8 пробелов; md-фронтенд читает атрибут из замаскированного буфера сканера) — чинится до флипа, K2.5; (б) SKILL.md теряют YAML-frontmatter — это харнесс-контракт, им нельзя конвертироваться вообще → скип по имени, K2.5; (в) 7 «reparsed to a different pivot IR» (3 хост-PROP + 2×FRACTALITY-INITIATIVE-PLAN + следы) — разбор конструкции, K2.5; (г) 2 «td не может нести |» (tui-visual-language:130 `+-\|` , PROP-002:318 `"none" | "token-env" | …` ) — РЕ-КЛАССИФИЦИРОВАНО боссовой бисекцией: пайпы стоят внутри КОД-СПАНОВ ячеек, md-форма существует и репарсится (сканер маскирует код до разбиения ячеек) — это не предел диалекта, а чрезмерная строгость xml-писателя (проверка сырого | в td без учёта код-спанов); ПОЧИНЕНО K2.6 (2ec6c0b2): ячейки режутся по маске с нарезкой авторского спеллинга, td-проверка пробует общий сканер — оба файла ir-stable-loss, настоящие пределы (голый пайп, перевод строки) держатся красно-доказанным юнитом; (д) 2 отказа парса — этот терраформ (<status> не под заголовком — починено этим же коммитом) и PACKAGES-ACTUALIZATION-CAMPAIGN-v0.1.xml (14 разметочных долгов anchored-when-marked — ЗАКРЫТО b988b569: хроникальные дневниковые пункты де-маркированы, это проза, не факты). КОНТРОЛЬНЫЙ ИНВЕНТАРЬ 2026-08-24 (после K2.5+K2.6): 811 кандидатов (119 spec + 692 packages), refused=0, ir-divergent=0 по всему корпусу; skipped-foreign=1 (директорией), skipped-harness=34, generated-скипы штатны. Корпус готов к массовому флипу K3/K4. Полные логи: $CLAUDE_JOB_DIR/tmp/k2-{spec,packages}.txt (сессионные), выжимка — здесь.

06K2.5 — инженерный хвост инвентаря (делегируется). (1) Дефект маскированного чтения: StatusEl.comment (и любой атрибут элемента) читается из СЫРОГО источника, не из маскированного буфера; юнит: бэктикнутый токен в comment переживает md→xml→md дословно. (2) Скипы обхода: node_modules (чужой вендоринг — жанр vibedeps) и харнесс-контрактные имена CLAUDE.md/AGENTS.md/GEMINI.md/ MEMORY.md/SKILL.md — всегда, с отчётной строкой skipped-foreign/skipped-harness. (3) Разбор семи reparse-дивергенций до именованной конструкции: дефект движка — чинится; предел диалекта — файл переезжает в ручной список K3. ПОСАЖЕН 2026-08-24: codex-воркер K25-ENGINE — ВСЕ пять дивергенций оказались дефектами движка и починены (fragment-<status> рядом с юнитовым @status ошибочно назначался статусом факта; многострочный код-спан с продолжением на | ложно открывал таблицу при репарсе; атрибуты <status> читались из маскированного буфера — теперь scan_text только находит, source_text декодирует, включая ref=); ручной K3-список от дивергенций ПУСТ; скипы skipped-foreign/ skipped-harness живут (явное имя-контракт аргументом — громкий отказ); 19 e2e. Боссов хвост стоил двух красных панелей: пропущенная specmap-ступень порядка посадки и Windows-локи generated-свапа (дебрис снесён).

07K3 — хостовый spec/. Конверсия всего дерева (включая vibevm/vibespecs/WAL.xml и терраформы; генерённый vibevm/vibespecs/boot/* глагол пропускает сам по маркеру) + свип by-name ссылок на переименованные пути: инлайн-ссылки в прозе спек, буты/хуки/TOOLING-MAP.md, текст CLAUDE.md, указывающий на vibevm/vibespecs/WAL.xml. Гейт: vibe check чист, wal_wellformed держит XML-источник через проекцию. ПОСАЖЕН 2026-08-24: 119 файлов одним прогоном convert-spec-src --to xml --force, отказов ноль; в spec/ остался один .md — генерённый INDEX.md; свип ссылок — единым скриптом против финального дерева (двухпроходно: базы-предки для пакетно-относительных путей), новых висячих ссылок ноль (остаток — доисторическая гниль, B-106).

08K4 — packages/. Каждый член (world, ai-native, fractality — включая specspace-документы fractality) конвертируется тем же глаголом; свип их внутренних by-name ссылок и бут-контрактов. ПОСАЖЕН 2026-08-24: 752 файла одним обходом convert-source --to xml --force packages (версионные корни + specspace-уровень fractality); вложенные vibedeps/.vibe пакетов не тронуты (законные скипы, перегенерятся своими установками); харнесс-имена скипнуты по ##FOREIGN-AND-HARNESS-SKIPS.

09K5 — рематериализация. rm -rf ~/.vibe/cache/<группы> (B-101), vibe install — слоты и ленты перерождаются из XML-исходников. Ожидаемый дифф STATIC.xml: только provenance-комменты (расширение источника .md.xml; парити-закон PROP-045 ##INHERITANCE-PARITY), содержимое вкладов byte-identical. Любое другое движение — находка. ПОСАЖЕН 2026-08-24, две установки: после конверсий (STATIC.xml байт-в-байт — кэш-стабильный префикс PROP-048 пережил весь флип нетронутым; INDEX 1512→1514 B — цели переехали на .xml) и после свипа (STATIC +1 байт — переписанная ссылка внутри вклада, честное движение содержимого). Найденный и закрытый фоллаут: (1) вендоренный specmap-движок не имел зеркала K2.6 — его td-проверка валила весь PROP-002, 122 нерезолвленных ребра; зеркальная маска посажена в authored-движок + sync-engines, 0 нерезолвленных; (2) vibe-facts sync ходил только по .md — обходчик стал формо-слепым (is_spec_source + load_spec_text), facts_sync чист; (3) 34 freshness-предупреждения — хэши пакетов после свипа — закрыты второй установкой.

10K6.5 — адресуемость ячеечных фактов (рулинг владельца 2026-08-24, дословно: «проблема не в том, что это атавизм. А в том, что у нас есть факт, который невозможно адресовать и соответственно проверить его реализацию в исходнике!»). Маркированный факт без адреса — дыра трассируемости, не стиль. Волна: (1) все 604 безымянных ячеечных факта корпуса получают id — схема <ID-ряда>-<слаг-заголовка-колонки>, именованная XML-форма уже поддержана обоими ридерами (PROP-045 ##NAMED-FACT-ELEMENTS; неэлементные id — generic <fact id=…>); (2) закон anchored-when-marked (PROP-043 §3.8) расширяется НА ЯЧЕЙКИ — маркированная ячейка без id становится громким отказом строгого фронтенда (red-first), чтобы класс не возрождался; (3) цена: ~604 новых судимых факта — судейский долг растёт, приоритет разбора — за владельцем по стоячему правилу. Исполнение — после посадки K6. ПОСАЖЕНО 2026-08-24 (82e6b335+7b9b7535+9995bb76): 2170 имён (2049 xml воркером K65-CELLS, скрипт в архиве; 121 md-хвост боссом — четыре reserved-README, открытые новым линтом), оба фронтенда отказывают безымянной маркированной ячейке (red-first), голден 66, STATIC без единой безымянной, панель all green.

11K6 — гейты и свипы. Полная панель по хвосту; specmap регенерация (пути юнитов переезжают на .xml); судейский долг остаётся «no debt» (адресация format-blind — PROP-045 ##ADDRESSING-UNCHANGED); грепом — ни одной живой ссылки на сконвертированный .md-путь; WAL-ожидания обновлены.

12K7 — финализация. Статусы PROP-051 → impl/done, этот план закрывается приёмкой, остатки — в BACKLOG.

Приёмка

13В периметре не остаётся ни одного авторского .md-спека (вне периметра — нетронуто); панель all green; vibe check 0/0/0; judging-debt «no debt»; STATIC.xml — только ожидаемый provenance-дифф; vibe refactor convert-source --dry-run по обоим деревьям отвечает «already» на 100 % файлов.

For an agent

This page has a machine mirror. The citation carries the version rather than latest, so what an agent quotes does not move under it.

spec://org.vibevm.core/vibevm@1.0.0/terraforms/CONVERT-SOURCE-APPLICATION-v0.1

.md.xmlllms.txt