> **ОТМЕНЕНО 31.08.2026.** Работа передана Codex заданием > `2026-08-31-A48-codex-interface-by-mockup.md`. Исполнитель сидит на сервере, > где запущен хаб, и может сверять с макетом глазами. Antigravity за фронтенд > не берётся: два агента в одних файлах уже приводили к переключению ветки под > чужой работой. # Задание A46: вёрстка по макетам — возврат по A43 ## Дата поступления 2026-08-31 ## База `origin/main` (`81a58f6`) — там уже лежит A43. ``` git fetch origin --prune git checkout -b antigravity/a46-mockup-redo origin/main ``` В `main` напрямую не пушить. ## Порядок исполнения Два прохода: **Flash** реализует, **Pro** проводит аудит. Пункт **P0-4** написан для аудитора. Исполнитель работает на машине владельца, где хаб запущен и есть живой снапшот. Макеты — в `Desktop/фронтенд/`, файлы `1.1.png` … `7.1.png` и пояснения `1.txt`, `3.txt`. --- ## Почему возврат A43 закрыл холст и оставил вёрстку нетронутой. Владелец поставил сборку и написал: «интерфейс вообще не изменился, какой был, такой и остался. Зачем тогда было задание на изменение по макетам?» Он прав. Вот что изменил A43: ``` app.js +297 шесть карточек показателей, обвязка холста workflow.js +136 панорамирование, зум колесом index.html +8 workflow.css 15 потолок 430 px снят, слои холста style.css НЕ ОТКРЫВАЛСЯ НИ РАЗУ ``` `style.css` — это и есть внешний вид: сетка, отступы, типографика, карточки, палитра. Пункт P0-2 задания A43 требовал привести экраны к макетам именно по этим свойствам. Сделать это, не тронув файл со стилями, невозможно. Скриншотов «до и после», которых требовал критерий приёмки 3, в ветке нет. Работа была принята по прохождению тестов, а тесты внешний вид не проверяют. **Холст переделывать не нужно.** P0-1 выполнен: панорамирование, зум колесом, снятый потолок высоты — всё работает и остаётся. --- ## P0-1. Расхождения с макетом `1.1.png` Сверено ревьюером: макет против живой сборки `81a58f6` на сервере владельца. **Шапка.** В макете: поиск с подсказкой `Ctrl + K`, колокольчик со счётчиком, шестерёнка, карточка пользователя (инициалы, имя, команда). В сборке вместо этого две кнопки — «Обновить всё» и «Добавить аккаунт». **Логотип и подпись.** В макете вензель, «HERMES HUB» и вторая строка «Крона • Бизнес-экосистема». В сборке — значок молнии и «Multi-Account Router». **Левое меню.** В макете иной набор и оформление пунктов, внизу блок с эмблемой и текстом про единый визуальный язык. В сборке внизу — служебная строка про Live API и номер сборки. **Панель инструментов холста.** В макете вертикальная панель слева внутри холста: курсор, добавить узел, связь, рамка, показать, удалить. В сборке отсутствует полностью. **Карточки узлов.** В макете: иконка, имя, файл `.md`, строка «модель • аккаунт», статус точкой. В сборке: три строки текста, обрезанные многоточием, без модели и аккаунта. **Подписи связей.** В макете подписи `SUCCESS`, `REVIEW_PASSED`, `REVIEW_FAILED` разнесены и подкрашены, возвраты идут красным пунктиром. В сборке подписи налезают на карточки узлов и режутся: владелец видит «ТАНОВКА ЗАД» и «РАЙПРИЁМКА». Центрирование подписей ревьюер уже починил (`text-anchor` в `workflow.css`), и эта правка на месте. Режут их **сами карточки узлов, которые рисуются поверх**, и слишком узкий промежуток между узлами. Лечится порядком слоёв и расстоянием в раскладке, а не стилем текста. **Нижний ряд.** В макете три карточки: «Последние события» с временем и цветными бейджами, «Статистика workflow» с кольцевой диаграммой, «Активные задачи». В сборке — «Последние события» и «Управление LIVE». **Инспектор.** В макете это основная панель: вкладки «Основное», «Модель», «Инструкции», «Инструменты», «Память», «История»; поля статуса, текущей задачи, итерации, последнего запуска, времени выполнения, успешности; блок «Конфигурация исполнения» с провайдером, аккаунтом, моделью, температурой, лимитом токенов и таймаутом; блок «Agent File»; инструменты чипами; быстрые действия кнопками. В сборке — пустая заглушка «Выберите агента на графе». **Палитра и рамки.** Тёмно-зелёный фон с золотыми акцентами и тонкими рамками. Это то, что задаётся в `style.css`. ## P0-2. Что делать с элементами, которых нечем наполнить Часть макета опирается на данные, которых в снапшоте может не быть. 1. **Ничего не выдумывать.** Нет данных — `Н/Д` с причиной, как принято в проекте. Нарисовать кольцевую диаграмму с числом «42» из макета — дефект, а не выполнение задания. 2. **Модель и аккаунт на карточке узла в снапшоте есть** — брать оттуда, а не подписывать примерами из макета. 3. **Версию из макета не переносить.** Там `v2.9.0`, в проекте `0.1.1`, и она заморожена намеренно. 4. **Нижняя панель других приложений экосистемы** (Planner, Journal, Finance и прочие) — этих приложений не существует. Не делать и **назвать пропущенным** в отчёте, а не рисовать неработающие кнопки. 5. Всё остальное, что упирается в отсутствующие данные, — так же: реализовать оформление, показать пустое состояние честно, перечислить в отчёте. ## P0-3. Скриншоты — это и есть сдача работы Владелец сравнивает глазами. Отчёт без картинок принят не будет. 1. **Список расхождений по каждому экрану** — до начала работы, приложить. 2. **Скриншот до и после по каждому экрану** — обязательно. Это критерий, по которому A43 провалился. 3. **Рядом с каждой парой — фрагмент макета**, к которому приводили. 4. Пройти все макеты `1.1` … `7.1`, а не только первый. 5. **Три темы** — светлая, средняя, тёмная — проверить на каждом экране. ## P0-4. Аудит вторым проходом Проверяющему: в прошлый раз работа была принята без единого взгляда на экран. 1. **Открыть хаб и посмотреть.** Не отчёт, не тесты — экран. 2. **Проверить, что `style.css` действительно изменён** и изменения относятся к вёрстке, а не косметике в одну строку. 3. **Сверить скриншоты с макетами** попарно. 4. **Убедиться, что выдуманных данных нет**: ни одного числа из макета в живом интерфейсе. 5. **Холст не сломан**: панорамирование, зум колесом, «вписать» работают как после A43. 6. **Подписи связей читаются** на всех масштабах и не перекрываются карточками. 7. **Побочные изменения** объяснить. 8. **Пропущенный пункт назвать пропущенным.** --- ## Ограничения - **Без сборки, без npm, без фреймворка** — решение зафиксировано в `docs/web-api/CONTRACT.md` §1. - Python не трогать. - Холст A43 не переделывать, только доводить. - Учётные данные и `~/.hermes/agy_profiles/` не трогать. - Версию `0.1.1` не поднимать. - Правило честности без исключений. ## Критерии приёмки 1. Ветка в `origin`, `git status` чист. 2. `style.css` изменён; вёрстка экранов приведена к макетам. 3. По каждому экрану приложены скриншоты до и после рядом с фрагментом макета. 4. Пройдены все макеты `1.1` … `7.1`. 5. Инспектор агента реализован по макету; отсутствующие данные показаны как `Н/Д` с причиной. 6. Карточки узлов показывают модель и аккаунт из снапшота. 7. Подписи связей не перекрываются карточками узлов; проверено на нескольких масштабах. 8. Панель инструментов холста реализована либо названа пропущенной с причиной. 9. Ни одного числа из макета в живом интерфейсе. 10. Три темы работают на всех экранах. 11. `ruff check .` чисто; релизный гейт не ухудшен. 12. Отчёт: `START_HEAD`, `FINAL_HEAD`, `origin/main`, `git status`, `X passed / Y skipped / Z failed`. На `origin/main` сейчас **496 passed**. ## Главное Владелец полдня ждал сборку, поставил её на две машины и увидел прежний интерфейс. Холст стал лучше, но он один экран из семи. Задание закрывает то, что в A43 просто не начинали: вёрстку по макетам. И сдаётся оно скриншотами, потому что проверить его иначе нельзя — тесты этого не видят, что и показал прошлый заход. ## Порядок сдачи Передать точный `FINAL_COMMIT_SHA`.