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

67 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Execution Broker — эксплуатация
Проверено: **2026-10-15** по исходникам, работающим контейнерам и локальным проверкам. Полная 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-тесты прошли. **rc27 активирован у обоих Balda, Enabled=true, Drifted=false. Официальная переустановка сохранила plugin data, старые revisions/catalog snapshots и прежний marketplace. Существующие сессии не сбрасывались. 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; новая беседа принимает обновлённый плагин без изменения старой истории.