<?xml version="1.0" encoding="UTF-8"?>
<spec xmlns="https://vibevm.org/spec/1">
  <title id="root">Что принёс эпик жизненного цикла</title>
  <status stage="doc" state="work" audience="dev"/>
  <p p="1">С июля по сентябрь 2026 года vibe вырос из установщика пакетов в систему сборки с машиной расширений, нативным ABI, записью каждой выкладки и экспортом терминала. Эта страница рассказывает этот маршрут как одну систему: что решили по дороге и что оставили на потом.</p>
  <section id="the-route" title="Маршрут в восемь этапов">
    <p p="2">Работа шла восемью нумерованными этапами, каждый приземлялся атомарными коммитами с тестами и [картой прослеживаемости](../glossary/index.xml#traceability-map) и записывался в леджер, который называет каждый коммит. Читайте их как одну историю, а не как восемь функций.</p>
    <table p="3">
      <tr>
        <td>Этап</td>
        <td>Что принёс</td>
      </tr>
      <tr>
        <td>R1, диф-материализация</td>
        <td>строгая запись на слот зависимости, так что установка пишет только изменившееся и никогда не стирает дерево; хеш-ворота для изменяемых источников; хуки, которые выполняются только при настоящем изменении</td>
      </tr>
      <tr>
        <td>R2, движок жизненного цикла</td>
        <td>строгая грамматика `[[extension]]`, линия девяти фаз с её глаголами и цепочка очистки, упорядоченный сбор вкладов, конверт контекста, долговечная свежесть с `--force`, обработчики script и binary, пресеты данных, `vibe extensions`</td>
      </tr>
      <tr>
        <td>R3, компилятор</td>
        <td>явное промежуточное представление компилятора старта с пятью уровнями и шестью носителями, типизированный менеджер проходов, конвейер проходов от разбора до выдачи, верификатор и трассы компиляции со снимками и таймингами</td>
      </tr>
      <tr>
        <td>R4, поэтапные преобразования</td>
        <td>один чистый реестр расширений ниже жизненного цикла и рабочего пространства, четыре позиции преобразований с активацией в области владельца и отпечатками на единицу, встроенный минификатор XML и анализатор полосы, который относит байты скомпилированной полосы к их источникам</td>
      </tr>
      <tr>
        <td>R5, нативный ярус</td>
        <td>ABI из C и JSON для расширений, безопасный SDK автора и карантинный загрузчик, разрешение исходников и готовых сборок со сборкой в слоте и доказательства паритета между нативным минификатором и встроенным</td>
      </tr>
      <tr>
        <td>R6, полные проходы компилятора</td>
        <td>грамматика проходов за `compiler_internals`, проекция всего IR на провод без потерь, позиции before, after и replace, обязательный верификатор после проходов плагинов и сквозной текстовый фронтенд с JSON-бэкендом</td>
      </tr>
      <tr>
        <td>R7, [провайдеры](../glossary/index.xml#provider) и агенты</td>
        <td>шов провайдера модели с адаптером, совместимым с OpenAI, обработчик agent в CLI, размещённые исходящие с делегированным продолжением, MCP-поверхности жизненного цикла и подложка для внешней оркестрации</td>
      </tr>
      <tr>
        <td>R8, упаковка, сборка и выкладка</td>
        <td>привязка навыка проекта, грамматика механизмов и артефактов, записи артефактов и граф целей, провайдер сборки Cargo, навыки из одного файла, каталог Agent Plugins, проекции клиентов, профили выкладки с намерениями, квитанциями и восстановлением, детерминированный zip, применимость к платформам и нативные провайдеры из пакетов</td>
      </tr>
    </table>
    <p p="4">Рядом с маршрутом отдельным контрактом приземлилась операция [зачистки](../glossary/index.xml#scrape): детерминированное удаление слоя vibe из законченного проекта, с планом, доказательством здоровья и восстановимой транзакцией на месте.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-056#SCRAPED-TREE" p="5"/>
  </section>
  <section id="decisions" title="Решения, которые держатся">
    <p p="6">Одна линия из девяти [фаз](../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) — только для проекта; установка для пользователя и клиента — явная выкладка. Каждая подсистема сохраняет полный алгоритмический режим; модель улучшает и никогда не запирает.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-054#ONE-MACHINE" p="7"/>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-054#why-c-abi" p="8"/>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-054#LLM-IS-AN-ENHANCEMENT" p="9"/>
  </section>
  <section id="boundaries" title="Границы совместимости и миграции">
    <p p="10">Запись слота зависимости и состояние [жизненного цикла](../glossary/index.xml#lifecycle) — строгие версионированные машинные форматы; старые деревья мигрируют один раз при следующей установке и никогда не читаются на месте. Проекция IR компилятора на провод версионируется по носителю. Квитанции выкладки и [отпечатки свежести](../glossary/index.xml#freshness-fingerprint) живут под `.vibe/`, это машинное состояние, которое не коммитят; их потеря стоит одного полного прогона, а не корректности. Рукописные проводные типы считаются храповиком против замороженной базы, так что новый машинный формат не может появиться без схемы.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-054#PHASE-STATE-HOME" p="11"/>
  </section>
  <section id="deferred" title="Намеренно оставлено на потом">
    <p p="12">Цели выкладки за пределами первых жанров, ярус расширений на WebAssembly, переопределения предпочтений по языку и по ресурсу, облачная синхронизация пользовательских предпочтений, встроенный бэкенд инференса и общая грамматика фаз за пределами `clean install` для цикла очистки. Каждое названо в своей [спецификации](../glossary/index.xml#specification) с законом совместимости, так что дверь остаётся открытой, а за ней не стоит полусобранная функция.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-054#OPEN-DEPLOY-TARGETS" p="13"/>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-054#WASM-DEFERRED" p="14"/>
  </section>
  <section id="retired" title="Отставленные дорожки, сохранённые как история">
    <p p="15">Кампания также использовала дорожки выполнения, которые больше не актуальны: внешнюю дорожку воркеров на подписке владелец отставил в сентябре 2026 года, и её источник пакета остаётся в дереве как история, а зависимость хоста и стартовый вклад удалены. Читатель, который встретит её имя в старых леджерах, должен считать её свидетельством того, как делалась работа, а не поддерживаемым способом пользоваться продуктом.</p>
  </section>
  <section id="edge-cases" title="Где живут улики">
    <p p="16">Поэтапный леджер с хешами коммитов — `campaigns/packages-2026-09/LIFECYCLE-EXTENSIONS-IMPLEMENTATION-LEDGER.md` в репозитории; контракт — `PROP-054`, контракт зачистки — `PROP-056`, документы о нативном ABI и архитектуре компилятора лежат рядом с леджером. Леджер — запись, а не план: он называет, что приземлилось и что измерили, и ничто в этом руководстве не пересказывает из него ни одного числа.</p>
    <rule ref="spec://org.vibevm.core/vibevm/common/PROP-054#R8-PACKAGE-DEPLOY" p="17"/>
  </section>
</spec>
