7.3 KiB
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-файлах.
После выбора проверенного образа применять из репозитория:
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; новая беседа принимает обновлённый плагин без изменения старой истории.