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

PROP-052: the vibevm/ root — the directory layout law

1. Mandate

01The owner's mandate, verbatim (2026-08-24): «Я обнаружил проблему: массовые клеши с реально существующими проектами, имеющими директорию spec или packages в корне. Кроме того, динамическим лоадерам сложно искать по таким директориям. В качестве решения, я хочу сделать глобальное переименование корневых директорий в проектах/пакетах. В корне создается директория vibevm. Внутрь неё переезжают директории: Директория spec переезжает с именем vibespecs. Директория packages переезжает с именем vibepacks. Директория vibedeps переезжает c исходным именем. Директория vibefacts переезжает с исходным именем. В мире не существует никаких легаси проектов с директорией vibevm в корне, а по именам типа "vibespecs" агентам проще делать grep и find, чем по spec (который приносит много мусора). Совершенно все спецификации, которые содержат эти имена (spec, packages, vibedeps, vibefacts) - должны быть проверены и переписаны соответствующе (spec -> vibevm/vibespecs). Конечно же, совершенно весь код. Сам проект vibevm и все его пакеты в packages должны быть переделаны под новую раскладку директорий. Результаты проверены/протестированы и измерены на предмет того, что ничего не сломалось.»

02The layout: every project and every package carries ONE distinctive root directory vibevm/, holding vibevm/vibespecs (was spec/), vibevm/vibepacks (was packages/), vibevm/vibedeps (was root vibedeps/) and vibevm/vibefacts (was root vibefacts/). Nothing else moves; vibe.toml stays at the project root.

2. Laws

03L1 — physics moves, addresses do not. spec:// addresses, anchors, fact ids, specmap edges, scope! citations and recorded verdicts are LOGICAL and do not change: only the physical prefix maps differently (vibevm/vibespecs/common/PROP-000.xml still canonicalises to the same common/PROP-000 document path). Any relayout step that would rename an address is a defect of the step.

04L2 — one layout module. The four roots are named in exactly ONE place in the product — a layout module in the core (vibespecs_root() / vibepacks_root() / vibedeps_root() / vibefacts_root() and the derived boot paths); every crate routes through it, and a string literal of the old or new root outside that module (tests' own scaffolds excepted) is a conform-guarded defect.

05L3 — no legacy reading. The old layout is not read and not migrated silently: a project carrying root spec/ beside vibe.toml (or root vibedeps//vibefacts/) fails loudly with the migration recipe. The owner's ground: no project in the world carries a root vibevm/ today, so the new root is unambiguous and the old one is retired whole.

06L4 — packages too. Every package root mirrors the same layout (vibevm/vibespecs inside the package instead of spec/); materialisation mirrors package layout into the slots, boot-snippet paths and INDEX targets follow.

07L5 — the refactor family follows. convert-package-src and convert-spec-src resolve spec homes by the NEW names (vibevm/vibespecs, vibevm/vibepacks); an old-layout root gets the loud migration recipe, never a silent walk.

08L6 — removal is explicit and terminal. The only supported transition from this layout to a project with no vibevm/ root is the contract-driven, health-gated, recoverable scrape operation at @spec://org.vibevm.core/vibevm/common/PROP-056#root. Blind deletion does not become a legacy layout and receives no compatibility reader.

3. Verification

09«Ничего не сломалось» is proven, not assumed: the full panel green over the moved world; vibe check 0/0/0; specmap resolve 0 unresolved with the SAME edge count as before the move; judging debt unchanged; a double reinstall with zero lock drift (idempotence); INDEX targets resolving to on-disk files by script; zero grep hits of the old roots in product code outside the layout module; a clean-room smoke (vibe initinstallcheck in a tempdir) on the new layout; and a cold-agent routing probe finding the lanes under vibevm/vibespecs/boot.

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/common/PROP-052-directory-layout

.md.xmlllms.txt