Files
obsidian-vault/personal/projects/balda/execution-broker.md
T

9.3 KiB
Raw Blame History

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 под эмуляцией нестабилен: два сбоя на 20 запусков; полный gate не принят. 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 под эмуляцией
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-файлах.

После выбора согласованного проверенного комплекта применять из репозитория:

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.