[2026-10-15] eagle: personal/projects/balda/balda.md personal/projects/balda/execution-broker.md personal/projects/balda/setup.md work/projects/vscode-migration/tech-design-xcode-build-server.md work/projects/vscode-migration/xcode-build-server.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-15 12:36:46 +06:00
1 parent ed60df36f8
commit a364f53bbb
5 files changed
+13 -10

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
# Balda — актуальный обзор
Проверено: **2026-10-15**. Balda принимает задачи из чата и связывает provider execution, сессии и интеграции. Текущий локальный запуск — **два инстанса на Mac, Mattermost, Codex ACP**: `balda-mm-mac` и `balda-mm-eagle`. Оба работают на upstream `ee312646`; Eagle имеет те же основные MCP и дополнительный Asana readonly. Точные версии и проверенные границы продолжений — в карточке запуска.
Проверено: **2026-10-15**. Balda принимает задачи из чата и связывает provider execution, сессии и интеграции. Текущий локальный запуск — **два инстанса на Mac, Mattermost, Codex ACP**: `balda-mm-mac` и `balda-mm-eagle`. Оба работают на source `046cc9c9` (upstream `d13035ab` с исправлением контекста канала); Eagle имеет те же основные MCP и дополнительный Asana readonly. Точные версии и проверенные границы продолжений — в карточке запуска.
## Источники текущего состояния
+3 -3
View File
@@ -13,7 +13,7 @@
| Smoke worker | `execution-broker-worker:fee5409`; один SHA256 image pin в Broker и gateway |
| OpenCode worker | `execution-broker-executors:fee5409`; один SHA256 image pin в Broker и gateway, Go SDK 1.26.9 |
| macOS bootstrap | Четыре пакета `*-fee5409.tar.gz` с Runner/Callee этого комплекта |
| Оба Balda | Upstream `ee312646`, image `balda-balda:upstream-ee312646-b1`; подробности в [[personal/projects/balda/setup]] |
| Оба Balda | Source `046cc9c9`: upstream `d13035ab` + исправление контекста канала; image `balda-balda:channel-context-046cc9c9`; подробности в [[personal/projects/balda/setup]] |
| Managed plugin | rc32 у обоих, Enabled=true, Drifted=false; прежние plugin data, revisions и marketplace сохранены |
| Release archives | `0.1.0-rc.32`, source `fee5409`; четыре платформенных архива и plugin в `dist/`, SHA256 проверены |
@@ -33,7 +33,7 @@ Artifact inputs реализованы и развёрнуты через `execu
## Продолжения и одобрения
Generic webhook в текущем Balda запускает изолированное задание. Продолжение исходной сессии использует `balda.state` и `balda.session.wait`; попытка и наблюдатель сохраняются до Start/retry. Потерянный admission восстанавливается через `execution_lookup`, отмена закрывает и поздний идентичный запрос. Прежние callback routes Broker приостановлены; недоставленные cursors сохранены.
Generic webhook в текущем Balda запускает изолированное задание. Канонический канал исходной сессии остаётся Mattermost; Telegram approval не меняет её locator. Продолжение исходной сессии использует `balda.state` и `balda.session.wait`; попытка и наблюдатель сохраняются до Start/retry. Потерянный admission восстанавливается через `execution_lookup`, отмена закрывает и поздний идентичный запрос. Прежние callback routes Broker приостановлены; недоставленные cursors сохранены.
Telegram approval bot получает вопрос только для явно выбранных сессий; иначе вопрос принадлежит исходной беседе. В текущем контуре `telegram_approvals.timeout_seconds=1800`: окно ответа — 30 минут. `min_run_ttl_seconds=3600` требует для новых запусков выбранных сессий общий TTL не меньше часа; более короткий запрос получает `approval_window_too_short` до admission. TTL включает очередь, планирование, ожидание ответа и исполнение; исходный deadline остаётся жёсткой границей и при появлении вопроса не продлевается. Сообщение сначала отправляется без кнопок, message ID сохраняется в state, затем публикуются controls. Рестарт завершает прерванную публикацию или renewal без повторного callback. Устаревшая копия очищается при callback до сохранения update cursor. Ответ владельца передаётся через bound `execution_respond`; модель не подменяет его. `execution_retry` сохраняет точный task, Story, revision, executor и действительное одобрение; новый scope требует нового решения. Для environment checkpoint используется `execution_reconfigure`; обычный retry таких runs запрещён.
@@ -42,7 +42,7 @@ Managed lifecycle и native wait restart проверены на актуаль
## Проверки
- Полные 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.
- Развёрнутый Balda source `046cc9c9`: полный race, lint и architecture gate; SQLite/PostgreSQL migration regressions, оба migration validators, managed plugin lifecycle и native wait restart. Существующий Codex thread продолжился с исправленным Mattermost-контекстом.
- Production service acceptance: настоящий Callee Human → restart Broker/Prism → resume → шесть артефактов с проверенными SHA256 и provenance Git cache → `succeeded`, `cleanup=done`; Task и Story закрыты.
- Настоящая macOS VM: verified Go archive через scoped tunnel, `tooling.json`, один XCTest без ошибок и сохранённый xcresult; восемь артефактов с проверенными SHA256, включая `repository.json`, VM cleanup подтверждён.
- Реальные Make/C, Python, Node и JVM проекты на macOS и Linux; Docker builder/Runner/Callee cache hit и изменение Node SDK; durable смена окружения с двумя рестартами и одним выполнением внешнего действия; отдельная проверка реального `go run` при `/tmp noexec`.
+4 -2
View File
@@ -11,8 +11,8 @@
| Хост / контейнер | Mac / `balda-mm-mac` |
| Канал | Mattermost |
| Provider | `codex`, type `codex_acp`, reasoning effort `medium` |
| Образ обоих инстансов | `balda-balda:upstream-ee312646-b1`, image ID `sha256:2f2294dd0ae3061f5e1f74f15d002f10a3c4075aaf57d6bcf97b57c9f6b95a4f` |
| Balda source | `ee3126460a8f6e2667e9941f4ef68c5f5872b216`; Linux ARM64 binary SHA256 `945763163b29cd6190d21775c4ee46c7c54d1a98cea59f7109c30dbe5b6f460c` |
| Образ обоих инстансов | `balda-balda:channel-context-046cc9c9`, image ID `sha256:59acd17a994526d5122a115da57ab5829f5ff16f4ecfc10ee0a69ba0ee9be469` |
| Balda source | `046cc9c90960d57e2964110710192d7b97a6692c`: upstream `d13035ab` + закоммиченное исправление контекста канала; Linux ARM64 binary SHA256 `4636dccfcc2d32a8bae8d693af42f5638a7bc775e4062f04323a9e52d4f08e75` |
| Compose | `/Users/admin/Docker/balda-mm-mac/docker-compose.yml` |
| Активный конфиг | `/Users/admin/Docker/balda-mm-mac/config/config.yaml` |
| State / plugins | `/Users/admin/Docker/balda-mm-mac/state` |
@@ -31,6 +31,8 @@ Eagle работает на том же Mac в `balda-mm-eagle`; Compose, config
## Продолжение задач
Тип канала берётся из канонической привязки сессии. Для Mattermost он остаётся `mattermost`, включая native waits и возврат результата; `human.delivery_channel=telegram` меняет только доставку одобрения. SQLite/PostgreSQL migration исправляет прежний сгенерированный Telegram-заголовок в сохранённых ACP instructions без `/reset`, сохраняя provider thread, capability snapshot и историю. На основном инстансе исправлены семь Mattermost-контекстов, все 1943 прежних события сохранены; у Eagle сохранённых сессий не было. Linux SQLite snapshots обоих инстансов прошли integrity/foreign-key checks. Backup и отчёты: `state/balda-channel-context-20261015/`.
В этой версии generic webhooks выполняют изолированные задания. Они не продолжают исходную сессию. Старые `routes.*.path`, `envelope.target`, `key_from_body`, `mode` и `fallback_to` удалены из конфигурации; listener задаётся через `balda.http`. Сейчас он слушает loopback `127.0.0.1:8095`.
Плагин rc32 использует `balda.state` и штатный `balda.session.wait`: наблюдатель вооружается до Start/retry и возвращается в исходную сессию. Managed lifecycle и restart-контракт проверены; conversational acceptance с реальной моделью ещё открыт. Старые callbacks Broker на `:8090` приостановлены, недоставленные cursors сохранены. Native wait acceptance не является подтверждением доставки сообщения провайдером.