hermes-hub/agents/inbox/2026-08-25-A30-workflow-canvas-CODEX.md
Hermes Team 1a21c8b1a8 docs(agents): задания A28, A29, A30 — новый фронтенд и субагенты
Владелец передал готовый дизайн: брендбук с тремя темами, макеты главного
экрана, маршрутизации и остальных разделов, логотипы. Плюс список из
двенадцати субагентов с расписанными обязанностями.

Объём не помещается в одно задание, поэтому разделено на три с явными
границами по файлам:

  A28  реестр ролей и двенадцать субагентов          Antigravity, основа
  A29  дизайн-система и экран «Маршрутизация»        Antigravity
  A30  главный экран: граф workflow, LIVE, файлы     Codex

Каждое опирается на состояние, снятое исполнением, чтобы агенты не
переписывали работающее и не выясняли заново:

- новая роль уже добавляется через конфигурацию и доходит до снапшота, но
  подпись падает в сырой идентификатор, потому что таблицы имён зашиты в
  четырёх местах;
- workflow, связей между агентами и файлов агентов в проекте нет вовсе —
  это разработка с нуля, а не доработка;
- источники данных для дашборда существуют и настоящие, параллельный
  заводить не нужно;
- веб-слой без сборки, и это обосновано в контракте.

В каждом задании отдельно оговорено, что демонстрационные значения с
макетов (12 задач, 3.42 с, 94.2%, account-01) — иллюстрация и в код попасть
не должны. Поверхность для выдуманных данных здесь самая большая за проект.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 19:05:56 +07:00

168 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Задание A30 (Codex): главный экран «Обзор» — граф workflow, файлы агентов, LIVE
## Дата поступления
2026-08-25
## База
Проверочный HEAD на момент выдачи: **`d5429da`**.
## Ветка
`codex/workflow-canvas`
## Кому
Это задание для **Codex**. Оно самое тяжёлое из трёх: здесь не переделка существующего экрана, а **три новые подсистемы, которых в проекте нет вообще**. A28 и A29 идут у Antigravity параллельно.
---
## Порядок работы с git
```
cd <каталог репозитория>; git fetch origin --prune; git status
git checkout main; git pull --ff-only origin main
git checkout -b codex/workflow-canvas
git commit -m "..." <- сначала коммит
git push -u origin codex/workflow-canvas
```
В `main` напрямую не пушить.
---
## Исходные материалы
У владельца на рабочем столе. **Запросите их до начала работы** — макет является источником истины:
```
1.txt полное ТЗ, 34 раздела: модель агента, agent file, граф, LIVE, события
1.1.png утверждённый макет главного экрана (тёмная тема)
1.2.png, 1.3.png, 2.x, 4.1 … 7.1.png остальные состояния и экраны
Брендбук.txt дизайн-система, три темы
```
---
## Что проверено исполнением — исходите из этого
Ревьюер снял состояние на `d5429da`. **Заново не выясняйте.**
**1. Ни одной из трёх подсистем в проекте нет.** Поиск по `src/antigravity_provider/router/` даёт пусто:
```
workflow / edge / agent_graph -> нет ни одного файла
agent_file / AgentFile / agents/*.md -> нет
```
Это разработка с нуля, а не доработка.
**2. Роли уже произвольны.** Новая роль добавляется в `router_profiles.yaml` и доходит до снапшота — проверено. Реестр ролей с человеческими именами делает **A28**; здесь вы его потребитель, своего не заводите.
**3. Данные для дашборда уже есть и настоящие.** Снапшот отдаёт `profiles_by_provider`, `all_profiles`, `readiness`, `agents`, `providers`, `routing`, `quotas`, `metrics`. Телеметрия вызовов и латентности живёт в `telemetry_service`. Не выдумывайте параллельный источник — раздел 27 ТЗ («Источники данных Dashboard») перечисляет их явно.
**4. Веб-слой без сборки.** Обычный JavaScript и `fetch`, без npm, без фреймворка, без шага сборки. Это решение принято и обосновано в `docs/web-api/CONTRACT.md` разделом 1: проект ведут агенты на трёх машинах, и любой шаг сборки означает дрейф версий Node между ними. **React и подобное отклонены.** Граф рисуется своими средствами — SVG или canvas.
**5. Все действия идут через один слой.** `POST /api/action` с именем действия из `action_handler.py`. Новые действия — только вписав их в `docs/web-api/CONTRACT.md`.
---
## P0-1. Модель агента и файл агента
Разделы 58 и 13 ТЗ.
Агент — объект с идентификатором, ролью из реестра A28, назначением `Provider → Account → Model`, конфигурацией исполнения (температура, предел токенов, таймаут), набором инструментов и **файлом агента**.
Файл агента — markdown в `agents/`, на макете `agents/coder-2.md`. Его видно и правят прямо из инспектора.
Требования:
1. Создание, удаление и изменение назначения агента — из интерфейса.
2. Файл агента открывается и сохраняется; путь показывается настоящий и существующий. **Каждый путь в интерфейсе обязан существовать** — инструкция уже однажды вела на несуществующий `launcher/main.py`, и это стоило раунда.
3. Удаление агента, участвующего в маршруте или в графе, — с предупреждением о последствиях, а не молча.
## P0-2. Граф workflow
Разделы 14, 1621, 24, 25 ТЗ. Это ядро задания.
Узлы — агенты, рёбра — переходы с условиями. На макете видны `SUCCESS`, `REVIEW_PASSED`, `REVIEW_FAILED`; сплошные линии — движение вперёд, пунктирные красные — возвраты.
Требуется:
1. Визуальное соединение агентов мышью, редактор ребра с условием перехода.
2. Последовательные **и циклические** маршруты: `Кодер 1 → Кодер 2 → Ревьюер`, возврат на доработку, повторная итерация.
3. **Защита от бесконечного выполнения** — раздел 24. Предел итераций виден пользователю (на макете «Итерация: 2 / 5»), достижение предела — явное событие, а не тихая остановка.
4. Режимы **LIVE** и **EDIT** — раздел 15. В LIVE граф отражает исполнение, в EDIT правится структура. Смешивать нельзя.
5. Мини-карта, масштаб, легенда состояний — всё это на макете есть.
Отменённое перетаскивание возвращает узел на место, а не теряет его.
## P0-3. LIVE-мониторинг и события
Разделы 22, 23, 26, 2931 ТЗ.
Состояния агента: ожидает, работает, проверяет, ошибка, завершено. На макете подписаны цветами из брендбука.
Требуется: текущая задача агента, номер итерации, время выполнения, последние события с отметкой времени, журнал выполнения workflow, настоящие ошибки провайдеров с их текстом.
## P0-4. Правило отсутствия данных — раздел 28 ТЗ
Владелец вынес это в отдельный раздел, и не случайно. Правило проекта, оплаченное несколькими раундами:
**Ни одного числа, статуса, имени модели или метрики без измерения.** Нет данных — «Н/Д» **с причиной**. Идёт загрузка — так и сказать; загрузка и отсутствие данных различаются.
На макете `1.1.png` стоят демонстрационные значения: `12` активных задач, `3.42 с`, `1.42M` токенов, `94.2%`, `42` выполненных, почты `account-01…04`. Это **иллюстрация**. Ни одно из них не должно попасть в код.
История: в прошлых раундах уже находили выдуманные проценты квот и выдуманные коды устройства `GRK-7842` и `CDX-9104`, причём тест **требовал** их наличия, то есть защищал выдумку от исправления. Здесь поверхность для такой ошибки самая большая за всё время проекта.
## P0-5. Порядок сдачи по частям
Задание крупное, и сдавать его одним куском не нужно. Разумное деление, каждая часть работоспособна сама по себе:
1. Модель агента, файл агента, инспектор — **без** графа.
2. Граф в режиме EDIT: узлы, рёбра, условия, сохранение.
3. Режим LIVE: состояния, события, итерации, журнал.
4. Дашборд: показатели и панели из настоящих источников.
После каждой части — рабочее приложение. Незаконченная часть обозначается в интерфейсе честно, а не рисуется заглушкой.
## P0-6. Самопроверка перед сдачей
1. **Запустить и посмотреть.** Импорт и зелёные тесты ничего не доказывают: в этом проекте уже был случай, когда модуль импортировался, тесты проходили, а приложение не запускалось вовсе.
2. **Проверить все три темы**, если A29 к тому моменту влит.
3. **Проверить каждый путь и команду**, показанные в интерфейсе.
4. **Отдельно пройти по новому коду** и убедиться, что ни одно значение с макета не стало литералом.
5. **Пропущенный пункт назвать пропущенным.** Это принимается; необъявленный пропуск — нет.
---
## Ограничения
- Десктоп (`router/ui/**`) не трогать: он выводится из обращения.
- **Без сборки, без npm, без фреймворка.** Решение обосновано в контракте.
- Действия только через `action_handler` и `POST /api/action`; новые — с правкой контракта.
- **A29 работает в тех же файлах.** Разделение: A29 — `style.css`, темы, экран маршрутизации; A30 — главный экран и граф. Границы согласовать до начала.
- Экран «Маршрутизация» — не ваш, это A29.
- Реестр ролей — не ваш, это A28.
- Нижняя панель экосистемы на макете — соседние продукты, здесь не реализуется.
- Правило честности без исключений.
- Тег `v0.1.1` не создавать.
## Критерии приёмки
1. Ветка в `origin`, `git status` чист.
2. Агент создаётся, удаляется, меняет назначение `Provider → Account → Model` из интерфейса; изменения переживают перезапуск.
3. Файл агента открывается и сохраняется; путь настоящий и существует.
4. Граф строится мышью, условия переходов задаются, циклы поддержаны, предел итераций виден и срабатывает.
5. Режимы LIVE и EDIT разделены.
6. Показатели дашборда взяты из настоящих источников; для каждого в отчёте указано, откуда именно.
7. Ни одного значения с макета в коде; проверено отдельно и описано.
8. Отсутствие данных показано как «Н/Д» с причиной; загрузка отличается от отсутствия.
9. `ruff check .` чисто; релизный гейт не ухудшен.
10. **Скриншоты:** главный экран в LIVE, в EDIT, инспектор агента, редактор ребра, файл агента.
11. Отчёт: `START_HEAD`, `FINAL_HEAD`, `origin/main`, `git status`, `X passed / Y skipped / Z failed`. На `main` сейчас **450 passed, 2 skipped**.
## Главное
Владелец должен с одного экрана видеть агентов, собирать из них workflow мышью, запускать и наблюдать исполнение вживую. Всё остальное в задании обслуживает это.
## Порядок сдачи
Передать точный `FINAL_COMMIT_SHA` по каждой сданной части.