AI/FLOW
Документация

Документация AI-Flow

Весь продукт: иерархия, типы сущностей, связи, веб-интерфейс, MCP, ревью кода и скиллы — с примерами и ограничениями.

Открыть приложение На главную15 разделов~16 мин чтения

Быстрый переход

Обзор01

Что такое AI-Flow

AI-Flow — это система иерархического планирования продукта, рассчитанная на совместную работу человека и AI-агентов. Вы описывает…

Основы02

Ключевые понятия

Любая единица работы — это нода. Ноды образуют строгое дерево от продукта до конкретной задачи. Вложенность не ограничена, но рек…

Справочник03

Типы сущностей

Полный список объектов, с которыми вы работаете в AI-Flow — в интерфейсе и через MCP.

Интерфейс04

Веб-приложение

Тёмный интерфейс для людей: три вкладки проекта — «Планирование», «Документация» и «Ревью». Создавайте проекты, редактируйте ноды…

Интеграция05

MCP для агентов

MCP-сервер — это HTTP-эндпоинт с аутентификацией по Bearer-токену. Через него AI-агент читает и меняет ноды напрямую, не выходя и…

Поиск06

Семантический поиск (RAG)

У проекта есть собственный семантический индекс: всё, что вы пишете в нодах, документах и комментариях, автоматически превращаетс…

Качество07

Ревью кода

AI-Flow хранит код-ревью прямо рядом с планом. Агент (или человек) запускает ревью ветки, а результат сохраняется во вкладке «Рев…

Скиллы08

Навыки для агентов

Скиллы — это переиспользуемые инструкции (SKILL.md), которые учат агента работать с AI-Flow правильно: соблюдать иерархию, вести…

Границы09

Ограничения и планы

AI-Flow находится в стадии MVP. Часть возможностей ещё в разработке — честно перечисляем, чего пока нет.

Harness · Начать10

Что такое Harness

Harness — это не чат и не набор промптов. Это версия процесса: роли, граф шагов, правила доступа, лимиты, ожидаемые входы и резул…

Harness · Как это работает11

Жизненный цикл решения

Harness · Сущности12

Сущности Harness

Deliberation объединяет Proposal, Claim, Evidence, Critique и DeliberationResponse. Ballot и Vote фиксируют выбор, Decision — его…

Harness · Руководства13

Как пользоваться Harness

Run получает краткую цель, нужный контекст и ссылки на ноды AI-Flow. Следите не за скрытым чатом, а за timeline, назначениями, от…

Harness · Управление14

Контекст, контроль и безопасность

ContextPolicy задаёт включаемые источники: вход запуска, ноды AI-Flow, предыдущий раунд или только назначенные материалы. Она так…

Harness · Справочник15

Статусы, MCP и глоссарий

На этой страницеЧто такое AI-Flow
01
Обзор

Что такое AI-Flow

AI-Flow — это система иерархического планирования продукта, рассчитанная на совместную работу человека и AI-агентов. Вы описываете замысел свободным текстом, а агенты через MCP раскладывают его на дерево задач, наполняют документацию, ведут статусы и собирают релизы.

Главная идея: тикет — это память. Агент между сессиями не помнит ничего, поэтому вся истина живёт в нодах: спецификация в контенте, ход работы — в комментариях, реальное состояние — в статусе и прогрессе.

01

Для кого

Команды, которые планируют разработку с участием AI-агентов (Claude Code, Cursor и др.) и хотят единый источник правды.

02

Как подключается

Веб-интерфейс для людей + MCP-сервер для агентов. Один и тот же граф, два способа доступа.

03

Что внутри

Дерево нод, интерактивный граф, документы, теги, зависимости, типизированные связи, референсы, ревью кода, релизы и скиллы.

02
Основы

Ключевые понятия

Иерархия нод

Любая единица работы — это нода. Ноды образуют строгое дерево от продукта до конкретной задачи. Вложенность не ограничена, но рекомендуется выбирать минимальную глубину, которая остаётся читаемой.

project
epic
feature
plan
task

Типы нод

У каждой ноды есть тип (kind). Он определяет её роль в дереве.

project

Корень дерева — продукт или инициатива. Создаётся через create_project, имеет короткий КЛЮЧ (префикс слагов, напр. AF).

epic

Крупный блок работы. Группирует несколько фич. Заводится только под действительно большой объём.

feature

Поставляемая возможность — то, что можно выпустить. Содержит планы реализации.

plan

План реализации фичи: цели, подход, риски и упорядоченный чек-лист задач в Markdown-контенте.

task

Лист дерева — конкретная исполняемая единица. Здесь происходит реальная работа; содержит критерии приёмки.

doc

Документ. Markdown-страница с обратными ссылками и референсами. Живёт во вкладке «Документация».

Жизненный цикл статусов

У каждой ноды есть статус. Агент двигает его явно через update_node_status. Прогресс (0..100) задаётся отдельно для длинных задач через update_node_progress.

Очередь
backlog

Не начато.

Планирование
planning

Декомпозируется, пишется спецификация.

В работе
in_progress

Активно выполняется.

Тестирование
testing

Реализация готова, идёт проверка.

Регрессия
regression

Проверка нашла проблемы, идёт правка.

Выполнено
done

Завершено и проверено.

Заблокировано
blocked

Двигаться нельзя — причина всегда в комментарии.

Связи между нодами

Помимо иерархии «родитель → ребёнок», ноды связываются ещё тремя способами. Все связи видны в деталях ноды и на интерактивном графе.

01

Зависимости

Направленное ребро «A зависит от B». Задаёт порядок выполнения задач (add_dependency).

02

Референсы

Двусторонние перекрёстные ссылки между нодами: исходящие и обратные (backlinks). Задаются через set_references.

03

Типизированные связи

Семантические рёбра: blocks / blocked_by, depends_on / depended_by, related_to, duplicates / duplicated_by, parent_of / child_of. Двусторонние, задаются через add_relation.

03
Справочник

Типы сущностей

Полный список объектов, с которыми вы работаете в AI-Flow — в интерфейсе и через MCP.

01

Организация

Верхний контейнер. Пользователь состоит в организациях; проекты живут внутри них.

02

Проект

Продукт с КЛЮЧОМ и Markdown-спецификацией. Корень дерева нод.

03

Нода

Единица работы любого типа (epic/feature/plan/task/doc). Несёт контент, статус, прогресс, теги и связи.

04

Слаг

Человекочитаемый идентификатор вида KEY-KIND-N (напр. AF-TASK-30). Можно адресовать ноду по нему вместо UUID.

05

Тег

Метка для фильтрации и маршрутизации работы: backend, frontend, db, infra, decision…

06

Комментарий

Запись в ленте ноды от пользователя или агента. Аудит-трейл: [plan]/[progress]/[decision]/[review]/[done].

07

Зависимость

Направленное ребро «A зависит от B». Задаёт порядок выполнения задач.

08

Референс

Перекрёстная ссылка между нодами. Двусторонняя: исходящие ссылки и обратные (backlinks).

09

Типизированная связь

Семантическое двустороннее ребро между нодами: blocks/blocked_by, depends_on, related_to, duplicates, parent_of/child_of. Отображается на графе.

10

Документ

Нода типа doc — Markdown-страница в разделе «Документация» проекта.

11

Ревью кода

Код-ревью ветки с итерациями (каждый прогон — новая итерация с коммитом и текстом). Привязывается к нодам и живёт во вкладке «Ревью».

12

Итерация ревью

Один прогон ревью: номер, хэш коммита и Markdown-заключение. Ревью накапливает итерации по мере правок.

13

Релиз

Группировка задач для выпуска. Дерево можно смотреть сгруппированным по релизам.

14

Токен доступа (PAT)

Personal Access Token для MCP. Показывается один раз при создании; используется как Bearer-токен.

15

Скилл

Переиспользуемая инструкция для AI-агента (SKILL.md), обучающая корректной работе с AI-Flow.

04
Интерфейс

Веб-приложение

Тёмный интерфейс для людей: три вкладки проекта — «Планирование», «Документация» и «Ревью». Создавайте проекты, редактируйте ноды, смотрите граф и ведите документацию. Доступен на русском и английском.

Разделы проекта

01

Планирование

Дерево нод с drag-and-drop: перенос и переупорядочивание, мультивыбор, статусы и прогресс прямо в дереве. Рядом — живой граф.

02

Граф

Та же структура как живой граф: зависимости, референсы и типизированные связи — наглядно видно, что от чего зависит.

03

Документация

Markdown-документы с предпросмотром, обратными ссылками и референсами между нодами.

04

Ревью кода

Вкладка «Ревью»: список ревью ветки, итерации с коммитами и заключениями, привязка к нодам и переходы между ревью и планированием.

05

Детали ноды

Контент, комментарии (человек/агент), теги, зависимости, референсы и типизированные связи выбранной ноды.

06

Релизы

Группировка задач по релизам с отслеживанием прогресса и истории версий.

07

Импорт / экспорт

Выгрузка и загрузка проекта целиком для переноса между окружениями.

Настройки

  • MCP — генерация и отзыв токенов доступа, готовый конфиг для Claude Code и Cursor, тест через curl.
  • Скиллы — скачивание набора скиллов (.zip) для обучения агентов работе с AI-Flow.
  • Переключатель языка (RU / EN) и выбор организации/проекта в шапке.
05
Интеграция

MCP для агентов

MCP-сервер — это HTTP-эндпоинт с аутентификацией по Bearer-токену. Через него AI-агент читает и меняет ноды напрямую, не выходя из своего рабочего процесса.

Подключение за три шага

  1. 01Зарегистрируйтесь и войдите в веб-приложение.
  2. 02На странице MCP создайте Personal Access Token (PAT) — он показывается только один раз, скопируйте его сразу.
  3. 03Пропишите URL сервера и заголовок Authorization в конфиге своего агента.
Конфиг для Claude Code (Streamable HTTP)
{  "mcpServers": {    "ai-flow": {      "url": "https://mcp.flow.shipoora.ru/mcp",      "headers": { "Authorization": "Bearer aiflow_pat_..." }    }  }}
Проверка через curl
curl -X POST https://mcp.flow.shipoora.ru/mcp \  -H "Authorization: Bearer aiflow_pat_..." \  -H "Content-Type: application/json" \  -d '{"jsonrpc":"2.0","id":1,"method":"initialize",       "params":{"protocolVersion":"2025-11-25",       "capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}}'

Справочник инструментов

Большинство инструментов принимают либо node_id, либо slug + project_id. Слаги читабельнее — используйте их.

Организации и проекты

05
list_organizationsСписок организаций пользователя
create_organizationСоздать организацию
list_projectsПроекты в организации (org_id)
create_projectСоздать проект (name, key, spec)
ensure_projectНайти проект по ключу или создать, если его нет

Дерево и ноды

10
get_treeПолное дерево проекта (project_id)
list_nodesСписок нод по kind / parent
get_nodeНода + контент, комментарии, теги, зависимости, child_ids
get_node_by_slugНода по слагу (project_id, slug)
create_nodeСоздать epic/feature/plan/task под родителем
update_node_contentОбновить title и Markdown-контент
update_node_statusСменить статус
update_node_progressПрогресс 0..100
move_nodeПеренести/переупорядочить ноду в дереве
delete_nodeУдалить ноду и её потомков

Документы

03
create_doc_nodeСоздать документ (doc-ноду)
list_docsСписок документов проекта
update_doc_contentОбновить контент документа

Связи и метаданные

05
add_commentДобавить комментарий (author = agent)
add_tagДобавить тег
add_dependencyДобавить зависимость (from → to)
set_referencesЗадать перекрёстные ссылки
get_referencesИсходящие и входящие ссылки

Типизированные связи

03
add_relationДобавить типизированную связь (from → to, тип)
remove_relationУдалить типизированную связь
get_relationsИсходящие и входящие связи ноды

Ревью кода

06
create_reviewСоздать ревью ветки (reviewer, branch, commit, текст)
get_reviewРевью + все итерации и связанные ноды
list_reviewsСписок ревью проекта
add_review_iterationДобавить итерацию к ревью (commit, текст)
set_review_nodesПривязать ревью к нодам (двусторонне)
get_node_reviewsРевью, привязанные к ноде

Семантический поиск

03
rag_queryПоиск по смыслу: ранжированные фрагменты нод и комментариев (query, k, kind_filter)
rag_contextГотовый Markdown-блок контекста по запросу — для вставки в промпт (max_chars)
rag_statusСостояние индекса проекта: чанки, размерность вектора, разбивка по статусам синхронизации
07
Качество

Ревью кода

AI-Flow хранит код-ревью прямо рядом с планом. Агент (или человек) запускает ревью ветки, а результат сохраняется во вкладке «Ревью» проекта и привязывается к конкретным нодам, которые проверялись.

Как устроено ревью

01

Ревью ветки

Привязано к проекту: reviewer, имя ветки и стартовый коммит. Создаётся через create_review.

02

Итерации

Каждый повторный прогон — новая итерация с номером, хэшем коммита и Markdown-заключением (add_review_iteration). Видна вся история проверок.

03

Привязка к нодам

set_review_nodes связывает ревью с задачами/фичами двусторонне: из ревью виден список нод, из ноды — её ревью (get_node_reviews).

Поток работы

  1. 01Агент со скиллом ai-flow-review прогоняет ревью по диффу ветки.
  2. 02Результат сохраняется как ревью с первой итерацией (commit + заключение).
  3. 03Ревью привязывается к проверённым нодам — появляются переходы «ревью ↔ планирование».
  4. 04После правок добавляется следующая итерация — история накапливается, а не перезаписывается.
08
Скиллы

Навыки для агентов

Скиллы — это переиспользуемые инструкции (SKILL.md), которые учат агента работать с AI-Flow правильно: соблюдать иерархию, вести тикет как память, корректно двигать статусы. Скачать весь набор можно на странице «Скиллы» в приложении.

01

ai-flow-init

Найти или создать организацию и проект, записать конфиг .ai-flow. Точка входа, если контекста ещё нет.

02

ai-flow-basics

Фундамент: иерархия, статусы, MCP-инструменты, семантический поиск, правило «тикет — это память». Читать первым.

03

ai-flow-rag-search

Искать по смыслу: rag_query, rag_context, rag_status — найти уже сделанное и поднять контекст проекта до начала работы.

04

plan-feature

Разложить фичу на epic → feature → plan → task с тегами и зависимостями.

05

execute-task

Выполнять задачу, двигать статус, логировать прогресс комментариями.

06

review-work

Проверить работу по критериям приёмки, сгенерировать документацию и референсы.

07

ai-flow-review

Прогнать код-ревью ветки и сохранить его в AI-Flow с итерациями и привязкой к нодам.

08

update-knowledge

Поддерживать контент нод актуальным и фиксировать решения и итоги.

09

sync-skills

Сверить локальные скиллы с бэкендом по MD5 и подтянуть только изменившиеся.

Типичный цикл работы

  1. 01Опишите замысел продукта (свободный текст или Markdown-спецификация).
  2. 02Агент через MCP раскладывает идею на эпики, фичи, планы и задачи.
  3. 03Задачи выполняются по одной; каждый шаг фиксируется комментарием, статус и прогресс остаются честными.
  4. 04Ревью проверяет результат по критериям приёмки и собирает документацию с перекрёстными ссылками.
  5. 05Готовые задачи группируются в релизы — граф, доки и прогресс обновляются автоматически.
09
Границы

Ограничения и планы

AI-Flow находится в стадии MVP. Часть возможностей ещё в разработке — честно перечисляем, чего пока нет.

Текущие ограничения

  • Семантический поиск ищет по нодам, документам и комментариям; вложения и внешние источники в индекс не попадают.
  • Автоматизация переходов между статусами частично ручная.
  • UI управления организациями и шаринг проектов между пользователями в работе.
  • Рендер Mermaid в Markdown-контенте пока не поддержан.
  • Доступ к ноде идёт по node_id или slug + project_id — глобально уникальны только UUID.

В планах

  • Поиск по вложениям и внешним источникам в том же семантическом индексе.
  • Автопереходы статусов и каскадный rollup прогресса.
  • Полноценный UI организаций и совместный доступ.
  • Рендер Mermaid-диаграмм в контенте нод.
10
Harness · Начать

Что такое Harness

Harness — это не чат и не набор промптов. Это версия процесса: роли, граф шагов, правила доступа, лимиты, ожидаемые входы и результаты. Один и тот же Harness можно безопасно повторять для разных задач.

  1. 01Версия
  2. 02Run
  3. 03Анализ
  4. 04Проверка
  5. 05Решение
  6. 06Approval
  7. 07Task plan

Когда он нужен

01

Архитектурный выбор

Независимые эксперты предлагают варианты, проверяют допущения и оставляют объяснимое решение.

02

Риск и безопасность

Отдельные роли ищут угрозы и возражения, а опасные действия проходят через подтверждение человека.

03

Декомпозиция

После решения система формирует черновик задач AI-Flow, который человек просматривает перед применением.

Главный принцип

Вместо скрытого рассуждения Harness хранит проверяемые рабочие артефакты: предложения, утверждения, доказательства, критики, голоса и итоговое решение. Это позволяет понять, что было выбрано и почему.

11
Harness · Как это работает

Жизненный цикл решения

  1. 01Версия
  2. 02Run
  3. 03Анализ
  4. 04Проверка
  5. 05Решение
  6. 06Approval
  7. 07Task plan

Обычный поток

  1. 01Пользователь запускает версию Harness с задачей и ссылками на ноды AI-Flow.
  2. 02Роли получают только разрешённый контекст и независимо создают предложения.
  3. 03Участники проверяют предложения через claims, evidence и critiques; авторы могут выпустить revision.
  4. 04Голосование или judge формирует решение, после чего human gate принимает, отклоняет или отправляет его на доработку.
  5. 05Одобренное решение создаёт черновик task plan; его применение к дереву AI-Flow остаётся отдельным подтверждаемым действием.

Два режима оркестрации

01

Внешний host — рекомендуемый старт

AI-Flow выступает coordination plane: внешний агент читает назначение через MCP, выполняет работу в своей среде и публикует структурированный результат.

02

Встроенный runner — целевая возможность

AI-Flow сам вызывает модели, формирует контекст и запускает следующий шаг. Этот режим будет явно обозначен как доступный только после запуска.

12
Harness · Сущности

Сущности Harness

Конфигурация

01

Definition → Version

Role · Workflow · Policy

Запуск

02

Run → Step → Work item

Agent · Assignment · Event

Решение

03

Proposal · Claim · Evidence

Critique · Vote · Decision

Конфигурация

01

HarnessDefinition и HarnessVersion

Definition — именованный шаблон процесса; Version — неизменяемый снимок его схем, графа и политик. Каждый run всегда ссылается на одну конкретную версию.

02

AgentRole, WorkflowNode и WorkflowEdge

Роль задаёт ответственность и границы агента. Ноды и рёбра описывают порядок задач, параллельность, условия, review, vote и human gate.

03

HarnessPolicy и ContextPolicy

Политики ограничивают инструменты, данные, бюджеты и подтверждения. Контекстная политика определяет, что роль может увидеть и как это извлекается.

Во время запуска

  • HarnessRun — один запуск версии с входными данными, источниками AI-Flow и снимком бюджета/политик.
  • AgentInstance и AgentAssignment — конкретный участник и его инструкция.
  • StepRun и WorkItem — состояние шага и lease, по которому внешний агент получает, продлевает, завершает или освобождает работу.
  • RunEvent и Artifact — неизменяемая история и полезные результаты запуска.

Обсуждение и решение

Deliberation объединяет Proposal, Claim, Evidence, Critique и DeliberationResponse. Ballot и Vote фиксируют выбор, Decision — его обоснование и статус. ApprovalRequest переводит важное действие в очередь человека, а TaskPlanDraft и ProposedNode готовят перенос результата в дерево AI-Flow.

13
Harness · Руководства

Как пользоваться Harness

Соберите версию

  1. 01Создайте Harness для одного повторяемого вида решения, а не универсального совета.
  2. 02Создайте Version и зафиксируйте input/output schema, роли и граф шагов.
  3. 03Опишите для каждой роли цель, обязанности, запреты и формат результата.
  4. 04Добавьте правила инструментов, доступа к данным, голосования, бюджета и human approval.
  5. 05Провалидируйте граф и публикуйте версию только после проверки.
MCP · сборка версии
harness_create({ name: "architecture-review", description: "Оценка архитектурных вариантов перед выбором" })harness_create_version({ harness_id, input_schema, output_schema })harness_add_role({ version_id, key: "proposer", goal: "Предложить вариант решения" })harness_add_workflow_node({ version_id, kind: "proposal", role_key: "proposer" })harness_validate({ version_id })harness_publish({ version_id })

Запустите и наблюдайте

Run получает краткую цель, нужный контекст и ссылки на ноды AI-Flow. Следите не за скрытым чатом, а за timeline, назначениями, открытыми критиками, голосами, budget check и запросами подтверждения.

Участие внешнего агента

Агент находит доступный WorkItem, забирает lease, регулярно отправляет heartbeat и публикует результат в структурированном виде. Если он не успевает, lease истекает и работа безопасно возвращается в очередь; дублирование не должно создавать второй результат.

MCP · участие агента
work_list_available({ run_id })work_claim({ work_item_id, agent_instance_id })work_heartbeat({ work_item_id, lease_token })work_complete({ work_item_id, lease_token, result: { summary: "Итог по назначенному шагу" } })
14
Harness · Управление

Контекст, контроль и безопасность

Контекст и изоляция

ContextPolicy задаёт включаемые источники: вход запуска, ноды AI-Flow, предыдущий раунд или только назначенные материалы. Она также исключает чувствительные пути, ограничивает объём и может скрывать авторов. Не передавайте агентам весь проект по умолчанию.

Политики и бюджеты

01

Политики

Правила allow, deny или require approval применяются к инструментам, данным, execution, voting, privacy и retention.

02

Бюджеты

Лимиты на длительность, раунды, вызовы модели, токены, стоимость, инструменты и параллельных агентов должны останавливать запуск предсказуемо.

03

Надёжность

Optimistic locking, idempotency keys, последовательные events и lease исключают двойное применение и объясняют, что случилось при повторной доставке.

Аудит и защита

RunEvent формирует timeline, Artifact хранит полезный результат, а полномочия разделяются на read, write, start, participate, vote и approval. Данные из кода и документов считаются недоверенными: их нельзя исполнять как инструкции без явной политики.

15
Harness · Справочник

Статусы, MCP и глоссарий

queuedrunningwaiting_for_agentwaiting_for_usercompletedfailedcancelled

MCP-поверхность

Конструктор

harness.create · create_version · add_role · add_workflow_node · validate · publish

Запуски

council.start_run · get_run · advance_run · retry_step

Участники

work.list_available · work.claim · work.heartbeat · work.complete

Решения

proposal · critique · vote · approval · task_plan
MCP · пример вызова
council_submit_proposal({  run_id: "run_8f2c1",  role_key: "proposer",  summary: "Разделить сервис уведомлений на отдельный воркер",  body: "Снижает связность релизов и позволяет независимо масштабировать очередь"})

Глоссарий

  • Definition — именованный шаблон; Version — неизменяемая опубликованная конфигурация.
  • Run — экземпляр Version; StepRun — конкретное прохождение узла workflow; WorkItem — leased единица работы для внешнего участника.
  • Proposal — вариант решения; Claim — проверяемое утверждение; Evidence — материал, который его поддерживает или опровергает; Critique — обоснованное возражение.
  • Ballot — правила и варианты голосования; Vote — голос; Decision — выбранный и объяснённый результат; ApprovalRequest — действие, ожидающее человека.
  • Artifact — полезный выход; RunEvent — неизменяемая запись истории; TaskPlanDraft — ещё не применённый план изменений AI-Flow.

Частые вопросы

01

Чем Harness отличается от обычного чата с несколькими агентами?

Harness — версионируемый процесс с ролями, графом шагов и политиками; один и тот же Harness можно безопасно повторять, а решения хранятся как проверяемые артефакты, а не скрытая переписка.

02

Можно ли использовать Harness без AI-Flow?

Нет: запуск всегда ссылается на конкретную HarnessVersion и опирается на ноды и политики AI-Flow — это часть его coordination plane.

03

Что произойдёт при превышении бюджета?

Run останавливается предсказуемо на границе лимита (раунды, вызовы модели, токены, стоимость или время); частично выполненная работа остаётся в истории, а run переходит в failed.

04

Когда появится встроенный runner?

Это целевая возможность, которая ещё не опубликована; интерфейс явно пометит её доступной только после выпуска — сейчас рекомендуемый путь — внешний host через MCP.

05

Можно ли менять опубликованную версию Harness?

Нет: Version — неизменяемый снимок. Изменения оформляются как новая версия, а уже запущенные run продолжают ссылаться на ту, с которой были начаты.

06

Что если агент не продлит lease вовремя?

Lease истекает, WorkItem безопасно возвращается в очередь для другого участника; идемпотентность не позволяет повторной доставке создать второй результат.