Владелец передал готовый дизайн: брендбук с тремя темами, макеты главного экрана, маршрутизации и остальных разделов, логотипы. Плюс список из двенадцати субагентов с расписанными обязанностями. Объём не помещается в одно задание, поэтому разделено на три с явными границами по файлам: 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>
13 KiB
Задание 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. Модель агента и файл агента
Разделы 5–8 и 13 ТЗ.
Агент — объект с идентификатором, ролью из реестра A28, назначением Provider → Account → Model, конфигурацией исполнения (температура, предел токенов, таймаут), набором инструментов и файлом агента.
Файл агента — markdown в agents/, на макете agents/coder-2.md. Его видно и правят прямо из инспектора.
Требования:
- Создание, удаление и изменение назначения агента — из интерфейса.
- Файл агента открывается и сохраняется; путь показывается настоящий и существующий. Каждый путь в интерфейсе обязан существовать — инструкция уже однажды вела на несуществующий
launcher/main.py, и это стоило раунда. - Удаление агента, участвующего в маршруте или в графе, — с предупреждением о последствиях, а не молча.
P0-2. Граф workflow
Разделы 14, 16–21, 24, 25 ТЗ. Это ядро задания.
Узлы — агенты, рёбра — переходы с условиями. На макете видны SUCCESS, REVIEW_PASSED, REVIEW_FAILED; сплошные линии — движение вперёд, пунктирные красные — возвраты.
Требуется:
- Визуальное соединение агентов мышью, редактор ребра с условием перехода.
- Последовательные и циклические маршруты:
Кодер 1 → Кодер 2 → Ревьюер, возврат на доработку, повторная итерация. - Защита от бесконечного выполнения — раздел 24. Предел итераций виден пользователю (на макете «Итерация: 2 / 5»), достижение предела — явное событие, а не тихая остановка.
- Режимы LIVE и EDIT — раздел 15. В LIVE граф отражает исполнение, в EDIT правится структура. Смешивать нельзя.
- Мини-карта, масштаб, легенда состояний — всё это на макете есть.
Отменённое перетаскивание возвращает узел на место, а не теряет его.
P0-3. LIVE-мониторинг и события
Разделы 22, 23, 26, 29–31 ТЗ.
Состояния агента: ожидает, работает, проверяет, ошибка, завершено. На макете подписаны цветами из брендбука.
Требуется: текущая задача агента, номер итерации, время выполнения, последние события с отметкой времени, журнал выполнения workflow, настоящие ошибки провайдеров с их текстом.
P0-4. Правило отсутствия данных — раздел 28 ТЗ
Владелец вынес это в отдельный раздел, и не случайно. Правило проекта, оплаченное несколькими раундами:
Ни одного числа, статуса, имени модели или метрики без измерения. Нет данных — «Н/Д» с причиной. Идёт загрузка — так и сказать; загрузка и отсутствие данных различаются.
На макете 1.1.png стоят демонстрационные значения: 12 активных задач, 3.42 с, 1.42M токенов, 94.2%, 42 выполненных, почты account-01…04. Это иллюстрация. Ни одно из них не должно попасть в код.
История: в прошлых раундах уже находили выдуманные проценты квот и выдуманные коды устройства GRK-7842 и CDX-9104, причём тест требовал их наличия, то есть защищал выдумку от исправления. Здесь поверхность для такой ошибки самая большая за всё время проекта.
P0-5. Порядок сдачи по частям
Задание крупное, и сдавать его одним куском не нужно. Разумное деление, каждая часть работоспособна сама по себе:
- Модель агента, файл агента, инспектор — без графа.
- Граф в режиме EDIT: узлы, рёбра, условия, сохранение.
- Режим LIVE: состояния, события, итерации, журнал.
- Дашборд: показатели и панели из настоящих источников.
После каждой части — рабочее приложение. Незаконченная часть обозначается в интерфейсе честно, а не рисуется заглушкой.
P0-6. Самопроверка перед сдачей
- Запустить и посмотреть. Импорт и зелёные тесты ничего не доказывают: в этом проекте уже был случай, когда модуль импортировался, тесты проходили, а приложение не запускалось вовсе.
- Проверить все три темы, если A29 к тому моменту влит.
- Проверить каждый путь и команду, показанные в интерфейсе.
- Отдельно пройти по новому коду и убедиться, что ни одно значение с макета не стало литералом.
- Пропущенный пункт назвать пропущенным. Это принимается; необъявленный пропуск — нет.
Ограничения
- Десктоп (
router/ui/**) не трогать: он выводится из обращения. - Без сборки, без npm, без фреймворка. Решение обосновано в контракте.
- Действия только через
action_handlerиPOST /api/action; новые — с правкой контракта. - A29 работает в тех же файлах. Разделение: A29 —
style.css, темы, экран маршрутизации; A30 — главный экран и граф. Границы согласовать до начала. - Экран «Маршрутизация» — не ваш, это A29.
- Реестр ролей — не ваш, это A28.
- Нижняя панель экосистемы на макете — соседние продукты, здесь не реализуется.
- Правило честности без исключений.
- Тег
v0.1.1не создавать.
Критерии приёмки
- Ветка в
origin,git statusчист. - Агент создаётся, удаляется, меняет назначение
Provider → Account → Modelиз интерфейса; изменения переживают перезапуск. - Файл агента открывается и сохраняется; путь настоящий и существует.
- Граф строится мышью, условия переходов задаются, циклы поддержаны, предел итераций виден и срабатывает.
- Режимы LIVE и EDIT разделены.
- Показатели дашборда взяты из настоящих источников; для каждого в отчёте указано, откуда именно.
- Ни одного значения с макета в коде; проверено отдельно и описано.
- Отсутствие данных показано как «Н/Д» с причиной; загрузка отличается от отсутствия.
ruff check .чисто; релизный гейт не ухудшен.- Скриншоты: главный экран в LIVE, в EDIT, инспектор агента, редактор ребра, файл агента.
- Отчёт:
START_HEAD,FINAL_HEAD,origin/main,git status,X passed / Y skipped / Z failed. Наmainсейчас 450 passed, 2 skipped.
Главное
Владелец должен с одного экрана видеть агентов, собирать из них workflow мышью, запускать и наблюдать исполнение вживую. Всё остальное в задании обслуживает это.
Порядок сдачи
Передать точный FINAL_COMMIT_SHA по каждой сданной части.