From dbd0da1252dce945dab9e20d5ce1c956de5ebf4e Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Fri, 2 Oct 2026 16:04:05 +0600 Subject: [PATCH] [2026-10-02] eagle: personal/plans/balda-callee-prism-plan.md --- personal/plans/balda-callee-prism-plan.md | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/personal/plans/balda-callee-prism-plan.md b/personal/plans/balda-callee-prism-plan.md index de3b23dc..8df4bf7a 100755 --- a/personal/plans/balda-callee-prism-plan.md +++ b/personal/plans/balda-callee-prism-plan.md @@ -1,20 +1,23 @@ # Balda + Prism/Beads + Execution Broker + Callee + Codex / Claude / OpenCode -> Обновлено: 2026-10-02 -> Статус на 2026-10-02: **public stable NO-GO.** Balda `v0.4.2+deepseekfix` и managed plugin RC10 отвечают существующему Mattermost `testuser`; chat-origin Story пока не принят. Docker+OpenCode+DeepSeek на чистом RC10 checkout прошёл полный изолированный Story `run-b1457f019946c05fa514fd1beedd8f46` с Human approval, review/quality, SHA артефактов и cleanup. Исправления Docker-образа и verifier включены только в локальную release-ветку `codex/claude-release-fixes` (`5792cff`); `main`, GitHub Actions и public release не тронуты. Live Docker-профиль и Mattermost-origin acceptance ещё не пройдены. -> Текущий проект и runbook: [[personal/projects/virfield]]. +> Обновлено: 2026-10-02 после push ветки workspace. +> Статус: **локальный Docker/OpenCode сценарий принят; live Balda → Broker → Prism/Mattermost и public stable ещё NO-GO.** Удалённая ветка `codex/broker-workspace-repos` проверена на GitHub: HEAD `f237556` (основная реализация `7eda0d6`). Удалённый `main` — `cb9d54b`; workspace-ветка в него не слита. +> Канонический смежный проект Virfield: [[personal/projects/virfield]]. Исторические результаты ниже сохраняются как хронология; текущие статус и приоритеты — в этом блоке. -### Приёмка Docker/OpenCode и точка продолжения — 2026-10-02 +### Текущий handoff — создание локального репозитория Broker -**Handoff завершения сессии:** больше не запрашивать отдельный репозиторий у ассистента. Оператор сам напишет Balda в Mattermost, какой новый repo создать или использовать для приёмки. Задача ассистента на следующей сессии — наблюдать фактический Balda → Broker запуск, чинить интеграцию по фактам и не подменять пользовательский сценарий synthetic Story. +**Реализовано и запушено:** MCP `execution_repository_create` и HTTP `POST /v1/workspaces` создают идемпотентный Git-репозиторий под настроенным `workspace_root` (на этом Mac — `/Users/admin/Developer`). Balda выбирает короткий `name_hint` сама, передаёт текущие `chat_id/topic_id`, получает `workspace://` и полный commit SHA, затем передаёт их в `execution_start`. Нельзя просить пользователя заранее создавать или называть репозиторий. Gateway проверяет принадлежность chat/topic, чистый checkout и точный revision; одноразовый worker получает mount только конкретного repo в `/workspace`. Docker worker остаётся с отдельным образом установленного OpenCode/Callee/Runner; issuer разрешает workspace IDs только при явном `--workspace-repositories`. Плагин содержит инструкцию Balda использовать новый инструмент. Код и тесты находятся в удалённой ветке `codex/broker-workspace-repos`. -**Прошло:** чистый RC10 checkout: полный `make check`, сборка Docker worker, запуск под UID 65532 с read-only root/no network/cap-drop/no-new-privileges. После исправления `.dockerignore`, установки C compiler для `go test -race` и уточнения протокола verifier, Story `run-b1457f019946c05fa514fd1beedd8f46` прошёл шесть ролей, approval, 5/5 executed checks, reviewer/quality, SHA шести артефактов, удаление контейнера и volume. Патч Go CLI отдельно прошёл `go test -race` и `go vet`. Итоговый image ID `sha256:95f83bedfd47e8335960d63021241a74e40849a628d1d5f6a08c5bbc1e3d03bd`; workflow digest `sha256:fd3f4db4b7be43288c9bffad3cc05f5a4aea802abb42b48b0e647380fc193a8d`. +**Проверено локально:** отдельный Broker/gateway/issuer создали `workspace://balda-go-cli-d427a5a9a939` в `~/Developer/balda-go-cli-d427a5a9a939`. Synthetic Story `run-7d10077b345641df09bb9af459c2dd7e` с OpenCode/DeepSeek прошёл роли, Human approval, verifier (9 выполненных проверок), reviewer, quality gate, 6 SHA-проверенных артефактов и cleanup `done`; финальный run — `succeeded`. В репозитории локальный commit `dbb2519`, checkout чистый, remote не добавлялся. Отдельная сборка `docker build --network=none` из созданного Dockerfile прошла на хосте; образ напечатал `Hello, Ada!`, пустое имя завершилось с ожидаемым кодом 2. `make check` прошёл в изолированной рабочей копии `state/isolated/broker-workspace-repos`. Тестовый стек остановлен, credential lease освобождён. -**Слито локально:** только пять файлов Docker/OpenCode в приватную publication ветку `codex/claude-release-fixes`, коммит `5792cff`. Это не merge в `main` и не push. GitHub Actions не запускать. Параллельные изменения Virfield в shared checkout не затронуты. Подробные сбои двух предыдущих прогонов и результаты: `/Users/admin/Developer/execution-broker/state/private-publication-audit-20261001/release-readiness-rc10.md`. +**Граница доказательства:** это прямой изолированный вызов Broker, не сообщение Balda из Mattermost и не Prism Story. Живые Broker/gateway/Balda на новый workspace-профиль и MCP tool не переключались. Пушнутая workspace-ветка основана на RC9 `6091a61`, а проверенные Docker/OpenCode runtime-исправления находятся отдельно в локальном `codex/claude-release-fixes` (`5792cff`): в запушенном Dockerfile worker пока нет Go/Python, `GOTMPDIR` и нужных runtime-настроек. Проверенный успешный прогон использовал собранный локально образ с этими исправлениями. Поэтому одного push `f237556` недостаточно для live-развёртывания. В логах успешного Story встречался ACP `fs/write_text_file: Method not found`; на результате этого прогона не сказалось, но совместимость ACP требует проверки. -**Не принято:** live Broker/gateway ещё не содержат принятый Docker+OpenCode worker для пользовательского Mattermost-сценария. Balda отвечает `testuser` в DM, но chat-origin Story до Broker, approval и доставки артефактов не проверен. Изолированное выполнение на существующем Callee не заменяет эту проверку. Производственный Docker sandbox, disposable upstream revoke, managed-host identity/TLS/rollback, clean-machine distribution и подпись/provenance также открыты. +**Следующие шаги:** -**План следующей приёмки:** оператор отправляет обычное сообщение Balda в Mattermost с просьбой создать/использовать нужный repo и собрать Go CLI через Docker + OpenCode + DeepSeek. После ответа Balda проверить, что выбран allowlisted Docker/OpenCode worker, Broker реально создал Story, approval прошёл, артефакты доставлены, cleanup выполнен. Только после этой приёмки сливать release-ветку в `main`. +1. Свести workspace-ветку с проверенными Docker/OpenCode изменениями `5792cff`, закрепить workflow digest и worker image ID, прогнать `make check` и Docker Story на точном объединённом commit. +2. Развернуть этот commit в live Broker/gateway: отдельный `linux-container` профиль с `workspace_root=/Users/admin/Developer`, mount корня только в gateway, workspace scope в issuer; обновить managed plugin Balda и проверить, что она видит `execution_repository_create`. +3. Попросить Balda в Mattermost создать новый проект **без имени repo и без готового checkout**. Проверить фактическую цепочку: MCP create → Prism Story → `execution_start` → Human approval в той же теме → события/артефакты в Mattermost/Prism → terminal cleanup и чистый локальный Git commit. +4. После live-приёмки проверить ACP-ошибку, CI точного SHA, release/rollback и оставшиеся security gates; только затем считать public stable готовым. ## 1. Цель