VibeVM
Contents
On this page
ru
Publisher
org.vibevm.core
Version
1.0.0latest
Adapts
org.vibevm.core/vibevm-docs
Audiences
user
Reading time
4 min
Rendered
Read aloud
never

Убрать VibeVM из проекта

01Когда проект закончен и должен уйти без следа инструмента, который помогал его строить, одна операция удаляет каждый файл и каждое упоминание vibe, сохраняя продукт и его сборку нетронутыми.

02
Покажи мне план зачистки для проекта VibeVM в текущей папке, затем экспортируй зачищенную копию в новую папку product-clean рядом с проектом и докажи, что копия собирается без vibe.

навык vibevm, установленный у вашего агента; проект с vibe.toml и контрактом зачистки, подогнанным под него: vibe scrape contract init пишет консервативный вариант по умолчанию, который отказывается удалять файлы, чью неизменность не может доказать, и проверяет здоровье через cargo; родной инструмент сборки проекта в PATH

../product-clean существует, не содержит ни папки vibevm/, ни vibe.toml, ни vibe.lock, ни управляемого блока в файлах инструкций для агентов, а её родная сборка и тесты проходят

  • test ! -e ../product-clean/vibe.toml
  • test ! -e ../product-clean/vibevm

Что происходит

03Агент создаёт контракт командой vibe scrape contract init, если у проекта его нет, и подгоняет: для собственных деревьев vibe, которые вы никогда не правили, он ставит modified = "delete" и оставляет проверку здоровья, подходящую проекту. Он выполняет vibe scrape --plan: команда читает контракт, классифицирует каждый файл, который инструмент когда-либо писал или помечал, и печатает полный план, ничего не записывая: что удаляется, что переписывается, что остаётся под нейтральным именем. Затем он выполняет vibe scrape --output с абсолютным путём новой папки: команда создаёт зачищенную копию и прогоняет на ней проверки здоровья проекта; оригинал не тронут. Копия — обычный проект своего языка: без манифеста, без лок-файла, без дерева зависимостей, без стартовых файлов, без управляемого блока, без аннотаций в исходниках, которые указывали на спецификации.

04 A scraped tree is a project tree for which every contract-selected Vibe path, dependency, managed marker, source annotation, tool script and environment reference is absent or explicitly retained under a neutral identity, and whose required native health panel is accepted after scraping under the declared strict or no-regression baseline policy. A retained non-pass verdict is never described as an unconditional pass.

Руками

051. Создайте контракт. Вариант по умолчанию консервативен: он называет деревья vibe, отказывается от всего, чью неизменность не может доказать, и проверяет здоровье через cargo:

06

072. Подгоните его. У свежего проекта нет базовой отметки изменений для файлов vibe, поэтому два правила [[classify]] отвергают их как неизвестные. Если вы никогда не правили эти деревья, поставьте modified = "delete" в обоих. Замените [[healthcheck]], если проект не рабочее пространство Rust. Затем проверьте: vibe scrape contract check --path hello-vibe.

083. Посмотрите план:

09

104. Экспортируйте в новую папку, которой ещё не должно существовать и в имени которой нет ..:

11

125. Или зачистите на месте: это восстановимая транзакция, и ей нужно явное разрешение: vibe scrape --in-place --assume-yes. Если её прервали, vibe scrape --recover --path <root> доводит незавершённую транзакцию до конца.

13 vibe scrape --recover --path <project> settles the one pending user-local transaction. Recovery reads the journaled contract and plan, never the possibly removed project contract. A new scrape refuses while recovery is pending.

14Команды в одном месте. vibe scrape contract init пишет консервативный вариант по умолчанию, только когда контракта ещё нет, а contract check разбирает его и планирует, ничего не записывая. vibe scrape --plan только читает и без указания режима планирует форму «на месте», больший риск. --output создаёт экспорт в папке, которой не должно существовать, и никогда не меняет исходное дерево. --in-place выполняет журналируемую транзакцию, в интерактивном режиме показывает перепись изменённых и удаляемых файлов, а без присмотра требует --assume-yes после зелёного плана. Планирование и проверка работают везде; в эту первую эпоху изменяющие режимы работают только на Windows, где механика безопасности доказана.

15 vibe scrape contract init writes a conservative default contract only when absent; vibe scrape contract check parses and plans it read-only. Existing contracts are never silently refreshed by install or a language discipline.
16 vibe scrape --plan [--contract <path>] [--output <dir> | --in-place] is read-only. With neither execution mode, it plans the in-place form because that is the larger risk surface; it writes no project, journal, quarantine or report file.
17 vibe scrape --output <absent-dir> [--contract <path>] creates a scraped export and never changes the source tree. The destination must be absent; adoption of an existing directory is forbidden.
18 vibe scrape --in-place [--contract <path>] executes the journaled in-place transaction. Interactive use shows the exact modified-file and deletion census; unattended use requires --assume-yes after a green plan.
19 Epoch-1 contract parsing, planning and contract checking are portable. Mutating --output, --in-place and --recover execution is enabled only on Windows, where the implementation proves handle-relative exclusive directory creation, no-replace publication, write/delete-denying namespace seals and restartable cleanup. Linux, macOS and other hosts return the typed blocker scrape-platform-unsupported before journal creation or project mutation. Their wire/state-machine shape remains portable, but the product does not claim a weaker check-then-rename implementation as support.

Контракт

20Что считается принадлежащим vibe, а что вашим, не угадывается по именам файлов; это говорит контракт. Контракт живёт в проекте по пути vibevm/scrape/contract.toml: vibe scrape contract init пишет консервативный вариант по умолчанию, vibe scrape contract check проверяет существующий, а --contract <file> читает другой. Контракт внутри дерева удаляется последним, так что план можно перечитывать до самого конца.

21 The default is the project-root literal vibevm/scrape/contract.toml. Every operand inside it is project-root-relative regardless of where an alternate contract lives. Contract location never changes mutation authority.

22Зачистка никогда не удаляет путь вслепую: скрипт сборки, который вызывает инструмент vibe, сгенерированные исходники продукта, лежащие рядом с одноразовым сгенерированным состоянием, написанная автором спецификация, делящая дерево со сгенерированным выводом стартовой полосы, — всё это получает решение по контракту, а нетронутые файлы остаются побайтно теми же.

23 Product preservation means: all untouched files are byte-identical; every authored source rewrite is metadata erasure-equivalent; every declared relocation preserves exact bytes and mode; native manifests and lockfiles describe the scraped dependency graph; the health oracle accepts the result.

24Контракт строг: неизвестные таблицы и значения отвергаются, schema равна 1, каждый идентификатор уникален. Файлы, которые вы написали под vibevm/vibespecs, никогда не считаются сгенерированными из-за папки; контракт, который хочет нулевого остатка, сам называет их для удаления или переноса. Сгенерированный код, тесты и модели, которые проект принял, — продукт, и они остаются, пока строка не назовёт их. Глобы только выбирают; байты меняются только через типизированные адаптеры, никогда через регулярное выражение или переписывание в оболочке. Нулевой остаток означает ноль зарегистрированных идентичностей, путей и маркеров, а не слово «vibe» в вашей прозе.

25 The TOML schema rejects unknown tables, fields, tagged kinds and enum values. schema must equal 1; every id is a unique portable token across classification, rewrite, relocation, assertion and health rows.
26 Authored files under vibevm/vibespecs are not generated merely because of their directory. A full zero-residue contract must explicitly delete them or relocate them to a neutral home. No built-in policy silently decides their value.
27 Generated cells, seams, tests, models and other useful application source are authored product once accepted into the project. They remain unless an exact contract relocation or deletion row names them. Origin in a discipline is not deletion authority.
28 Globs select candidates; they never rewrite bytes. Authored source and structural manifests are changed only by a closed typed adapter. Generic regex replacement, shell rewrite hooks, implicit format conversion and whole-document reserialization are forbidden.
29 Zero residue means zero registered Vibe identities, paths and markers selected by this contract. It does not mean deleting an ordinary word such as “vibe” from prose, nor undoing architectural choices learned while using a discipline.

30Вы задаёте политику, движок даёт механику и вердикты. Всё, что запечатанный контракт и наблюдаемое дерево не могут решить, — блокер, а не догадка. Инструмент не переписывает историю git, не публикует и не удаляет то, что выложено на вашу машину; это остаётся отдельными явными операциями.

31 The owner supplies policy: delete, keep, relocate, strip, retain, required checks and acceptable baseline mode. The engine supplies all mechanics and verdicts. Any state not decidable from the sealed contract and observed tree is a blocker, never a guess or best-effort success.
32 Schema 1 does not reverse the historical influence of VibeVM on product architecture, infer replacements for arbitrary runtime libraries, mutate Git history, publish artifacts, or silently remove user-global deployments. Schema 1 does not discover, report or remove receipt-owned user-global deployments; the operator runs the existing explicit undeploy operation separately when external removal is desired.

Особые случаи и правила

33Зачистка — не очистка. vibe clean удаляет то, что vibe может сгенерировать заново, и сохраняет связь; зачистка удаляет саму связь, и потому ей нужны контракт, доказательство здоровья и восстановимая фиксация.

34 PROP-053 vibe clean removes regenerable dependency and boot products while retaining authored project state and vibe.lock. Scrape is not clean: it removes the Vibe relationship itself and therefore requires a contract, native health proof and recoverable commit.

35--output и --in-place взаимно исключают друг друга; план доступен всегда, до любого из них.

36 --output and --in-place are mutually exclusive. --recover accepts neither mode nor contract because the durable journal already fixes both.

37Слова «attach» и «detach» зарезервированы для будущей связи с живым инструментом, например подключения отладчика; зачистка никогда не синоним для них.

38 Scrape is the terminal cleaning operation defined here: it removes the selected VibeVM repository layer while preserving the native product. The command vocabulary deliberately reserves attach and detach for a future live-tool relationship such as connecting and disconnecting a debugger. Scrape is never an alias for that future runtime operation, and no detach spelling is accepted by this command.

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-docs@1.0.0/lifecycle/scrape

.md.xmlllms.txt