# Execution Broker — эксплуатация Проверено: **2026-10-14** по исходникам, работающим контейнерам и локальным проверкам. Полная release-ready приёмка ещё не завершена. ## Развёрнутый комплект | Компонент | Текущее состояние | | --- | --- | | Репозиторий | `/Users/admin/Developer/execution-broker`, `codex/production-readiness`, HEAD `18b224a`; исходники закоммичены | | Broker | `execution-broker:a260a9a` | | Gateway | `execution-broker-gateway:a260a9a` | | Prism | `execution-prism-adapter:a260a9a` | | Smoke worker | `execution-broker-worker:a260a9a`; один immutable image pin в Broker и gateway | | OpenCode worker | `execution-broker-executors:rc27-go1269`; один immutable image pin в Broker и gateway; Go SDK 1.26.9 | | macOS bootstrap | Четыре пакета `*-a260a9a.tar.gz`; актуальные Runner/Callee, workflow присутствует, digest совпадает с конфигурацией | | Оба Balda | Upstream `2eed2ce8`, image `balda-balda:upstream-2eed2ce8`; подробности в [[personal/projects/balda/setup]] | | Release candidate | `0.1.0-rc.27`, исходники архивов `18b224a`; четыре платформенных архива и plugin в `dist/` | Docker socket и daemon group удалены из всех coding worker profiles. Docker administrative access остаётся только у gateway. Прежние несовпадения image pins устранены; перед обновлением незавершённых runs не было. ## Продолжения и одобрения В текущем upstream Balda generic webhook запускает изолированное задание и не продолжает исходную сессию. Старые callback routes Broker приостановлены; недоставленные cursors и история сохранены, доставкой они не считаются. Новый плагин rc27 использует `balda.state` и `balda.session.wait`: состояние попытки и возврат в исходную сессию сохраняются до Start/retry. Broker поддерживает `execution_lookup` и атомарное закрытие потерянного admission, включая поздний Start/retry. Функциональные race/restart-тесты прошли. **Managed upgrade плагина обоих Balda пока не завершён: остаётся rc26, применение rc27 ждёт отдельного разрешения автоматической проверки. Conversational delivery нового контура ещё не принята.** Настроенный Telegram approval bot получает вопрос исключительно в выбранных исходных сессиях; в остальных вопрос принадлежит исходной беседе. Модель не отвечает за владельца. Подлинный ответ передаётся через bound `execution_respond`; cancellation через `execution_cancel`. Повтор coding task — `execution_retry` с исходным run_id и новым ключом: Broker сохраняет точный task, Story, revision, executor и действительное прежнее одобрение. Изменение scope требует нового решения. ## Проверки - macOS ARM64 и Linux ARM64: полный race/vet; Callee adapter и security checks. - В обновлённом production-комплекте service run `run-edb2779a58d36fa10be2ebc6346b20bb`: Human → restart Broker/Prism → resume → пять артефактов с проверенными SHA256 → `succeeded`, `cleanup=done`; Task и Story закрыты через Prism. - Реальный Beads/Dolt: Story projection и replay. - Managed plugin lifecycle и native one-shot wait: исходная сессия, restart, новая generation без потери следующего wait. - Source/binary govulncheck: reachable vulnerabilities — 0; история gitleaks чистая. - Runtime checks rc27: Darwin ARM64 и Linux ARM64 — native; Darwin AMD64 — emulated. Linux AMD64 под эмуляцией показал непостоянный startup-сбой и исследуется. Native AMD64 не проверен. Это раздельные свидетельства. Сервисный fixture не доказывает, что модель в реальной беседе правильно выберет tools и доставит результат. ## Незавершённый объём | Область | Что остаётся | | --- | --- | | Balda boundary | Завершить plugin upgrade, принять реальный conversational run и outage/restart с видимым результатом | | Универсальные стеки | Декларативные Linux/macOS tooling profiles, версии и approved sources, probes, безопасное восстановимое изменение окружения | | Caches | Общие immutable tooling/Git caches; существующий Go SDK cache их не заменяет | | Артефакты между runs | Digest-bound inputs и retention holds | | Платформы и recovery | Native AMD64, устранение/классификация AMD64 emulation failure; off-host/Keychain loss recovery не подтверждён | Источник требований — `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 ``` Git commit сам по себе deployment не меняет. До обновления завершить runs/cleanup и сохранить согласованные state/config/image pins. Backup перед этим обновлением: `state/backups/20261014-before-rc27`. Проверены SHA256, 30 SQLite databases и inert restore шести компонентов, включая зашифрованный credential vault. Все три identity были освобождены и checkpointed. Master keys Keychain в backup отсутствуют; это проверка восстановления на том же хосте, не после его потери. Контракты и процедуры: `docs/protocol.md`, `docs/operations.md`, `docs/telegram-approvals.md`, `docs/recovery.md`, `docs/testing.md`. Существующие Balda сессии сохраняют capability snapshot; новая беседа принимает обновлённый плагин без изменения старой истории.