From 50afdf133e02274d1eee543c31ef22accc06de08 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Mon, 12 Oct 2026 23:34:05 +0600 Subject: [PATCH] [2026-10-12] eagle: personal/projects/balda/execution-broker.md personal/projects/balda/setup.md --- personal/projects/balda/execution-broker.md | 37 +++++++++++++++++++++ personal/projects/balda/setup.md | 2 ++ 2 files changed, 39 insertions(+) create mode 100644 personal/projects/balda/execution-broker.md diff --git a/personal/projects/balda/execution-broker.md b/personal/projects/balda/execution-broker.md new file mode 100644 index 00000000..eea47939 --- /dev/null +++ b/personal/projects/balda/execution-broker.md @@ -0,0 +1,37 @@ +# Execution Broker — текущий локальный контур + +Проверено: 2026-10-12, 23:32 Бишкек. Репозиторий: `/Users/admin/Developer/execution-broker`. + +## Состояние приёмки + +Исходники сохранены и запушены в `codex/telegram-approvals`, HEAD `91a592b`. Broker развёрнут как `execution-broker:production-91a592b`, `/healthz` возвращает `0.1.0-rc.23+91a592b`. Main пока `2ef0675`: перенос выполняется после сквозной проверки. Полный `make check` и Callee adapter checks прошли; последний коммит меняет только документацию. + +Сквозной прогон: `run-207e0e159b6bb53b2a383b130d70e49f`, Story `eb-bae3eaa3bfcaeb17678c1bc7`: Claude на disposable macOS 27 VM, новый локальный Go CLI. Успех, публикация кода и закрытие Story пока не подтверждены. Предыдущий прогон прошёл компиляцию и тесты, но был отклонён quality gate из-за отсутствующего контекста одобрения/detached checkout и неполной проверки README; эти требования исправлены в authored workflow. Реальная доставка причины ошибки и отдельного cleanup=done подтверждена в [исходном Mattermost-треде](https://mm.qentra.top/qentra/pl/akh5doko4frrmq9ea93ys9ay5y). + +## Конфигурация и перезапуск + +- Действующий Compose-файл: `/Users/admin/Developer/execution-broker/state/deploy/compose.production.json` (приватный, не коммитить). Это полный снимок действующей конфигурации вместо цепочки временных override. +- Broker config: `state/deploy/broker.json`; worker config: `state/deploy/worker.json`; bootstrap assets: `state/deploy/assets`. +- Контейнеры Broker/gateway/Prism: `execution-broker-broker-1`, `execution-broker-worker-1`, `execution-broker-prism-1`. Balda: `balda-mm-mac`. +- Применение выбранного образа: `docker-compose -f state/deploy/compose.production.json -p execution-broker up -d --no-deps broker` из каталога репозитория. Изменение Git само по себе ничего не разворачивает. +- Перед изменением активной конфигурации сохранять образ, config и согласованный Broker backup; не прерывать чужие задачи. + +## Одобрения + +`telegram_approvals.enabled=true` и выбранная исходная сессия: запрос только в `@balda_approval_bot`; при выключенном Telegram — в исходном канале Balda. Результат, причина сбоя и очистка приходят в исходный Mattermost-тред. Original `execution_respond` сохранён для восстановления. Токены находятся только в приватных secret-файлах. + +Бот отправляет одно читаемое сообщение с кнопками. Длинный план явно помечен как preview; полный файл отправляется только по кнопке «Полный план». Просмотр не одобряет задачу. Reply на сообщение с кнопками передаёт замечания к плану: до трёх доработок в том же run с повторным одобрением. Обычное сообщение или Reply на вложение не считается ответом. Для ACP permission нужно выбрать предложенный вариант, для остановки — «Отменить задачу». + +Это одобрения Broker workflows и worker ACP. Прямые ACP-запросы хостовых агентов Balda и operator grants для существующих папок/managed hosts — отдельные механизмы. Контекстный субагент для autoapproval остаётся плановой работой. + +## Автоматическое окружение и качество + +Новые Broker-managed проекты не требуют ручного allowlist в каждой VM: Broker выводит guest config для своей Git namespace, а run-bound Git capability ограничивает доступ конкретным проектом. Digest пакета и версии workflow проверяются до запуска. + +Go `1.26.9` Darwin ARM64 автоматически загружается Broker, проверяется по SHA256, кешируется и устанавливается только в disposable VM. Golden image и пользовательский Mac не меняются. SDK wrapper задаёт правильный GOROOT и доступные права каталогов. + +Detached HEAD — штатный checkout закреплённой ревизии; локальные коммиты сохраняются в `commits.bundle`. Одобрение — факт workflow journal, переданный subsequent roles, а не файл в репозитории. Quality gate требует выполненных проверок и отсутствия нерешённых findings. `exit_code` должен совпадать с `expected_exit_code` (по умолчанию 0); ожидаемая ошибка CLI допустима только с явным ожиданием и evidence. Сборка/test suites ожидают 0. + +`execution_diagnostics` проверяет checksum артефактов и извлекает bounded причину из `callee.log`, даже без `quality.json`. Cleanup, завершившийся во время отложенной доставки terminal, получает отдельное уведомление; более поздний receipt не скрывает его. + +Подробные контракты: `docs/telegram-approvals.md`, `docs/operations.md`, `docs/protocol.md`, `docs/testing.md`. Будущие host permissions, SSH command catalog, iPad и прочие миграционные задачи — отдельные планы в `docs/work-plan.md`; они не объявлены реализованными этой приёмкой. diff --git a/personal/projects/balda/setup.md b/personal/projects/balda/setup.md index 6cfa99c2..82238118 100755 --- a/personal/projects/balda/setup.md +++ b/personal/projects/balda/setup.md @@ -1,5 +1,7 @@ # Balda — актуальный локальный запуск +Execution Broker, Telegram-одобрения и текущая приёмка: [[personal/projects/balda/execution-broker|Execution Broker — текущий локальный контур]]. + _Проверено: 2026-10-09._ > Это основной runbook для текущей Balda на Mac. Старые документы про `balda-agent-valera-1`, Zulip и Kraken — исторические.