# RELAYOUT — переезд на корень vibevm/ (PROP-052) {#root}

@status:impl/done

[p01] _STATUS: R0 СНЯТ, R1 готовится — 2026-08-24 · закон: `vibevm/vibespecs/common/PROP-052-directory-layout.xml` · предшественник: XML-флип посажен (`1ab9cc75`+`99b349d3`+`ee0651b4`, панель all green)

## R0 — инвентарь (снят) {#inventory}

[p02] @fact:R0-INVENTORY Хардкоды четырёх корней в продукте (греп `"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-блок). @status:impl/done

## Нарезка R1-R7 {#slices}

[p03] @fact:R1-LAYOUT-MODULE **R1 — layout-модуль (воркер).** Один модуль в vibe-core:
константы/функции четырёх корней + производные бут-пути; смена
`canonical_doc_path`-слоя в vibe-spec на новый префикс с
доказательством L1 (адреса не движутся — юнит: старый и новый
физический путь канонизируются в один док-путь ЗАПРЕЩЁН — только
новый существует, юнит держит сам маппинг); конформ-правило «строка
корня вне layout-модуля — находка» (red-first). Красная фаза до
переезда: модуль объявляет НОВЫЕ имена, продукт ещё на старых —
поэтому R1 и R2 садятся одним локальным актом на worktree воркеров,
панель — по завершению R4. @status:impl/done

[p04] @fact:R2-CRATE-MIGRATIONS **R2 — миграция крейтов (веер воркеров, дизъюнктные
периметры).** Пакеты: (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. @status:impl/done

[p05] @fact:R3-TEST-SWEEP **R3 — тестовый свип (воркеры).** Остаточные интеграционные
тесты и фикстуры-скаффолды всех крейтов на новую раскладку;
byte-чувствительные голдены пакетных движков НЕ трогаются руками —
их фикстурные ПРОЕКТЫ переезжают структурно, голдены
перегенерируются штатными регенераторами с осознанным диффом. @status:impl/done

[p06] @fact:R4-HOST-MOVE **R4 — физический переезд хоста (босс).** `git mv` четырёх
корней в `vibevm/`; текстовый свип спек/кампаний/корневых доков/
хуков: пути `spec/`→`vibevm/vibespecs/`, `packages/`→
`vibevm/vibepacks/`, `vibedeps/`→`vibevm/vibedeps/`, `vibefacts`→
`vibevm/vibefacts` — УСЛОВНО по существованию цели (скрипт класса
K3-свипа), generic-слова в прозе не трогаются; CLAUDE/AGENTS/GEMINI
указатели; specmap.toml корни; переустановка; спецспейс fractality —
его контракт отдельной правкой. @status:impl/done

[p07] @fact:R5-PACKAGES-MOVE **R5 — переезд пакетов (босс-скрипт + воркеры хвостов).**
86 корней: `spec/`→`vibevm/vibespecs/` внутри каждого (+ их
внутренние ссылки); движковые воркспейсы внутри пакетов не
переезжают (crates/ — код, не спеки); рематериализация зеркалит
новую раскладку в слоты. @status:impl/done

[p08] @fact:R6-GATES **R6 — доказательство (босс).** Все проверки PROP-052
##RELAYOUT-PROOF: панель, 0/0/0, specmap-паритет рёбер, двойная
установка без дрейфа, скрипт-резолюция INDEX-целей, ноль грепов
старых корней вне layout-модуля, clean-room смоук init→install→check,
агентская проба маршрутизации по vibevm/vibespecs/boot. @status:impl/done

[p09] @fact:R7-WINDDOWN **R7 — финализация.** Статусы, BACKLOG-остатки, зеркала,
WAL/CONTINUE-чекпойнт. @status:impl/done

