# Execution Broker — эксплуатация Проверено: **2026-10-15** по исходникам, работающим контейнерам и реальным запускам. Полная release-ready приёмка ещё не завершена. ## Развёрнутый комплект | Компонент | Текущее состояние | | --- | --- | | Репозиторий | `/Users/admin/Developer/execution-broker`, `codex/production-readiness`; код работающего комплекта — `dcb6eba` | | Broker | `execution-broker:dcb6eba`, версия `0.1.0-rc.30` | | Gateway | `execution-broker-gateway:dcb6eba`, версия `0.1.0-rc.30` | | Prism | `execution-prism-adapter:dcb6eba`, версия `0.1.0-rc.30` | | Smoke worker | `execution-broker-worker:dcb6eba`; один SHA256 image pin в Broker и gateway | | OpenCode worker | `execution-broker-executors:dcb6eba`; один SHA256 image pin в Broker и gateway, Go SDK 1.26.9 | | macOS bootstrap | Четыре пакета `*-dcb6eba.tar.gz` с Runner/Callee этого комплекта | | Оба Balda | Upstream `ee312646`, image `balda-balda:upstream-ee312646-b1`; подробности в [[personal/projects/balda/setup]] | | Managed plugin | rc30 у обоих, Enabled=true, Drifted=false; прежние plugin data, revisions и marketplace сохранены | | Release archives | `0.1.0-rc.30`, source `dcb6eba`; четыре платформенных архива и plugin в `dist/`, SHA256 проверены | Docker socket и daemon group отсутствуют у coding workers. Административный доступ к Docker остаётся у gateway. Основные модели, авторизации и история обоих Balda сохранены; сессии не сбрасывались. ## Инструменты и артефакты `execution_profiles` показывает разрешённые tooling profiles. Подготовка окружения задаётся декларативно: platform, версии, approved packages/archives, SHA256 и readiness probes. Новый стек требует подходящего operator profile; Makefile сам по себе не устанавливает зависимости. В текущем контуре Go 1.26.9 задан стандартным profile для Linux OpenCode и четырёх macOS workers. Специального Go installer в Runner больше нет. Tooling cache хранит проверенные immutable archives, ограничен 4 GiB; фактические версии сохраняются в `tooling.json`. Временные build products выполняются внутри приватного каталога run; общий Linux `/tmp` остаётся `noexec`. Artifact inputs реализованы и развёрнуты через `execution/v2`: до восьми файлов, суммарно до 1 GiB, точные source run/name/SHA256 и исходная сессия. Source run должен быть терминальным с `cleanup=done`; transactional retention holds защищают принятые зависимости. Передача возобновляется до начала исполнения. ## Продолжения и одобрения Generic webhook в текущем Balda запускает изолированное задание. Продолжение исходной сессии использует `balda.state` и `balda.session.wait`; попытка и наблюдатель сохраняются до Start/retry. Потерянный admission восстанавливается через `execution_lookup`, отмена закрывает и поздний идентичный запрос. Прежние callback routes Broker приостановлены; недоставленные cursors сохранены. Telegram approval bot получает вопрос только для явно выбранных сессий; иначе вопрос принадлежит исходной беседе. Ответ владельца передаётся через bound `execution_respond`; модель не подменяет его. `execution_retry` сохраняет точный task, Story, revision, executor и действительное одобрение; новый scope требует нового решения. Managed lifecycle и native wait restart проверены на актуальном upstream. Реальный conversational run с моделью и доставкой в исходную беседу остаётся отдельным незавершённым gate. Существующие сессии принимают новый capability snapshot через обычный `/reset`; обновление само их не сбрасывает. ## Проверки - Полные race/vet Broker на macOS ARM64 и Linux ARM64; Callee adapter, source/binary govulncheck — 0 reachable vulnerabilities, secret scan — без находок. - Свежий Balda upstream: полный race, lint и architecture gate; managed plugin lifecycle и native wait restart. - Production service acceptance: настоящий Callee Human → restart Broker/Prism → resume → пять артефактов с проверенными SHA256 → `succeeded`, `cleanup=done`; Task и Story закрыты. - Настоящая macOS VM: verified Go archive через scoped tunnel, `tooling.json`, один XCTest без ошибок и сохранённый xcresult; семь артефактов с проверенными SHA256, VM cleanup подтверждён. - Реальные Make/C, Python, Node и JVM проекты на macOS и Linux; Docker builder/Runner/Callee cache hit и изменение Node SDK; отдельная проверка реального `go run` при `/tmp noexec`. - Artifact input transfer/restart/cleanup и установка из Linux ARM64 release archive без исходников и Go прошли. - Runtime archives: Darwin ARM64 и Linux ARM64 — native, Darwin AMD64 — emulated. Linux AMD64 прошёл полный emulated gate через отдельный QEMU и 30/30 startup-проверок. Штатная Linux AMD64 эмуляция нестабильна: два сбоя на 20 запусков. Native AMD64 не проверен. Сервисные fixtures не подтверждают выбор tools и доставку результата моделью в настоящей беседе. ## Незавершённый объём | Область | Что остаётся | | --- | --- | | Balda boundary | Реальный conversational run и outage/restart с видимым результатом в исходной беседе | | Runtime tooling | Ограниченное durable изменение окружения посреди исполнения с безопасным checkpoint/resume | | Git cache | Отдельный общий immutable object cache по repository/commit; существующие managed mirrors его не заменяют | | Платформы | Native AMD64 acceptance; штатная Linux AMD64 эмуляция остаётся непринятой, отдельный QEMU не заменяет native gate | | Recovery | Потеря хоста/Keychain не проверена; подтверждён только drained backup/restore на том же хосте | Источник требований — `docs/work-plan.md`. iPad, прикладные UI/PR workflows и права Obsidian принадлежат вызывающему проекту или Balda. ## Конфигурация и восстановление Приватный Compose: `state/deploy/compose.production.json`; конфиги `broker.json`, `worker.json`, assets в `state/deploy/assets`. Токены находятся только в secret-файлах. После выбора согласованного проверенного комплекта применять из репозитория: ```bash docker-compose -f state/deploy/compose.production.json -p execution-broker up -d --no-build worker broker prism ``` До смены комплекта завершить runs/cleanup, сохранить state/config/image pins и исходные immutable assets. Сам Git commit deployment не меняет. Backup перед текущим обновлением: `state/backups/20261015-before-rc30`. Проверены SHA256, 31 SQLite database и inert restore шести компонентов, включая encrypted credential vault. Все три credential identity были освобождены и checkpointed. Restore не запускал сервисы; master keys Keychain в backup отсутствуют. Это подтверждение восстановления на том же хосте. Отдельные state/home backups обоих Balda: `state/balda-upstream-rollout-20261015/`. Рабочие account/config hashes после обновления совпали с исходными. Приватные отчёты проверок Broker: `state/broker-rc30-rollout-20261015/`; они не входят в release archives. Контракты и процедуры: `docs/protocol.md`, `docs/tooling.md`, `docs/operations.md`, `docs/telegram-approvals.md`, `docs/recovery.md`, `docs/testing.md`.