# Удалить пакет {#root}

@status:doc/work @audience:user

[p01] Удаление пакета убирает его текст из проекта и из списка чтения агента, а всё написанное вами оставляет нетронутым.

[p02]
```prompt
Удали пакет org.vibevm.world/wal из проекта VibeVM в текущей папке и подтверди, что в списке чтения от него ничего не осталось.
```

- needs: навык vibevm, установленный у вашего агента; проект, в котором пакет установлен

outcome: требование исчезло из `vibe.toml`, запись — из `vibe.lock`, папка пакета — из `vibevm/vibedeps/`, а `vibe tree` больше не перечисляет его фрагмент; `vibe check` не находит ошибок

- assert: `test ! -e vibevm/vibedeps/org.vibevm.world.wal`
- assert: `vibe check --quiet`

## Что происходит {#what-happens}

[p03] Агент выполняет `vibe uninstall org.vibevm.world/wal`. vibe показывает, что уйдёт: строка требования в [манифесте](../glossary/index.xml#manifest), запись в локе, папка пакета в дереве зависимостей и любая зависимость, которая была нужна только этому пакету. После подтверждения он удаляет их и пересобирает стартовые файлы, так что следующая [сессия агента](../glossary/index.xml#agent-session) больше не читает фрагмент пакета. Ваши файлы, включая два ваших стартовых файла и всё в `vibevm/vibespecs/`, не трогаются никогда.

> [p04] Authored `spec/` — written only by the node's author. Unchanged definition.
>
> <spec://org.vibevm.core/vibevm/modules/vibe-workspace/PROP-009#TREE-AUTHORED>

## Руками {#by-hand}

[p05] 1. Удалите по [координате](../glossary/index.xml#coordinate); версия не нужна:

[p06] Example `uninstall` is copied from the source page at projection time.

[p07] 2. Проверьте список чтения:

[p08] Example `tree` is copied from the source page at projection time.

## Как убрать выведенное состояние, не удаляя пакеты {#derived-state}

[p09] Иногда нужен чистый лист, а не граф поменьше: перед сборкой, после обновления инструмента или чтобы доказать, что дерево можно собрать заново. `vibe clean` удаляет дерево зависимостей и сгенерированные стартовые файлы, а манифест, [лок-файл](../glossary/index.xml#lock-file), всё написанное вами и машинное [хранилище](../glossary/index.xml#store) оставляет. `vibe clean install` соединяет два шага в один.

> [p10] **`vibe clean` removes exactly the derived prompt state** of the workspace it runs in: (a) the dependency world — the whole `vibevm/vibedeps/` root of the workspace; (b) the generated boot artifacts — `vibevm/vibespecs/boot/STATIC.*`, `INDEX.md` and `INLINE.*`, each carrying the generated-by-vibe marker. That is the mvn-clean analogue: what an install writes, clean deletes.
>
> <spec://org.vibevm.core/vibevm/modules/vibe-workspace/PROP-053#CLEAN-REMOVES-DERIVED>

[p11] Команда отказывается работать вне проекта, чтобы по ошибке не вымести постороннюю папку.

> [p12] Clean refuses to run outside a vibe project (no `vibe.toml` at or above the cwd) — a guard against sweeping an unrelated directory.
>
> <spec://org.vibevm.core/vibevm/modules/vibe-workspace/PROP-053#CLEAN-NEEDS-A-PROJECT>

## Особые случаи и правила {#edge-cases}

[p13] Удаление пакета, который нужен другому установленному пакету, оставляет общую зависимость на месте; удаляются только пакеты, которые больше никому не нужны.

[p14] Машинное хранилище сохраняет байты пакета после удаления. Поставить его снова позже — бесплатно по сети; `vibe cache clean --package` освобождает место, если вы хотите убрать его с машины совсем.

> [p15] The cache is **accretive**: a package version, once cached, is never evicted automatically.
>
> <spec://org.vibevm.core/vibevm/modules/vibe-registry/PROP-010#CACHE-ACCRETIVE>

[p16] Удаление пакета не отменяет того, что сделал его установочный скрипт, если он был: последствия [хука](../glossary/index.xml#hook) не отслеживаются, и это намеренно.

> [p17] Only a hook's edits
>   to materialiser-owned recorded payload are ephemeral: reinstall, update or
>   integrity repair restores those bytes per
>   [PROP-022](PROP-022-materialization-modes.xml), then reruns hooks exactly
>   when that payload diff is nonempty. Hook-created unrecorded state is outside
>   `.vibe-slot.toml` ownership and survives by design; a rerun may compound it,
>   so hooks must be idempotent until a separate hook-output ownership contract
>   exists.
>
> <spec://org.vibevm.core/vibevm/modules/vibe-workspace/PROP-020#EFFECTS-EPHEMERAL>

