# Публикация на сайте
[Home](/ru/ai)
[Catalog](/ru/ai/catalog)
Подтвердить план публикации в браузере.
## Pages
[Главная](/ru/ai/docs)
### Быстрый старт
[Быстрый старт](/ru/ai/docs/quickstart)
[Для человека](/ru/ai/docs/quickstart/human)
[Для ИИ-агента](/ru/ai/docs/quickstart/agent)
[Харнессы](/ru/ai/docs/harnesses)
[Понятия](/ru/ai/docs/concepts)
[Каталог](/ru/ai/docs/catalog)
### CLI
[CLI](/ru/ai/docs/cli)
[Карта команд](/ru/ai/docs/cli/commands)
[Наблюдение](/ru/ai/docs/cli/observe)
[Конфигурация](/ru/ai/docs/cli/config)
[Телеметрия](/ru/ai/docs/cli/telemetry)
[Устройство](/ru/ai/docs/cli/device)
[Паспорта](/ru/ai/docs/cli/passport)
[Вход](/ru/ai/docs/cli/auth)
[Согласие](/ru/ai/docs/cli/consent)
[Проект](/ru/ai/docs/cli/project)
[Toolchain](/ru/ai/docs/cli/toolchain)
[Harness](/ru/ai/docs/cli/harness)
[Agent Skill CLI](/ru/ai/docs/cli/skill)
[Реестр](/ru/ai/docs/cli/registry)
#### Компонент
[Обзор](/ru/ai/docs/cli/component)
[Обнаружение](/ru/ai/docs/cli/component-discover)
[Паспорт](/ru/ai/docs/cli/component-passport)
[Источник](/ru/ai/docs/cli/component-source)
[Публикация](/ru/ai/docs/cli/component-publish)
[Выбор](/ru/ai/docs/cli/select)
[Установка](/ru/ai/docs/cli/install)
[Target](/ru/ai/docs/cli/target)
[Setup](/ru/ai/docs/cli/setup)
[Provider](/ru/ai/docs/cli/provider)
[Синхронизация](/ru/ai/docs/cli/sync)
[Доступ](/ru/ai/docs/cli/grant)
[Жалобы](/ru/ai/docs/cli/report)
[Owner](/ru/ai/docs/cli/owner)
[Publication](/ru/ai/docs/cli/publication)
[Eval](/ru/ai/docs/cli/eval)
### Веб
[Веб](/ru/ai/docs/web)
[Главная](/ru/ai/docs/web/home)
[Каталог](/ru/ai/docs/web/catalog)
[Карточка компонента](/ru/ai/docs/web/catalog-component)
[Карточка сетапа](/ru/ai/docs/web/catalog-setup)
[Региональные сервисы](/ru/ai/docs/web/services)
[Издатели](/ru/ai/docs/web/publishers)
[Content](/ru/ai/docs/web/content)
[Эта документация](/ru/ai/docs/web/docs)
[Контакт](/ru/ai/docs/web/contact)
[Правовые документы](/ru/ai/docs/web/legal)
[Вход](/ru/ai/docs/web/login)
[Аккаунт](/ru/ai/docs/web/account)
[Профиль](/ru/ai/docs/web/profile)
[Устройства](/ru/ai/docs/web/devices)
[Объекты](/ru/ai/docs/web/objects)
[Доступ](/ru/ai/docs/web/access)
[Жалобы](/ru/ai/docs/web/reports)
[Лайки](/ru/ai/docs/web/likes)
[Онбординг](/ru/ai/docs/web/onboarding)
[Публикация](/ru/ai/docs/web/publications)
### Компоненты
[Компоненты](/ru/ai/docs/components)
[instruction](/ru/ai/docs/components/instruction)
[skill](/ru/ai/docs/components/skill)
[mcp](/ru/ai/docs/components/mcp)
[hook](/ru/ai/docs/components/hook)
[command](/ru/ai/docs/components/command)
[agent](/ru/ai/docs/components/agent)
[plugin](/ru/ai/docs/components/plugin)
[setting](/ru/ai/docs/components/setting)
[Сетапы](/ru/ai/docs/setups)
### Публикация
[Публикация](/ru/ai/docs/publishing)
[Авторство](/ru/ai/docs/publishing/authoring)
### Доверие и безопасность
[Обзор](/ru/ai/docs/trust-and-safety)
[Проверки безопасности](/ru/ai/docs/security-checks)
[Диагностика](/ru/ai/docs/troubleshooting)
[cli](/ru/ai/docs/components/cli)
## Content
# Публикация на сайте
План публикации собирается в CLI. Сайт показывает этот неизменяемый
план и, когда состояние `ready`, даёт подтвердить точный `plan_hash`.
Браузер не строит паспорта, не гоняет сканеры и не пакует артефакты.
## URL и кто их видит
| Проекция | URL | Кому видно |
| --- | --- | --- |
| Human | `/{locale}/publications/{plan_id}` | вошедшему владельцу |
| Machine | `/{locale}/ai/publications/{plan_id}` | та же сессия |
Индекса публикаций нет. Сюда попадают:
- со страницы версии [Объектов](objects.md) — **Открыть план публикации**
или **Начать публикацию**;
- из CLI, который печатает веб-ссылку (`link web` или payload плана).
Нет сессии → login с `returnTo` на этот план. 404/403 →
**План публикации не найден или недоступен.** без уточнения, что
именно. Онбординг pending → сначала онбординг.
## Зачем этот экран
Страница нужна, чтобы просмотреть план, который сервер уже заморозил,
и подтвердить его, если состояние `ready`.
CLI создаёт план, подписывает attestation evidence и опрашивает статус
из скрипта.
Страница **не**:
- правит паспорт;
- меняет дайджест;
- передаёт experimental consent установщикам;
- публикует «что сейчас в рабочем дереве».
Подтверждение окончательно для этого `plan_hash`. Consent сам не
передаётся.
## Что на экране
Подзаголовок: **Проверьте план публикации перед подтверждением. Браузер
паспорта не собирает.**
| Поле | Подпись | Смысл |
| --- | --- | --- |
| Состояние | Состояние | состояние плана на сервере |
| Объект | Объект | `object_kind / stable_id / version` |
| Content digest | Content digest | публикуемые байты |
| Plan hash | Plan hash | значение, к которому привязывает confirm |
| Версия политики | Версия политики | закрепление политики публикации |
| Истекает | Истекает | `expires_at` |
| Эффекты | Эффекты | заявленные эффекты или тире |
Строки evidence (если есть): `check_id` плюс `result · source`.
Когда `state === "ready"` и есть CSRF: **Подтвердить публикацию** с
предупреждением выше. Пока ждёт: **Подтверждение…**. После успеха может
появиться mutation reference; страница затем обновляется в состояние
не-`ready`.
Иначе:
> План в состоянии {state}. Подтверждение недоступно.
Human / Machine: machine publication печатает `plan_id`, `plan_hash`,
`policy_version`, `expires_at`, `effects`, идентичность объекта.
Confirm только human.
## Совпадающие команды CLI
```bash
ai-stp task start --intent publish --idempotency-key publish-session-01 --json
```
Expert leaves, если план уже построен (status/confirm на этой странице):
```text
ai-stp publication status --plan-id <plan_id> --json
ai-stp publication confirm --plan-id <plan_id> --plan-hash <plan_hash> --confirm --json
ai-stp attestation sign --json
ai-stp owner version show --json
ai-stp link web --json
```
`publication plan` (`plan`) создаёт неизменяемый серверный план для
одной точной выпущенной версии компонента. `publication status` его
читает. `publication confirm` (`apply`, `explicit_flag`) — близнец
кнопки на этой странице. `attestation sign` (`apply`,
`explicit_flag`) подписывает тестовые данные, зависящие от учётных
данных, **активным ключом устройства** — в браузере этого нет.
Expert leaves публикации сетапа (просмотренный набор pin, затем сетап):
```text
ai-stp setup publish plan --json
ai-stp setup publish confirm --json
```
Они подтверждают просмотренный набор: закреплённые компоненты, затем
сетап. См. [Команды сетапа](../cli/setup.md).
## Тупики
| Что видно | Что это значит | Что делать |
| --- | --- | --- |
| План публикации не найден или недоступен. | плохой id или не ваше | начните с Objects или `publication status` |
| Подтверждение недоступно | state ≠ `ready` или нет CSRF | подождите / обновите; перелогиньтесь, если нет CSRF |
| Plan expired | `expires_at` прошёл | start `publish` |
| Начать публикацию нет на Objects | нет устройства или не разрешено | привяжите CLI-устройство; start `publish` |
| Evidence пустой | нет дополнительных строк | всё равно читайте дайджест и хеш |
| Хотите поменять файл | для этого хеша уже поздно | новая версия, новый план |
| Browser «build» | не существует | только CLI |
Не вставляйте `plan_hash`, attestation-подписи и ключи устройства в
чат. Confirm привязывает хеш; утечка — не выдача, но привычка держать
его как секрет всё равно верная.
## Состояния, которые вы увидите
Кнопка confirm есть только у `ready`. Остальные состояния на сайте
только для чтения:
| Нужно | CLI | Сайт |
| --- | --- | --- |
| Создать план | `publication plan` | Начать публикацию на странице версии |
| Смотреть | `publication status` | обновить этот URL |
| Подписать evidence | `attestation sign` | не предлагается |
| Подтвердить хеш | `publication confirm` | Подтвердить публикацию |
| Опубликовать набор сетапа | `setup publish plan` / `confirm` | не эта форма URL |
Если CLI и сайт оба подтверждают, второй вызов — no-op или отказ на
уже израсходованном хеше — не кликайте дважды «на всякий случай».
После одного confirm читайте `publication status`.
Machine-проекция — факты, которые агент должен цитировать: `plan_id`,
`plan_hash`, дайджест, версия политики, срок. Confirm он нажимать не
должен.
## Связанные страницы
- [Мои объекты](objects.md) — где живут Start / Open plan.
- [Каталог](catalog.md) — публичная карточка после успешной публикации.
- [Публикация CLI](../cli/publication.md) — plan, attest, confirm.
- [Опубликовать компонент](../cli/component-publish.md) — сначала выпуск `X.Y`.
- [Команды сетапа](../cli/setup.md) — пара публикации сетапа.
- [Владелец](../cli/owner.md) — evidence версии.
- [Доверие и безопасность](../trust-and-safety/index.md) — публикация ≠
гарантия безопасности.
!!! note "Хеш или этого не было"
Подтверждение без чтения `plan_hash` и `content_digest` — как
публичная неверная версия. Кнопка — не «опубликовать latest».