<?xml version="1.0" encoding="UTF-8"?>
<spec xmlns="https://vibevm.org/spec/1">
  <title id="root">Опубликовать пакет в центральном реестре</title>
  <status stage="doc" state="work" audience="user,author"/>
  <p p="1">Любой проект VibeVM может ставить пакеты из двух открытых мест: из организации `vibespecs` на GitHub и из одноимённой организации на GitVerse. Добавить туда пакет могут только их администраторы, поэтому, чтобы опубликовать свой, попросите их. Эта страница показывает, как попросить и что может помешать.</p>
  <prompt id="publish-to-the-central-registry" p="2">
    Проверь, что пакет org.acme/review-notes из дерева этого проекта, слот vibevm/vibepacks/org.acme/review-notes/v0.1.0, готов к центральному реестру, затем напиши сообщение с просьбой добавить его для темы Add package в чате VibeVM. Площадка — GitHub, мой логин там — octocat. Ничего не отправляй.
    <needs>навык vibevm, установленный у вашего агента; сеть не нужна</needs>
    <outcome>агент называет, чего пакету ещё не хватает, например пустого описания, и показывает короткое сообщение с группой и именем пакета, площадкой и вашим логином — его остаётся вставить в Telegram</outcome>
    <assert>vibe validate</assert>
  </prompt>
  <section id="what-happens" title="Что происходит">
    <p p="3">Агент читает [манифест](../glossary/index.xml#manifest) пакета и проверяет то, что увидит незнакомец, который будет его ставить: группу и имя, версию, лицензию и описание в одну строку. Он запускает `vibe validate`, чтобы убедиться, что проект вокруг пакета исправен. Затем пишет сообщение из трёх строк: группа и имя пакета, площадка и ваш логин на ней. Агент ничего не отправляет. Сообщение вставляете вы сами, потому что просьба ваша, как и аккаунт.</p>
  </section>
  <section id="by-hand" title="Руками">
    <p p="4">1. Откройте тему Add package в чате VibeVM в Telegram: [t.me/vibevm_chat/9](https://t.me/vibevm_chat/9).</p>
    <p p="5">2. Назовите пакет: его группу и имя, например `org.acme/review-notes`.</p>
    <p p="6">3. Назовите площадку, где пакет должен жить: GitHub или GitVerse. Если не назовёте никакую, это будет GitHub.</p>
    <p p="7">4. Укажите свой логин на этой площадке как логин мейнтейнера пакета.</p>
    <p p="8">Когда у этого аккаунта появится право писать в репозиторий пакета, версии вы публикуете сами, как показывает страница [Опубликовать пакет](publish-a-package.xml).</p>
  </section>
  <section id="the-central-registry" title="Центральный реестр">
    <p p="9">[Реестр](../glossary/index.xml#registry) в VibeVM — это организация на хостинге, где каждый пакет — отдельный git-репозиторий. Центральный реестр — пара организаций, которым каждая машина доверяет по умолчанию: `https://github.com/vibespecs` и `https://gitverse.ru/vibespecs`. При первом запуске vibe записывает обе в список реестров, который ведёт для всей машины, поэтому любой проект ставит из них без настройки.</p>
    <rule ref="spec://org.vibevm.core/vibevm/modules/vibe-registry/PROP-008#DEFAULT-TRUSTED-REGISTRIES" p="10"/>
  </section>
  <section id="names" title="Имена, которые могут не принять">
    <p p="11">Имена пакета — его группа и собственное имя — могут быть объектом чьих-то авторских прав или по другой причине быть запрещены к публикации. Такой пакет могут не принять или удалить уже после публикации.</p>
  </section>
  <section id="administration" title="Что может администрация">
    <p p="12">Администрация центрального реестра оставляет за собой право не принимать любой пакет, удалять любой пакет из реестра и совершать с любым пакетом другие администраторские действия. Эти действия не должны противоречить законодательству. Какое законодательство применяется, рассказывает страница [Применимое право](../legal/applicable-law.xml).</p>
  </section>
  <section id="edge-cases" title="Особые случаи и правила">
    <p p="13">Если нужно место, которым распоряжаетесь вы, или закрытое, публикуйте в собственный реестр, как показывает страница [Опубликовать пакет](publish-a-package.xml). Там никому не нужно одобрять ваш пакет.</p>
  </section>
</spec>
