[2026-10-02] eagle: personal/plans/balda-callee-prism-plan.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-02 21:48:24 +06:00
1 parent baa5521d0b
commit 57b7af5529
1 file changed
+46
+46
View File
@@ -1,3 +1,49 @@
# Live state — Broker/Balda workspace run — 2026-10-02 21:42 Бишкек
Статус: **live Balda → Broker продвинут дальше: local-git checkout, Docker network, status webhook и writable workspace root исправлены; нужен повторный Mattermost `/execute` для end-to-end приёмки. Public stable ещё NO-GO.**
## Что произошло
Пользователь гонял Mattermost-задачу `go-cli-test/go-cli-test2` через Balda. Первые отказы были не пользовательскими: Broker требовал HTTPS origin/allowlist, Docker worker не мог checkout локальный Broker Git remote, OpenCode+DeepSeek не был доступен в Linux-container профиле, статусы не возвращались в текущий thread, а `developer` root был смонтирован в Broker как read-only. Это live-инцидент интеграции, а не ошибка пользователя.
## Исправлено в live
1. **Local Git checkout.** Для `/local-git/` URL Runner больше не делает shallow fetch, потому что dumb HTTP не поддерживает `--depth=1`; local Git object writer переведён на SHA-1. Проверенный local-git revision для `go-cli-test`: `b6ea84fcbacdd509aec7ce43efe1fe3aa044abe0`.
2. **Docker/OpenCode/DeepSeek.** Добавлен Linux worker profile `linux-opencode-deepseek`; worker умеет создавать disposable контейнеры в `execution-broker_control`, чтобы они видели Broker как `http://broker:7791`. Образ worker/executor обновлён до `sha256:5dd416c40c69821c53f9cd5436238cc145da9ea0c746a03fb282004914ecfe55`.
3. **Status delivery.** Broker добавлен в обе сети `execution-broker_control` и `balda-mm-mac_default`; Balda config получил webhook `/webhook/execution-acceptance-current` на текущий Mattermost thread `7bjw4g7o1jdsbmjbqd649xxgaw:c96xswjbufnj7rtm3exny81xwc`; Broker notification route временно wildcard `chat_id="*", topic_id="*"` на этот webhook, чтобы не зависеть от смены Mattermost session id.
4. **Workspace root creation.** Live override `state/deploy/compose.chat-login.yaml` исправлен с `/Users/admin/Developer:/workspace-roots/Developer:ro` на `rw`; Broker container пересоздан вручную с writable mount. Проверено внутри Broker: `/workspace-roots/Developer` показывает `RW=true`, временная папка создаётся и удаляется.
5. **Container topology.** `execution-broker-broker-1` слушает `:7791`, `execution-broker-worker-1` в `execution-broker_control`, `balda-mm-mac` в `balda-mm-mac_default`; Broker имеет alias `broker` в обеих сетях.
## Проверено
1. `git fetch` + `git checkout` из disposable executor container по `http://broker:7791/local-git/0f18a21313cad59068830293b7817883.git` на commit `b6ea84fcbacdd509aec7ce43efe1fe3aa044abe0` прошли успешно.
2. Изнутри Broker успешно создана и удалена probe-папка в `/workspace-roots/Developer`; ошибка `read-only file system` для создания `go-cli-test2` должна быть снята.
3. `env GOCACHE=/private/tmp/eb-go-cache go test ./internal/store ./internal/config ./internal/worker` прошёл.
4. Unit tests `internal/broker` на notification path не были полностью прогнаны в sandbox: `httptest` bind на loopback запрещён текущим окружением; это test-environment limitation, не runtime-доказательство.
## Открыто прямо сейчас
1. Повторить из Mattermost: `@balda /execute в репо go-cli-test2 собери Go CLI проект через Docker + OpenCode + DeepSeek`.
2. Убедиться, что Balda больше не просит ручной `mkdir`, HTTPS origin или ручной status; ожидаемый flow: request/grant folder access → local managed Git remote → `execution_start` → Docker/OpenCode/DeepSeek run → terminal status в той же теме.
3. Если следующий run снова падает, смотреть новый `run_id`, Broker events и Balda webhook logs; не ретраить старый failed run.
4. После успешной live-приёмки убрать временный wildcard notification route и заменить его нормальной маршрутизацией статуса по фактическому Mattermost session/thread.
5. Закрепить все live hotfixes в репозиторной конфигурации/compose, чтобы `docker-compose up` не вернул read-only mount или старые network settings.
## Файлы/настройки, затронутые live-фиксами
- `/Users/admin/Developer/execution-broker/internal/runner/runner.go` — non-shallow fetch для local Git remotes.
- `/Users/admin/Developer/execution-broker/internal/broker/repository_local.go` — SHA-1 Git object IDs.
- `/Users/admin/Developer/execution-broker/internal/config/config.go` — `container_network`, wildcard notification validation и workspace config fields.
- `/Users/admin/Developer/execution-broker/internal/worker/worker.go` — worker-created containers получают configured Docker network.
- `/Users/admin/Developer/execution-broker/internal/store/store.go` — wildcard notification lookup.
- `/Users/admin/Developer/execution-broker/deploy/compose.yaml` — Broker alias `broker` в control/balda networks.
- `/Users/admin/Developer/execution-broker/state/deploy/broker.json` — live worker image/network и notification route.
- `/Users/admin/Developer/execution-broker/state/deploy/worker.json` — live worker image/network.
- `/Users/admin/Developer/execution-broker/state/deploy/compose.chat-login.yaml` — Developer root теперь `rw` для Broker.
- `/Users/admin/Docker/balda-mm-mac/config/config.yaml` — добавлен webhook route `execution_acceptance_current`.
---
# Balda + Prism/Beads + Execution Broker + Callee + Codex / Claude / OpenCode
> Обновлено: 2026-10-02 после push ветки workspace.