# Что принёс эпик жизненного цикла {#root}

@status:doc/work @audience:dev

[p01] С июля по сентябрь 2026 года vibe вырос из установщика пакетов в систему сборки с машиной расширений, нативным ABI, записью каждой выкладки и экспортом терминала. Эта страница рассказывает этот маршрут как одну систему: что решили по дороге и что оставили на потом.

## Маршрут в восемь этапов {#the-route}

[p02] Работа шла восемью нумерованными этапами, каждый приземлялся атомарными коммитами с тестами и [картой прослеживаемости](../glossary/index.xml#traceability-map) и записывался в леджер, который называет каждый коммит. Читайте их как одну историю, а не как восемь функций.

[p03]
| Этап | Что принёс |
| --- | --- |
| R1, диф-материализация | строгая запись на слот зависимости, так что установка пишет только изменившееся и никогда не стирает дерево; хеш-ворота для изменяемых источников; хуки, которые выполняются только при настоящем изменении |
| R2, движок жизненного цикла | строгая грамматика `[[extension]]`, линия девяти фаз с её глаголами и цепочка очистки, упорядоченный сбор вкладов, конверт контекста, долговечная свежесть с `--force`, обработчики script и binary, пресеты данных, `vibe extensions` |
| R3, компилятор | явное промежуточное представление компилятора старта с пятью уровнями и шестью носителями, типизированный менеджер проходов, конвейер проходов от разбора до выдачи, верификатор и трассы компиляции со снимками и таймингами |
| R4, поэтапные преобразования | один чистый реестр расширений ниже жизненного цикла и рабочего пространства, четыре позиции преобразований с активацией в области владельца и отпечатками на единицу, встроенный минификатор XML и анализатор полосы, который относит байты скомпилированной полосы к их источникам |
| R5, нативный ярус | ABI из C и JSON для расширений, безопасный SDK автора и карантинный загрузчик, разрешение исходников и готовых сборок со сборкой в слоте и доказательства паритета между нативным минификатором и встроенным |
| R6, полные проходы компилятора | грамматика проходов за `compiler_internals`, проекция всего IR на провод без потерь, позиции before, after и replace, обязательный верификатор после проходов плагинов и сквозной текстовый фронтенд с JSON-бэкендом |
| R7, [провайдеры](../glossary/index.xml#provider) и агенты | шов провайдера модели с адаптером, совместимым с OpenAI, обработчик agent в CLI, размещённые исходящие с делегированным продолжением, MCP-поверхности жизненного цикла и подложка для внешней оркестрации |
| R8, упаковка, сборка и выкладка | привязка навыка проекта, грамматика механизмов и артефактов, записи артефактов и граф целей, провайдер сборки Cargo, навыки из одного файла, каталог Agent Plugins, проекции клиентов, профили выкладки с намерениями, квитанциями и восстановлением, детерминированный zip, применимость к платформам и нативные провайдеры из пакетов |

[p04] Рядом с маршрутом отдельным контрактом приземлилась операция [зачистки](../glossary/index.xml#scrape): детерминированное удаление слоя vibe из законченного проекта, с планом, доказательством здоровья и восстановимой транзакцией на месте.

> [p05] 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.
>
> <spec://org.vibevm.core/vibevm/common/PROP-056#SCRAPED-TREE>

## Решения, которые держатся {#decisions}

[p06] Одна линия из девяти [фаз](../glossary/index.xml#phase): материализация зависимостей — это `install`, размещение вне проекта — `deploy`, а `package` не меняет ни одного места назначения. Одна плоскость расширений: запланированные [вклады](../glossary/index.xml#contribution) отвечают «когда», соседние [провайдеры](../glossary/index.xml#provider) механизмов отвечают «как», а встроенные — обычные провайдеры, которых хозяин может заменить точным пином. Нативный провод — C плюс JSON, схема первична; SDK автора — безопасный Rust, а загрузчик в карантине. У каждой внешней мутации есть план, намерение, независимая проверка и [квитанция](../glossary/index.xml#receipt), а третий наблюдённый дайджест — отказ. Автоматическая привязка [навыка](../glossary/index.xml#skill) — только для проекта; установка для пользователя и клиента — явная выкладка. Каждая подсистема сохраняет полный алгоритмический режим; модель улучшает и никогда не запирает.

> [p07] **Decision.** The lifecycle hooks and the compiler plugins are ONE machine with two families of extension points, not two machines. One declaration grammar, one context-envelope shape, one handler taxonomy, one trust gate, one ordering rule. A user who has written a lifecycle contribution knows how to write a compiler transform, and vice versa — this is the mandate's «похоже и синергично» made structural.
>
> <spec://org.vibevm.core/vibevm/common/PROP-054#ONE-MACHINE>

> [p08] 8.1 The ABI is C + JSON, never the Rust ABI
>
> <spec://org.vibevm.core/vibevm/common/PROP-054#why-c-abi>

> [p09] Every core VibeVM subsystem retains a complete algorithmic mode. An LLM may improve quality when the operator explicitly enables that feature; credentials, endpoint presence, provider configuration or construction never activate a feature. VibeVM remains useful with no provider, no API access and no agent host.
>
> <spec://org.vibevm.core/vibevm/common/PROP-054#LLM-IS-AN-ENHANCEMENT>

## Границы совместимости и миграции {#boundaries}

[p10] Запись слота зависимости и состояние [жизненного цикла](../glossary/index.xml#lifecycle) — строгие версионированные машинные форматы; старые деревья мигрируют один раз при следующей установке и никогда не читаются на месте. Проекция IR компилятора на провод версионируется по носителю. Квитанции выкладки и [отпечатки свежести](../glossary/index.xml#freshness-fingerprint) живут под `.vibe/`, это машинное состояние, которое не коммитят; их потеря стоит одного полного прогона, а не корректности. Рукописные проводные типы считаются храповиком против замороженной базы, так что новый машинный формат не может появиться без схемы.

> [p11] Fingerprints and last-run records live in `.vibe/lifecycle.toml` at the workspace root — machine state beside the project settings that already live in `.vibe/`, inside the shippable-tree denylist (PROP-024 §2.2), never committed, never hashed. `vibe clean` does NOT remove it (it describes work, it is not derived prompt state); a `--force` flag on any phase ignores it for one run.
>
> <spec://org.vibevm.core/vibevm/common/PROP-054#PHASE-STATE-HOME>

## Намеренно оставлено на потом {#deferred}

[p12] Цели выкладки за пределами первых жанров, ярус расширений на WebAssembly, переопределения предпочтений по языку и по ресурсу, облачная синхронизация пользовательских предпочтений, встроенный бэкенд инференса и общая грамматика фаз за пределами `clean install` для цикла очистки. Каждое названо в своей [спецификации](../glossary/index.xml#specification) с законом совместимости, так что дверь остаётся открытой, а за ней не стоит полусобранная функция.

> [p13] **Deploy first targets — CLOSED (owner, 2026-08-26; extended 2026-09-04):** selected genres are project/user agent projections for Claude Code, Codex and OpenCode; VibeVM-owned local tools under `~/.vibe/bin`; receipt-owned operator launchers under the VibeVM-controlled `~/.vibe/opt/bin`; an explicit custom installer for ordinary applications; registry/marketplace/server/remote providers; and future system-scope package/config/service providers. The first commissioning cut is isolated local projection/`vibe-bin`/`vibe-opt-launcher`, never a live publish/server mutation. The commissioned local and native provider statuses are closed at the R8 successor anchors; live remote/system mutation remains future work under ordinary authority boundaries.
>
> <spec://org.vibevm.core/vibevm/common/PROP-054#OPEN-DEPLOY-TARGETS>

> [p14] **WASM handlers — deferred, not rejected:** a wasm component would buy sandboxing (the PROP-020 §4 accepted-risk posture could tighten) and cross-platform artifacts, at the cost of a runtime dependency and awkward filesystem/process access — exactly the operations phase handlers exist to do. When the sandboxing need fires (third-party plugin ecosystems beyond the allow-list), this anchor is where the design resumes. Until then the trust gate is the boundary, exactly as PROP-020 records it.
>
> <spec://org.vibevm.core/vibevm/common/PROP-054#WASM-DEFERRED>

## Отставленные дорожки, сохранённые как история {#retired}

[p15] Кампания также использовала дорожки выполнения, которые больше не актуальны: внешнюю дорожку воркеров на подписке владелец отставил в сентябре 2026 года, и её источник пакета остаётся в дереве как история, а зависимость хоста и стартовый вклад удалены. Читатель, который встретит её имя в старых леджерах, должен считать её свидетельством того, как делалась работа, а не поддерживаемым способом пользоваться продуктом.

## Где живут улики {#edge-cases}

[p16] Поэтапный леджер с хешами коммитов — `campaigns/packages-2026-09/LIFECYCLE-EXTENSIONS-IMPLEMENTATION-LEDGER.md` в репозитории; контракт — `PROP-054`, контракт зачистки — `PROP-056`, документы о нативном ABI и архитектуре компилятора лежат рядом с леджером. Леджер — запись, а не план: он называет, что приземлилось и что измерили, и ничто в этом руководстве не пересказывает из него ни одного числа.

> [p17] **R8 — package/build/deploy substance accepted in implementation.** Artifact DAG/records, Cargo, static skill, Agent Plugin, three client adapters, `vibe-bin`, profiles/intent/receipt/recovery, platform applicability and package-supplied native deploy/build/package providers are implemented. Deploy restart rehydration remains read-only; Build/Package replacement executes through exact prepared carriage and a real installed two-cdylib build→A2→package E2E with no builtin fallback. Evidence through deploy `d475963c`, then M-007 `00cabac8`, `93df9d28`, `e9388559`, `2193e6e7`, `fe0eb9df`, `0ca2b781`, `123ac504`, `68ce9078`, `55cfbf94`. This node is done. All technical/full/conform/generated/specmap/no-transform and mirror work is complete at `39fa498a34d30c7744c8598c9f1a0673a6aeee62`; the PROP root remains `impl/work` solely because owner final inspection in the current chat is pending.
>
> <spec://org.vibevm.core/vibevm/common/PROP-054#R8-PACKAGE-DEPLOY>

