RELAYOUT — переезд на корень vibevm/ (PROP-052)
01_STATUS: R0 СНЯТ, R1 готовится — 2026-08-24 · закон: vibevm/vibespecs/common/PROP-052-directory-layout.xml · предшественник: XML-флип посажен (1ab9cc75+99b349d3+ee0651b4, панель all green)
R0 — инвентарь (снят)
02Хардкоды четырёх корней в продукте (греп "spec/,
"packages, "vibedeps, "vibefacts, vibevm/vibespecs/boot по src/):
vibe-workspace 357, vibe-cli 178, vibe-check 97, progress-core 60,
vibe-spec 38, vibe-core 36, vibe-facts 18, vibe-registry 10,
vibe-specdoc 10, vibe-index 6, vibe-mcp 0; xtask+tools+.claude 46.
Итого ≈856 продуктовых + интеграционные тесты (сотни скаффолдов
tempdir — правятся через общие test-support-хелперы). Главный зверь —
vibe-workspace (bootgen, материализация, INDEX/STATIC,
CLAUDE-блок).
Нарезка R1-R7
03R1 — layout-модуль (воркер). Один модуль в vibe-core:
константы/функции четырёх корней + производные бут-пути; смена
canonical_doc_path-слоя в vibe-spec на новый префикс с
доказательством L1 (адреса не движутся — юнит: старый и новый
физический путь канонизируются в один док-путь ЗАПРЕЩЁН — только
новый существует, юнит держит сам маппинг); конформ-правило «строка
корня вне layout-модуля — находка» (red-first). Красная фаза до
переезда: модуль объявляет НОВЫЕ имена, продукт ещё на старых —
поэтому R1 и R2 садятся одним локальным актом на worktree воркеров,
панель — по завершению R4.
04R2 — миграция крейтов (веер воркеров, дизъюнктные
периметры). Пакеты: (a) vibe-workspace — bootgen/материализация/
INDEX/STATIC/CLAUDE-блок/boot_artifacts; (b) vibe-cli — init-шаблоны,
команды, refactor-глагол (L5: новые spec homes + громкий рецепт на
старом корне); (c) vibe-check + vibe-facts + progress-core (scope.rs
excludes) + vibe-spec (glob/resolver); (d) vibe-index/vibe-registry/
vibe-specdoc хвосты + xtask + tools/self-check.sh + .claude/hooks +
specmap.toml. Все через layout-модуль; свои tempdir-скаффолды тестов
переезжают в тех же пакетах. ПОСАЖЕН 2026-08-24 (011e6614): четыре среза четырьмя воркерами (R2A codex — 39 файлов workspace, два сплита; R2B/R2C/R2D claudez — cli 696 тестов, чеки 500, хвосты с полным триажем остатка); боксовый коллапс на трёх сборках пережит по протоколу выживших, украденные гейты добраны боссом; панель all green.
05R3 — тестовый свип (воркеры). Остаточные интеграционные тесты и фикстуры-скаффолды всех крейтов на новую раскладку; byte-чувствительные голдены пакетных движков НЕ трогаются руками — их фикстурные ПРОЕКТЫ переезжают структурно, голдены перегенерируются штатными регенераторами с осознанным диффом.
06R4 — физический переезд хоста (босс). git mv четырёх
корней в vibevm/; текстовый свип спек/кампаний/корневых доков/
хуков: пути spec/→vibevm/vibespecs/, packages/→
vibevm/vibepacks/, vibedeps/→vibevm/vibedeps/, vibefacts→
vibevm/vibefacts — УСЛОВНО по существованию цели (скрипт класса
K3-свипа), generic-слова в прозе не трогаются; CLAUDE/AGENTS/GEMINI
указатели; specmap.toml корни; переустановка; спецспейс fractality —
его контракт отдельной правкой.
07R5 — переезд пакетов (босс-скрипт + воркеры хвостов).
86 корней: spec/→vibevm/vibespecs/ внутри каждого (+ их
внутренние ссылки); движковые воркспейсы внутри пакетов не
переезжают (crates/ — код, не спеки); рематериализация зеркалит
новую раскладку в слоты.
08R6 — доказательство (босс). Все проверки PROP-052 ##RELAYOUT-PROOF: панель, 0/0/0, specmap-паритет рёбер, двойная установка без дрейфа, скрипт-резолюция INDEX-целей, ноль грепов старых корней вне layout-модуля, clean-room смоук init→install→check, агентская проба маршрутизации по vibevm/vibespecs/boot.
09R7 — финализация. Статусы, BACKLOG-остатки, зеркала, WAL/CONTINUE-чекпойнт.