diff --git a/personal/plans/balda-remote-agent.md b/personal/plans/balda-remote-agent.md index 6558bab5..0c0913bc 100644 --- a/personal/plans/balda-remote-agent.md +++ b/personal/plans/balda-remote-agent.md @@ -1,5 +1,30 @@ # Balda — удалённый агент по SSH +## Текущее состояние — сверено 2026-10-19 05:41 UTC + +Актуальная сводка: [[personal/projects/balda/setup]]. Разделы с прежними версиями и планами ниже сохраняются как исторический журнал; они не заменяют эту сводку. + +| Компонент | Текущее состояние | +| --- | --- | +| SSH Manager | 0.3.1, `afa3813`, 8 MCP-инструментов; импорт существующего Mac SSH alias без повторной передачи server key; `127.0.0.1:17796` | +| Workspace Manager | `0c82b8f`, 4 MCP-функции, native SMB3, `127.0.0.1:17795`; root только `developer: /Users/admin/Developer`, recipient `balda` | +| Balda | `254f3e29`, контейнер `balda-mm-mac`, provider `pool`, permissions `ask`; последний старт `2026-10-19T05:34:41.958112077Z` | +| Код и рабочие деревья | Все три checkout чистые; active SSH Manager binary SHA256 `f46fb2f4040ac33e94440f95556052e65f3c4e98d9b88b48c9db18d952749376` | + +SSH: для уже доступного с Mac хоста достаточно alias; native SSH config/Include и доверенные known_hosts дают адрес, логин, порт и server key. Проверяется существующая аутентификация. Новый host получает отдельную identity; добавление/удаление, установка/отзыв ключа требуют штатного подтверждения владельца. Изоляция принимается до установки execution-ключа. Нет привязки к Kraken. Сейчас в inventory только `mac` и `mac-relay`; постоянная запись Kraken удалена, пустому relay запрещён forwarding. Последний тест случайных SSH aliases прошёл на установленном бинарнике: import, native isolation/ProxyJump, restart, revoke/remove. + +Workspace: `workspace_folders`, `workspace_connect`, `workspace_disconnect`, `workspace_lease`; discovery выдаёт только папки. Доступ только к подтверждённой папке с RO/RW и сроком, без общего экспорта Developer/home. SMB отзывает существующие FD и истекает независимо от Manager. Сейчас журнал leases пуст. Дополнительные roots, включая Downloads, не включены. + +Balda: настроены `obsidian`, `virfield`, `workspace-manager`, `ssh-manager`, плюс встроенный `balda`. Legacy Broker/Prism MCP отсутствуют в runtime; plugin `execution-broker` выключен, оригинальные `prism`/`prism-callee` 0.7.0 включены. У Codex — `workspace-write`, writable grants только получателя и `--mcp-approval-policy=allow`; lookup не требует generic approval, изменения доступа подтверждаются владельцем. Ответы на native approval в Mattermost исправлены в `254f3e29`; новая проверка сообщений в пользовательский чат не отправляла. + +Launchd Workspace/SSH/Beads-Dolt — running; HTTP `/backoffice/healthz` и `/backoffice/login` — 200. Последняя model policy приёмка: `01a15298-98b7-7de0-9274-b2cd63c61958` (workspace RW, outside deny, lookup без approvals). Alias-only model fixture: `01a152a5-8b64-7dc1-be62-d007ff3a09c5`; production Kraken import: `01a152a8-1659-7860-bc63-ea9e8a2d92ba` (Decline, личные SSH config/known_hosts и production доступы сохранены). + +Открытый объём исходного плана: полноценные Mac Codex/Claude/OpenCode model runs с отдельными CLI credentials/OpenCode network решениями, полный модельный Prism lifecycle и приёмка реальных project Beads DB. Shared Beads/Dolt concurrency и 14 Callee Role doctor проверены на fixture; реальные project DB не мигрировались. Это не блокирует принятые операции Workspace/SSH Manager и не считается завершённой полной агентной установкой. + +Evidence: `~/.local/share/balda-workspace/candidate/operator-import.json`, `generic-host-manager.json`, `generic-host-policy.json`; исходная SMB/Beads приёмка — `/Users/admin/Developer/workspace-gateway/docs/acceptance-2026-10-18.md`. + +## Исторический журнал изменений и исходный план + ## 2026-10-19 — существующий SSH-доступ Mac без повторной передачи ключа Исправлен оставшийся дефект 0.3.0: обязательный public_host_key заставлял Balda просить ключ сервера даже для уже настроенного SSH alias. SSH Manager **0.3.1** развёрнут, коммит afa3813; для импорта достаточно alias. Hostname/user/port/public_host_key необязательны и берутся из native SSH config с Include и существующих known_hosts, включая hashed записи. Пароль/private key оператора не передаются модели и не копируются в Balda. @@ -102,14 +127,14 @@ Kraken остаётся **не настроен для execution**: его files Ранее остававшиеся отдельные решения по личным Mac CLI credentials/OpenCode localhost этим исправлением не подменяются. Полная исходная настройка не помечена принятой. -Обновлено: **2026-10-18**. +Исторический снимок: **2026-10-18**. Отдельный проект доступа к папкам: [[personal/plans/workspace-gateway|Workspace Gateway]], `/Users/admin/Developer/workspace-gateway`, начальный коммит `2bc6743`. Дополнительная проверка SSH и Seatbelt: [[personal/projects/balda/ssh-seatbelt-2026-10-18]]. Исходная задача: Balda работает с оригинальными Prism/Beads по подключённым проектам и запускает штатного агента в другой среде; подключение нового репозитория требует подтверждения владельца. Проверка: [[personal/projects/balda/ssh-acp-verification-2026-10-18]]. Рабочая установка: [[personal/projects/balda/setup]]. -## Актуальный статус 2026-10-18 +## Исторический статус 2026-10-18 Уточнение по поиску проектов, коммит `9e5066a`: рабочий root только `developer` (`/Users/admin/Developer`). Ошибочно включённый мной `downloads` удалён. Его зависший параллельный вызов скрывал от модели успешный ответ Developer; фактически Developer уже отвечал за 12 мс. Default query больше не обходит всё дерево исходников и dependencies: фильтруется выбранный уровень; глубокий поиск остаётся явным `recursive: true`. Проверены 139 папок корня, 8 вложенных папок workspace-gateway и поиск имени. Реальный Codex получил результаты и вывел их в ответе без approval (session `01a14fa7-60f2-7971-81de-b6c838ec1c31`). Это конкретная новая проверка; прежнее заявление о полной приёмке было преждевременным. Системные TCC/FDA permissions не выдавались и не обходились. @@ -152,7 +177,7 @@ macOS-окружения предоставляет Virfield через его M Для передачи ACP новая реализация `broker-acp` не требуется: базовый путь уже проверен. Дополнительный код допустим только для конкретного воспроизведённого пробела интеграции; прикладные сценарии и учёт фаз Prism остаются в штатном стеке. -## Следующие конкретные действия +## Первоначальный план действий — история 2026-10-18 1. Я реализую и приму Workspace Manager (проект `workspace-gateway`) в отдельном проекте: настраиваемые именованные корни (`developer`, `downloads` и другие), листинг и поиск папок по имени без файлов, подключение после подтверждения владельца, отключение и временный лизинг; сетевая файловая система обеспечит одни и те же исходные файлы Balda и агентам без перезапуска Balda при каждой выдаче. Указание корня в конфиге разрешает обнаружение папок, но не выдаёт доступ ко всем его файлам. 2. Я настрою авторизованный SSH из контейнера в реальные среды, проверку host key, ограниченные credentials и штатный `generic_acp` с командой SSH; доступность порта и проверка протокола уже подтверждены, рабочая авторизация ещё не принята. @@ -160,7 +185,7 @@ macOS-окружения предоставляет Virfield через его M 4. Я настрою согласованные пути workspace, достижимые MCP, оригинальные skills/tools и единое состояние Beads для Balda и одновременных агентов, затем включу запросы разрешений у агентов и штатный `ask` Balda. 5. Я проведу реальную приёмку выбранных Codex/Claude/OpenCode и оригинального Prism: статус проекта, подтверждение и отказ, выполнение, отмена, продолжение сессии и прекращение доступа после отзыва или истечения лизинга. -Это оставшаяся работа, а не уже выполненный deployment. +Это исходная формулировка плана; выполненные действия и оставшийся объём сверены в текущей сводке в начале заметки. SSH/Seatbelt/ACP и настройка Beads не расширяют четыре функции Workspace Gateway. ## Что подтверждено дополнительно @@ -179,7 +204,7 @@ SSH/Seatbelt/ACP и настройка Beads не расширяют четыр Исходная БД Beads соответствующего проекта остаётся источником статусов; Git-клон сам по себе не доказывает наличие актуального состояния Beads. Механизм выдачи доступа к реальным проектам и их БД ещё требует настройки и приёмки. -## Текущее состояние и границы +## Историческое состояние и границы — 2026-10-18 Основная Balda получила оригинальные Prism/Prism Callee, `bd`, Callee и прямой Virfield MCP; это установка инструментов, а не приёмка удалённого исполнения. В рабочем конфиге остаётся `permissions.mode: allow_all`; SSH-проверка production-конфиг, историю и авторизацию не меняла. @@ -221,7 +246,7 @@ SSH/Seatbelt/ACP и настройка Beads не расширяют четыр - Оригинальный Callee с правильным `--agent-root /home/node/.config/callee` успешно отдал весь native Prism graph. Полный модельный Prism lifecycle и общее состояние Beads/Dolt пока не заявляются принятыми. -### Итог текущей выполненной части +### Исторический итог выполненной части — 2026-10-18 - Workspace HEAD `e99f043`, SSH HEAD `d9c19ee`; оба Git working tree чистые. Исходники, tests, scripts и точная приёмка закоммичены. Полная модельная работа не помечена выполненной. - User jobs `local.balda.workspace-manager`, `local.balda.ssh-manager`, `local.balda.beads-dolt` реально running. Manager listeners только 127.0.0.1:17795/17796, native Dolt только 127.0.0.1:13307 плюс точный Unix socket в agent-home. diff --git a/personal/plans/workspace-gateway.md b/personal/plans/workspace-gateway.md index 1fdbaaeb..c0f057f9 100644 --- a/personal/plans/workspace-gateway.md +++ b/personal/plans/workspace-gateway.md @@ -1,5 +1,30 @@ # Workspace Gateway — план +## Текущее состояние — сверено 2026-10-19 05:41 UTC + +Актуальная сводка: [[personal/projects/balda/setup]]. Разделы с прежними версиями и планами ниже сохраняются как исторический журнал; они не заменяют эту сводку. + +| Компонент | Текущее состояние | +| --- | --- | +| SSH Manager | 0.3.1, `afa3813`, 8 MCP-инструментов; импорт существующего Mac SSH alias без повторной передачи server key; `127.0.0.1:17796` | +| Workspace Manager | `0c82b8f`, 4 MCP-функции, native SMB3, `127.0.0.1:17795`; root только `developer: /Users/admin/Developer`, recipient `balda` | +| Balda | `254f3e29`, контейнер `balda-mm-mac`, provider `pool`, permissions `ask`; последний старт `2026-10-19T05:34:41.958112077Z` | +| Код и рабочие деревья | Все три checkout чистые; active SSH Manager binary SHA256 `f46fb2f4040ac33e94440f95556052e65f3c4e98d9b88b48c9db18d952749376` | + +SSH: для уже доступного с Mac хоста достаточно alias; native SSH config/Include и доверенные known_hosts дают адрес, логин, порт и server key. Проверяется существующая аутентификация. Новый host получает отдельную identity; добавление/удаление, установка/отзыв ключа требуют штатного подтверждения владельца. Изоляция принимается до установки execution-ключа. Нет привязки к Kraken. Сейчас в inventory только `mac` и `mac-relay`; постоянная запись Kraken удалена, пустому relay запрещён forwarding. Последний тест случайных SSH aliases прошёл на установленном бинарнике: import, native isolation/ProxyJump, restart, revoke/remove. + +Workspace: `workspace_folders`, `workspace_connect`, `workspace_disconnect`, `workspace_lease`; discovery выдаёт только папки. Доступ только к подтверждённой папке с RO/RW и сроком, без общего экспорта Developer/home. SMB отзывает существующие FD и истекает независимо от Manager. Сейчас журнал leases пуст. Дополнительные roots, включая Downloads, не включены. + +Balda: настроены `obsidian`, `virfield`, `workspace-manager`, `ssh-manager`, плюс встроенный `balda`. Legacy Broker/Prism MCP отсутствуют в runtime; plugin `execution-broker` выключен, оригинальные `prism`/`prism-callee` 0.7.0 включены. У Codex — `workspace-write`, writable grants только получателя и `--mcp-approval-policy=allow`; lookup не требует generic approval, изменения доступа подтверждаются владельцем. Ответы на native approval в Mattermost исправлены в `254f3e29`; новая проверка сообщений в пользовательский чат не отправляла. + +Launchd Workspace/SSH/Beads-Dolt — running; HTTP `/backoffice/healthz` и `/backoffice/login` — 200. Последняя model policy приёмка: `01a15298-98b7-7de0-9274-b2cd63c61958` (workspace RW, outside deny, lookup без approvals). Alias-only model fixture: `01a152a5-8b64-7dc1-be62-d007ff3a09c5`; production Kraken import: `01a152a8-1659-7860-bc63-ea9e8a2d92ba` (Decline, личные SSH config/known_hosts и production доступы сохранены). + +Открытый объём исходного плана: полноценные Mac Codex/Claude/OpenCode model runs с отдельными CLI credentials/OpenCode network решениями, полный модельный Prism lifecycle и приёмка реальных project Beads DB. Shared Beads/Dolt concurrency и 14 Callee Role doctor проверены на fixture; реальные project DB не мигрировались. Это не блокирует принятые операции Workspace/SSH Manager и не считается завершённой полной агентной установкой. + +Evidence: `~/.local/share/balda-workspace/candidate/operator-import.json`, `generic-host-manager.json`, `generic-host-policy.json`; исходная SMB/Beads приёмка — `/Users/admin/Developer/workspace-gateway/docs/acceptance-2026-10-18.md`. + +## Исторический журнал изменений и исходный план + ## 2026-10-19 — существующий SSH-доступ Mac без повторной передачи ключа Исправлен оставшийся дефект 0.3.0: обязательный public_host_key заставлял Balda просить ключ сервера даже для уже настроенного SSH alias. SSH Manager **0.3.1** развёрнут, коммит afa3813; для импорта достаточно alias. Hostname/user/port/public_host_key необязательны и берутся из native SSH config с Include и существующих known_hosts, включая hashed записи. Пароль/private key оператора не передаются модели и не копируются в Balda. @@ -102,7 +127,7 @@ Kraken остаётся **не настроен для execution**: его files Ранее остававшиеся отдельные решения по личным Mac CLI credentials/OpenCode localhost этим исправлением не подменяются. Полная исходная настройка не помечена принятой. -Обновлено: **2026-10-18**. +Исторический снимок: **2026-10-18**. Проект: `/Users/admin/Developer/workspace-gateway`. Git: `main`, реализация `00b7e13`; актуальные deployment scripts и приёмка `9e5066a` (2026-10-18). Четыре MCP-функции реализованы; принят native SMB3 backend с фактическим отзывом открытых FD на Linux и Mac, независимым истечением срока и динамическим подключением без рестарта получателя. Сервис установлен как user launchd job на `127.0.0.1:17795`; аутентифицированные вызовы из доверенного образа Balda прошли. Production Balda переключена с явного разрешения владельца и перезапущена 2026-10-18 в 20:13:46 Asia/Bishkek: native ask активен, оба Manager проверены из рабочего контейнера, SSH/Seatbelt прошёл, HTTP health/login — 200. State/home/work, прежний pool и все записи БД сохранены; backup сделан до переключения. Полная модельная приёмка ещё ожидает отдельных решений по существующим CLI credentials и OpenCode localhost binding. Исправления production: Codex `workspace-write` принят реальной моделью в обычном workspace и динамическом RW grant, запись вне разрешённых roots запрещена. Пять безопасных Manager-запросов прошли без approval; изменения прав по-прежнему требуют владельца. Старый broker отключён, оригинальные Prism сохранены. Принятые Docker-профили включены только с точного согласия владельца; privileged/SYS_ADMIN не добавлены. Журнал и повторяемый модельный тест включены в `1076b4f`; SSH Manager — `f876d37`. @@ -117,7 +142,7 @@ Git: `main`, реализация `00b7e13`; актуальные deployment scr Сервис выдаёт Balda и удалённым агентам доступ к исходным папкам через сетевую файловую систему. Balda и агенты видят одни и те же файлы; копирование Git-репозитория не считается реализацией общего доступа. -1. **Папки:** листинг и навигация по папкам внутри настроенных корней (`developer`, `downloads` и других), а также поиск папок по имени; без выдачи списка файлов и их содержимого. +1. **Папки:** листинг и навигация по папкам внутри настроенных корней (сейчас только `developer`; дополнительные roots включаются по выбору владельца), а также поиск папок по имени; без выдачи списка файлов и их содержимого. 2. **Подключение:** выбранная папка появляется в work dir после подтверждения владельцем точного пути, получателя, режима доступа и срока. 3. **Отключение:** фактический отзыв ранее выданного доступа. 4. **Лизинг:** статус и срок действия, автоматический отзыв после истечения срока, продление с подтверждением владельца. @@ -157,12 +182,12 @@ Prism, Callee, Beads, управление задачами и сессиями 1. Я проверю готовую сетевую файловую систему на текущем Docker/Colima и целевых средах: исходные файлы видны обоим клиентам, добавление разрешённой папки обходится без перезапуска Balda, соседняя папка недоступна, отзыв закрывает уже выданный доступ. 2. Я подключу постоянную точку сетевой файловой системы в work dir; это разовая настройка deployment, последующие выдачи и отзывы происходят в рантайме. -3. Я реализую конфиг нескольких именованных корней (`developer`, `downloads` и других), листинг/навигацию и поиск папок по имени внутри этих корней; затем запрос подключения, связав подтверждение владельца с точным путём, получателем, правами и сроком. Сначала проверю пригодность штатных взаимодействий Balda. Приёмка поиска включает несколько корней, одинаковые имена папок, недоступный корень и запрет выхода через ссылки или `..`. +3. Я реализую конфиг нескольких именованных корней (сейчас только `developer`; дополнительные roots включаются по выбору владельца), листинг/навигацию и поиск папок по имени внутри этих корней; затем запрос подключения, связав подтверждение владельца с точным путём, получателем, правами и сроком. Сначала проверю пригодность штатных взаимодействий Balda. Приёмка поиска включает несколько корней, одинаковые имена папок, недоступный корень и запрет выхода через ссылки или `..`. 4. Я реализую отключение и временный лизинг, сохранение состояния разрешений и обработку истечения срока после перезапуска сервиса; неполученное подтверждение оставляет доступ закрытым. 5. Я проведу приёмку с двумя клиентами: общие файлы, RO/RW, запрет соседних путей и обхода через ссылки, отказ владельца, отзыв, истечение, продление и повторный запуск сервиса. Выбран и принят SMB3 backend: native Samba, mount.cifs Colima и mount_smbfs macOS. Приняты оригинальные файлы, RO/RW, динамические grants, отзыв открытых FD, независимый expiry и реальный отзыв после перезапуска Manager. Подробности — в актуальном журнале ниже. -До выбора backend сохраняется ровно этот объём; общая копия всех репозиториев и ослабление изоляции не являются заменой выдаче доступа. +Принятый backend — SMB3. Общая копия всех репозиториев и ослабление изоляции не заменяют выдачу доступа. ## Что уже проверено и что остаётся @@ -170,7 +195,8 @@ Prism, Callee, Beads, управление задачами и сессиями - [x] Проверена независимая возможность штатного ACP Balda поверх SSH: [[personal/projects/balda/ssh-acp-verification-2026-10-18]]. - [x] Выбрана и испытана сетевая файловая система: native SMB3, Linux и Mac. - [x] Реализованы четыре функции, native подтверждения, реальный отзыв открытых FD и независимый срок доступа. -- [ ] Настроено общее состояние Beads и принята работа реальных агентов через полученный workspace. +- [x] Shared Beads/Dolt проверен на fixture: параллельное создание/чтение, единственный победитель claim, чтение через принятый SSH/SRT. +- [ ] Полная модельная работа реальных агентов через полученный workspace и реальные project Beads DB; fixture не считается миграцией проектов. Доступ к исходникам и доступ к состоянию Beads — связанные, но отдельные пункты общей установки. Для одновременной работы Balda и нескольких агентов Beads описывает server mode Dolt: [официальная архитектура](https://github.com/gastownhall/beads/blob/main/docs/architecture/index.md). diff --git a/personal/projects/balda/balda.md b/personal/projects/balda/balda.md index a8d27b42..db00c76a 100755 --- a/personal/projects/balda/balda.md +++ b/personal/projects/balda/balda.md @@ -1,35 +1,31 @@ # Balda — актуальный обзор -Проверено: **2026-10-18**. Balda принимает задачи из чата и использует штатные провайдеры, сессии, MCP и skills. Основной `balda-mm-mac` работает на `balda-prism:20261018` с базой `balda-upstream:a908ee1a`; Eagle — на `balda-upstream:a908ee1a`. В основной инстанс установлены оригинальные Prism/Prism Callee, Beads, Callee и прямой Virfield MCP; детали и границы проверки — в [[personal/projects/balda/setup]]. +Проверено: **2026-10-19** по активной конфигурации, работающим сервисам и журналам приёмки. Основной контейнер `balda-mm-mac`: Balda `254f3e29`, provider `pool`, permissions `ask`. Оригинальные Prism/Prism Callee 0.7.0 включены; прежний plugin Execution Broker выключен. Полная эксплуатационная сводка, версии и открытая работа: [[personal/projects/balda/setup]]. -## Источники текущего состояния +## Текущее состояние -- [[personal/plans/workspace-gateway|Workspace Gateway — отдельный проект и четыре функции доступа]] -- [[personal/projects/balda/ssh-seatbelt-2026-10-18|Проверка исходящего SSH и Seatbelt; оставшиеся пункты setup]] -- [[personal/plans/balda-remote-agent|Актуальный план удалённого агента по SSH]] -- [[personal/projects/balda/ssh-acp-verification-2026-10-18|Проверка штатного ACP, разрешений и восстановления сессии]] -- [[personal/projects/balda/setup|Работающий контейнер, конфигурация, MCP и перезапуск]] -- [[personal/projects/balda/execution-broker|Broker/Balda: проверенные версии, артефакты и границы приёмки]] -- [[personal/projects/balda/soul|Снимок global instruction]] -- [[personal/projects/balda/workspace-context|Provider context]] +- **SSH Manager 0.3.1**: 8 MCP-инструментов, произвольные aliases; для существующего SSH-доступа Mac импортирует native config/Include и доверенные known_hosts, проверяет существующую аутентификацию. Повторно передавать server key для настроенного хоста не требуется. Добавление/авторизация — с подтверждением владельца, execution — после приёмки native изоляции. Постоянных настроек Kraken в inventory нет. +- **Workspace Manager**: четыре функции folders/connect/disconnect/lease, SMB3; root только `developer`, recipient `balda`. Выдаётся конкретная подтверждённая папка RO/RW с TTL; отзыв существующих FD проверен. Downloads не включён; сейчас активных leases нет. +- **Balda MCP**: Obsidian, Virfield, Workspace Manager, SSH Manager и встроенный Balda. Прежние Execution Broker/Execution Prism MCP не подключены к runtime. Generic MCP approval для Codex убран; native подтверждения изменения доступа сохранены. +- **Приёмка**: SSH import/lifecycle на случайных aliases и реальной модели, Workspace RW/outside deny, SMB revoke/expiry и shared Beads fixture приняты. Полные удалённые Mac model runs, модельный Prism lifecycle и реальные project Beads DB остаются отдельной незавершённой частью исходного плана. -В карточках указаны работающий образ, действующая конфигурация и границы готовности Broker. +## Конфигурация и эксплуатация + +Активный config: `/Users/admin/.local/share/balda-workspace/candidate/config/config.yaml`; Compose: `/Users/admin/Docker/balda-mm-mac/docker-compose.yml`. Рабочий binary смонтирован из config, изменение checkout само по себе его не обновляет. Пути, hashes, restart и границы приёмки: [[personal/projects/balda/setup]]. Eagle этой сверкой не проверялся и не изменялся. + +## Документация + +- [[personal/plans/balda-remote-agent|SSH Manager и план удалённого агента]] +- [[personal/plans/workspace-gateway|Workspace Manager, четыре функции и приёмка]] +- [[personal/projects/balda/soul|Точный текущий global instruction]] +- [[personal/projects/balda/workspace-context|Текущие provider context и Codex permissions]] +- [[personal/projects/balda/ssh-seatbelt-2026-10-18|Историческая проверка SSH/Seatbelt]] +- [[personal/projects/balda/ssh-acp-verification-2026-10-18|Историческая проверка ACP]] +- [[personal/projects/balda/execution-broker|Архив прежнего Execution Broker]] +- [[personal/projects/archive/balda-reference-before-2026-10-14|Прежняя карточка и provider templates]] ## Репозитории -Upstream: [baldaworks/balda](https://github.com/baldaworks/balda). Fork: [mallexxx/balda](https://github.com/mallexxx/balda). +Balda: `/Users/admin/Developer/balda` (`254f3e29`); SSH Manager: `/Users/admin/Developer/ssh-manager` (`afa3813`); Workspace Manager: `/Users/admin/Developer/workspace-gateway` (`0c82b8f`). Все три checkout при сверке чистые. -## Конфигурация и владение - -Действующий конфиг: `/Users/admin/Docker/balda-mm-mac/config/config.yaml`; выбран `balda.provider: pool`. Dev-конфиг в `~/Developer/balda` — отдельный файл. Obsidian MCP — `type: http`, `http://host.docker.internal:3101/mcp`. - -Balda сохраняет штатную оркестрацию, сессии, MCP, skills и подтверждения. Связь с агентом в другой среде — через SSH и штатный ACP; базовый путь уже проверен без нового ACP-брокера. Доступ к исходным папкам выделен в отдельный проект Workspace Gateway; macOS предоставляет Virfield. Рабочая SSH-авторизация, профили Seatbelt, native ask, достижимость MCP и общее состояние Beads ещё требуют настройки и приёмки. Исторические функции прежнего Broker и его подключённые MCP описаны отдельно и не задают объём нового брокера. - -Документация кода: [README](https://github.com/baldaworks/balda/blob/main/README.md), [configuration](https://github.com/baldaworks/balda/blob/main/docs/reference/configuration.md), [plugins](https://github.com/baldaworks/balda/blob/main/docs/reference/plugins.md). - -## История - -- [[personal/projects/archive/balda-reference-before-2026-10-14|Прежняя карточка, Zulip и старые provider templates]] -- [[personal/projects/balda/balda-mattermost-connector|Исторический дизайн Mattermost-коннектора]] -- [[personal/plans/balda-callee-prism-plan|Архив раннего плана Broker/Callee/Prism]] -- Старые Kraken/Valera/Claudio runbooks помечены историческими и не задают текущий запуск. +Upstream Balda: [baldaworks/balda](https://github.com/baldaworks/balda). Fork: [mallexxx/balda](https://github.com/mallexxx/balda). diff --git a/personal/projects/balda/execution-broker.md b/personal/projects/balda/execution-broker.md index aee967a8..28837e5a 100755 --- a/personal/projects/balda/execution-broker.md +++ b/personal/projects/balda/execution-broker.md @@ -1,10 +1,17 @@ -# Execution Broker — эксплуатация +# Execution Broker — историческая эксплуатация + +> [!important] Текущий статус — 2026-10-19 +> Прежние MCP `execution-broker` и `execution-prism` отсутствуют в runtime основного Balda, plugin `execution-broker` выключен. Оригинальные `prism`/`prism-callee` 0.7.0 включены. +> Доступом управляют отдельные SSH Manager и Workspace Manager; актуальные версии, пути и границы приёмки: [[personal/projects/balda/setup]]. +> Нижеследующие комплекты, workflows и результаты — датированный архив 2026-10-16/18, а не текущая конфигурация Balda. Состояние старых отдельных Broker services этой сверкой не перепроверялось. + +## Архив прежнего контура > [!important] Граница нового брокера — 2026-10-18 > Текущий план: [[personal/plans/balda-remote-agent|Balda — удалённый агент по SSH]]. > Штатный `generic_acp` Balda уже передаёт ACP по SSH; собственный ACP-транспорт для проверенного пути не требуется. > Ветка `broker-rebuild` начата с пустого дерева; в ней пока README, новой реализации нет. -> Старые MCP `execution-broker`, `execution-prism` и plugin остаются подключены в рабочей Balda. +> На дату 2026-10-18 старые MCP и plugin ещё оставались подключены; текущий статус приведён выше. > Сведения о версиях, workflow и прежней приёмке ниже — исторический срез 2026-10-16; установка Balda обновлена в [[personal/projects/balda/setup]]. Проверено: **2026-10-16** по GitHub, исходникам, работающим контейнерам, binary hashes, MCP и сохранённому state. Broker и Virfield очищены от планов и персональных журналов в tracked файлах; актуальная установка и приёмка ведутся в Obsidian. diff --git a/personal/projects/balda/setup.md b/personal/projects/balda/setup.md index 8f8ad2a3..22282cd5 100755 --- a/personal/projects/balda/setup.md +++ b/personal/projects/balda/setup.md @@ -1,6 +1,47 @@ # Balda — актуальный локальный запуск -## Актуальное обновление — 2026-10-18 +## Текущее состояние — сверено 2026-10-19 05:41 UTC + +Актуальная сводка: [[personal/projects/balda/setup]]. Разделы с прежними версиями и планами ниже сохраняются как исторический журнал; они не заменяют эту сводку. + +| Компонент | Текущее состояние | +| --- | --- | +| SSH Manager | 0.3.1, `afa3813`, 8 MCP-инструментов; импорт существующего Mac SSH alias без повторной передачи server key; `127.0.0.1:17796` | +| Workspace Manager | `0c82b8f`, 4 MCP-функции, native SMB3, `127.0.0.1:17795`; root только `developer: /Users/admin/Developer`, recipient `balda` | +| Balda | `254f3e29`, контейнер `balda-mm-mac`, provider `pool`, permissions `ask`; последний старт `2026-10-19T05:34:41.958112077Z` | +| Код и рабочие деревья | Все три checkout чистые; active SSH Manager binary SHA256 `f46fb2f4040ac33e94440f95556052e65f3c4e98d9b88b48c9db18d952749376` | + +SSH: для уже доступного с Mac хоста достаточно alias; native SSH config/Include и доверенные known_hosts дают адрес, логин, порт и server key. Проверяется существующая аутентификация. Новый host получает отдельную identity; добавление/удаление, установка/отзыв ключа требуют штатного подтверждения владельца. Изоляция принимается до установки execution-ключа. Нет привязки к Kraken. Сейчас в inventory только `mac` и `mac-relay`; постоянная запись Kraken удалена, пустому relay запрещён forwarding. Последний тест случайных SSH aliases прошёл на установленном бинарнике: import, native isolation/ProxyJump, restart, revoke/remove. + +Workspace: `workspace_folders`, `workspace_connect`, `workspace_disconnect`, `workspace_lease`; discovery выдаёт только папки. Доступ только к подтверждённой папке с RO/RW и сроком, без общего экспорта Developer/home. SMB отзывает существующие FD и истекает независимо от Manager. Сейчас журнал leases пуст. Дополнительные roots, включая Downloads, не включены. + +Balda: настроены `obsidian`, `virfield`, `workspace-manager`, `ssh-manager`, плюс встроенный `balda`. Legacy Broker/Prism MCP отсутствуют в runtime; plugin `execution-broker` выключен, оригинальные `prism`/`prism-callee` 0.7.0 включены. У Codex — `workspace-write`, writable grants только получателя и `--mcp-approval-policy=allow`; lookup не требует generic approval, изменения доступа подтверждаются владельцем. Ответы на native approval в Mattermost исправлены в `254f3e29`; новая проверка сообщений в пользовательский чат не отправляла. + +Launchd Workspace/SSH/Beads-Dolt — running; HTTP `/backoffice/healthz` и `/backoffice/login` — 200. Последняя model policy приёмка: `01a15298-98b7-7de0-9274-b2cd63c61958` (workspace RW, outside deny, lookup без approvals). Alias-only model fixture: `01a152a5-8b64-7dc1-be62-d007ff3a09c5`; production Kraken import: `01a152a8-1659-7860-bc63-ea9e8a2d92ba` (Decline, личные SSH config/known_hosts и production доступы сохранены). + +Открытый объём исходного плана: полноценные Mac Codex/Claude/OpenCode model runs с отдельными CLI credentials/OpenCode network решениями, полный модельный Prism lifecycle и приёмка реальных project Beads DB. Shared Beads/Dolt concurrency и 14 Callee Role doctor проверены на fixture; реальные project DB не мигрировались. Это не блокирует принятые операции Workspace/SSH Manager и не считается завершённой полной агентной установкой. + +Evidence: `~/.local/share/balda-workspace/candidate/operator-import.json`, `generic-host-manager.json`, `generic-host-policy.json`; исходная SMB/Beads приёмка — `/Users/admin/Developer/workspace-gateway/docs/acceptance-2026-10-18.md`. + +## Текущие пути и эксплуатация — 2026-10-19 + +| Параметр | Значение | +| --- | --- | +| Compose | `/Users/admin/Docker/balda-mm-mac/docker-compose.yml` | +| Активный config | `/Users/admin/.local/share/balda-workspace/candidate/config/config.yaml` | +| Config mount | `/workspace/.config/balda`, read-only | +| Запускаемый binary | `/workspace/.config/balda/bin/balda`; SHA256 `b48e15ea8bc3d8a950900e8da99f7a67d391279914111f689f71667cc8be8361` | +| State / work | `/Users/admin/Docker/balda-mm-mac/state` и `/Users/admin/Docker/balda-mm-mac/work` | +| Home / SSH volumes | `balda_balda-home` → `/home/node`; `balda-ssh-manager` → `/run/ssh-manager:ro` | +| Инструкции Codex | Отдельный `runtime.providers.codex.system_instructions` не задан; [[personal/projects/balda/workspace-context]] | + +Обычное добавление/удаление SSH-хоста и Workspace lease выполняется MCP-инструментами и не требует ручной правки config или restart. После изменения самого Balda config нужен разрешённый restart. После изменения MCP schema также обновляются сессии клиента. При restart Balda дождаться внутреннего `/backoffice/healthz:200`, затем пересоздать существующий `webui-proxy`, поскольку он использует `network_mode: service:balda`; проверить host health/login. Изменение Compose/env/mounts применяется через `docker-compose up -d`, а не одним restart. + +Активный Balda binary берётся из config mount; изменение checkout само по себе его не заменяет. Для обновления нужен build выбранного source, атомарная установка binary и разрешённый restart с backup. Изменения managed plugin revisions не вносятся вручную. Eagle в этой сверке не изменялся и не перепроверялся; старые сведения о совпадении двух инстансов ниже исторические. + +## Исторические снимки установки + +## Историческое обновление — 2026-10-18 Новый сервис подключения папок: [[personal/plans/workspace-gateway|Workspace Gateway]], `/Users/admin/Developer/workspace-gateway`; создан каркас, реализации пока нет. Проверка исходящего SSH и Seatbelt: [[personal/projects/balda/ssh-seatbelt-2026-10-18]]; сетевой SSH из контейнера доступен, production логин и sandbox launch ещё не приняты. @@ -52,7 +93,7 @@ SSH-проверка не вызывала модели и не отправля Config bind-mounted в `/workspace/.config/balda` read-only для контейнера; state и work доступны ему на запись. Файл `~/Developer/balda/.config/balda/config.yaml` относится к отдельному dev checkout и не управляет этим контейнером. -## Eagle и общие инструменты +## Eagle и общие инструменты — исторический снимок 2026-10-15 Eagle работает на том же Mac в `balda-mm-eagle`; Compose, config, state и work находятся в `/Users/admin/Docker/balda-mm-eagle/`, service — `eagle`, отдельный home volume — `balda_eagle-home`. Образы обоих инстансов одинаковы. Авторизации Codex раздельные; при обновлении home volumes сохранены. Историческая серверная проверка 2026-10-15: models endpoint отвечает HTTP 200 у обоих. У @balda реальная генерация в отдельной ephemeral read-only сессии завершилась ответом `AUTH_OK` и `turn.completed`; исходный аккаунт сохранён. После перечитывания credentials Mattermost websocket подключён, существующие беседы не сбрасывались. Не копировать auth между разными аккаунтами. @@ -76,7 +117,7 @@ Eagle работает на том же Mac в `balda-mm-eagle`; Compose, config Актуальные snapshots и доказательства: `state/main-production-sync-20261016/coordinated-stack-snapshot/`, `active-deployment-before/`, `production-deployment.json`, `live-baldda-mcp.json`. Развёрнутый Broker/Prism/gateway — `rc34/13c29ac`; закреплённые managed plugin revisions и session capability snapshots сохранены. -## Изменения и перезапуск +## Исторические процедуры перезапуска — перед применением сверить текущие пути выше | Изменение | Действие | | --- | --- | diff --git a/personal/projects/balda/soul.md b/personal/projects/balda/soul.md index 2474b476..d78ba8c2 100755 --- a/personal/projects/balda/soul.md +++ b/personal/projects/balda/soul.md @@ -1,8 +1,6 @@ # Balda — global instruction -Проверено: **2026-10-15**. Ниже точный снимок `balda.global_instruction` из активного `/Users/admin/Docker/balda-mm-mac/config/config.yaml`. Он относится к контейнеру `balda-mm-mac`; dev-конфиг в `~/Developer/balda` является отдельным файлом. - -Порядок инструкций в Balda: built-in → `balda.global_instruction` → `runtime.providers..system_instructions`. Текущий provider — `codex`; отдельные provider-level инструкции не настроены. +Проверено: **2026-10-19**. Ниже точный снимок `balda.global_instruction` из активного `/Users/admin/.local/share/balda-workspace/candidate/config/config.yaml` контейнера `balda-mm-mac`. В Balda выбран provider `pool`; отдельный `runtime.providers.codex.system_instructions` не задан. ## Действующее значение @@ -12,10 +10,9 @@ Код и команды в fenced code blocks. Не объясняй процесс, показывай результат. В каналах ты отвечаешь только когда тебя упомянули через @balda. -For execution-broker calls, use the exact current Balda Session ID shown under Session in the system instruction as chat_id and an empty topic_id. The channel type is also shown there; never infer Telegram from numeric Mattermost metadata. Numeric chat_id=0 and topic_id=0 are transport placeholders and must never be sent to execution tools. Never ask the user to supply a Session ID. If an existing Story has chat_id=0 or topic_id=0, create a new Story and Task with the current Session ID and new Story and run idempotency keys before starting a new execution. Do not reuse the placeholder-bound Story because Prism cannot sync it. At a coding approval question, forward the exact free-text requirement change with execution_respond for that run; Callee will regenerate the plan and ask again without a new Story or run. Reply approved only after the user approves the latest plan. ## Как поддерживать этот снимок -Изменение заметки само по себе не меняет production-конфигурацию. Изменение глобальных инструкций применяется отдельно через активный host config и перезапуск Balda по [[personal/projects/balda/setup|runbook]]. При последующей актуализации заметку снова сверяют с этим файлом. +Изменение заметки само по себе не меняет production-конфигурацию. Изменение global instruction выполняется отдельно через активный config и разрешённый перезапуск по [[personal/projects/balda/setup]]. Прежняя инструкция про Execution Broker удалена из активного значения и в этот снимок не входит. -Исторический шаблон для Валеры/Zulip сохранён в [[personal/projects/archive/balda-reference-before-2026-10-14]]. Контекст конкретного provider описан в [[personal/projects/balda/workspace-context]]. +Контекст provider: [[personal/projects/balda/workspace-context]]. Исторический шаблон Валеры/Zulip: [[personal/projects/archive/balda-reference-before-2026-10-14]]. diff --git a/personal/projects/balda/ssh-acp-verification-2026-10-18.md b/personal/projects/balda/ssh-acp-verification-2026-10-18.md index 664cd6f7..872f3b66 100644 --- a/personal/projects/balda/ssh-acp-verification-2026-10-18.md +++ b/personal/projects/balda/ssh-acp-verification-2026-10-18.md @@ -1,5 +1,11 @@ # Balda → SSH → ACP: проверка 2026-10-18 +## Статус этой заметки — 2026-10-19 + +Ниже сохранён датированный технический прогон 2026-10-18, включая его тогдашние открытые проверки. Текущая эксплуатационная сводка: [[personal/projects/balda/setup]], планы: [[personal/plans/balda-remote-agent]] и [[personal/plans/workspace-gateway]]. С тех пор приняты production SSH/SRT к Mac, SMB доступ/отзыв, shared Beads fixture, native approval bridge и generic SSH Manager 0.3.1 с импортом существующего доверенного доступа Mac. Полный модельный Prism lifecycle и реальные project DB остаются отдельной приёмкой. + +## Исторический протокол проверки + Проверено на исходниках Balda `a908ee1a5ff2`, runtime `v2.6.3`, ACP adapter `v2.6.1`. Актуальный план: [[personal/plans/balda-remote-agent]]. diff --git a/personal/projects/balda/ssh-seatbelt-2026-10-18.md b/personal/projects/balda/ssh-seatbelt-2026-10-18.md index b50c7c31..47d98728 100644 --- a/personal/projects/balda/ssh-seatbelt-2026-10-18.md +++ b/personal/projects/balda/ssh-seatbelt-2026-10-18.md @@ -1,9 +1,15 @@ # Balda — SSH и Seatbelt: проверка 2026-10-18 +## Статус этой заметки — 2026-10-19 + +Ниже сохранён датированный технический прогон 2026-10-18, включая его тогдашние открытые проверки. Текущая эксплуатационная сводка: [[personal/projects/balda/setup]], планы: [[personal/plans/balda-remote-agent]] и [[personal/plans/workspace-gateway]]. С тех пор приняты production SSH/SRT к Mac, SMB доступ/отзыв, shared Beads fixture, native approval bridge и generic SSH Manager 0.3.1 с импортом существующего доверенного доступа Mac. Полный модельный Prism lifecycle и реальные project DB остаются отдельной приёмкой. + +## Исторический протокол проверки + Общий план: [[personal/plans/balda-remote-agent]]. Workspace Gateway: [[personal/plans/workspace-gateway]]. -## Факты текущей установки +## Факты установки на дату исходной проверки - Docker context: `colima`; Docker daemon сообщает `Ubuntu 24.04.4 LTS`. - На Mac `26.7.1` присутствует `/usr/bin/sandbox-exec`. @@ -50,7 +56,7 @@ Workspace Gateway: [[personal/plans/workspace-gateway]]. [Beads](https://github.com/gastownhall/beads/blob/main/docs/architecture/index.md) рекомендует Dolt server mode для одновременных записывающих клиентов. Настройка общего серверного доступа из Balda и удалённых сред ещё не выполнена. -## Открытые проверки +## Открытые проверки на дату исходного прогона - Авторизованный SSH из контейнера в реальные среды с проверкой host key и ограниченными credentials. - Запуск настоящих ACP-агентов и обычных команд на Mac внутри принятой sandbox. diff --git a/personal/projects/balda/workspace-context.md b/personal/projects/balda/workspace-context.md index 0013f99b..fde8852c 100755 --- a/personal/projects/balda/workspace-context.md +++ b/personal/projects/balda/workspace-context.md @@ -1,8 +1,8 @@ # Balda — provider context -Проверено: **2026-10-15** по активному конфигу `/Users/admin/Docker/balda-mm-mac/config/config.yaml`. +Проверено: **2026-10-19** по активному конфигу `/Users/admin/.local/share/balda-workspace/candidate/config/config.yaml`. Текущая установка: [[personal/projects/balda/setup]]. -Текущий provider — `codex`, type `codex_acp`, reasoning effort `medium`. Поле `runtime.providers.codex.system_instructions` **не настроено**; эта заметка не объявляет Balda привязанной к одному репозиторию. +В Balda выбран provider `pool`; профиль `codex` имеет type `codex_acp`, reasoning effort `medium`. Поле `runtime.providers.codex.system_instructions` **не настроено**; эта заметка не объявляет Balda привязанной к одному репозиторию. Дополнение для этого provider задаётся в активном host config, отдельно от [[personal/projects/balda/soul|global instruction]]. Пример структуры: @@ -19,4 +19,6 @@ runtime: Пример — шаблон, а не установленная конфигурация. Описание конкретного проекта должно содержать точный repository/worktree, задачу, критерии приёмки и команды проверок; стек определяется проектом. Изменение заметки не применяет эти настройки к контейнеру. +В профиле Codex действуют `--sandbox=workspace-write`, дополнительный writable root только для grants получателя и `--mcp-approval-policy=allow`. MCP: Obsidian, Virfield, Workspace Manager и SSH Manager; встроенные инструменты Balda доступны штатно. Generic MCP lookup не требует подтверждения, изменение доступа подтверждается native owner form. + Пути, перезапуск и session boundaries: [[personal/projects/balda/setup]]. Старый Claude/Zulip template: [[personal/projects/archive/balda-reference-before-2026-10-14]].