[2026-10-19] eagle: personal/plans/balda-remote-agent.md personal/plans/workspace-gateway.md personal/projects/balda/balda.md personal/projects/balda/mattermost-dm-threads-2026-10-19.md personal/projects/balda/setup.md personal/projects/balda/ssh-client-route-2026-10-19.md personal/projects/balda/workspace-context.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-19 14:10:35 +06:00
1 parent f4fdfcb93a
commit 47c327fb84
7 files changed
+41 -14

No files matched your search

+6 -4
View File
@@ -1,12 +1,12 @@
# Balda — удалённый агент по SSH
## Текущее состояние — сверено 2026-10-19 06:30 UTC
## Текущее состояние — сверено 2026-10-19 08:06 UTC
| Компонент | Проверенное состояние |
| --- | --- |
| SSH Manager | 0.3.2, `a86df58`, 8 MCP-инструментов, `127.0.0.1:17796` |
| Workspace Manager | `0c82b8f`, четыре функции, native SMB3, `127.0.0.1:17795`; root только `developer`, recipient `balda` |
| Balda | `3e86b995`, `balda-mm-mac`, provider `pool`, permissions `ask`; старт `2026-10-19T06:28:48.664493362Z` |
| Balda | `eee69fc5`, `balda-mm-mac`, provider `pool`, permissions `ask`; старт `2026-10-19T08:05:42.795540715Z` |
| Проверка установленного SSH-ключа | Реальный контейнер Balda, `registered`, `client_verified_at=2026-10-19T06:29:15.692883Z`; прежний key id сохранён |
| Исходники / runtime | Все три checkout чистые; build metadata обоих исправленных binaries указывает на эти чистые commits; активные hashes/inode проверены |
@@ -16,13 +16,15 @@ SSH Manager импортирует существующий Mac SSH alias из n
Inventory сейчас: `mac`, `mac-relay`, `kraken`. Kraken добавлен владельцем через Balda в сессии по ссылке ниже; маршрут исправлен самим менеджером на `mac-relay → kraken`, relay ограничен текущим endpoint. Новый target key при исправлении не устанавливался, прежняя identity и изоляция сохранены. Отдельный независимый SSH-вызов UID 1000 из Balda вернул ожидаемый маркер.
Треды Mattermost DM: `eee69fc5` сохраняет `root_id` пользовательского сообщения в адресе доставки; обычные ответы, progress и вопросы идут в его тред, дальнейшие replies сохраняют этот root. DM/group session IDs остаются прежними. Это поведение транспорта в коде; настройки переключения нет. Отдельный approval-тред не создаётся. `254f3e29` откачен коммитом `3f6a1363`: обработчик обычного числового ответа без треда и изменения хранилища удалены. Узкое сопоставление raw user ID для штатного threaded reply исправлено отдельно в `eee69fc5`. Исправление двойного меню `3e86b995` сохранено. `9018e7a3` исправляет transport routing; `c061e266` исправляет выбор pending-вопроса в общем root вместо уже отвеченного; неоднозначные параллельные pending-вопросы не подтверждаются. `eee69fc5` сохраняет прежнюю классификацию лички в архиве. Приёмка и ограничения: [[personal/projects/balda/mattermost-dm-threads-2026-10-19]].
Balda: меню подтверждения рендерится один раз — permission layer передаёт готовую presentation, questions layer сохраняет structured options для ответа, но не дописывает второе меню. Regression проходит через permission review, session question delivery и decision resolution. Добавление host и установка ключа остаются двумя разными owner confirmations; дополнительные generic MCP approvals у Codex выключены, native изменения доступа подтверждаются владельцем.
MCP: `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 root только grants получателя, `--mcp-approval-policy=allow`.
Workspace: `workspace_folders`, `workspace_connect`, `workspace_disconnect`, `workspace_lease`; discovery только папок, выдача конкретной папки RO/RW с TTL. Downloads и общий Developer/home mount не включены. Lease journal пуст. Приняты SMB revoke существующих FD/expiry и shared Beads fixture; runtime Workspace в этом исправлении не менялся.
Проверено: SSH race/vet/build; 15 native SSH lifecycle checks и 16 checks на случайных aliases в сети реальной Balda, включая alias-only import без via, автоматический relay, pin failure, retry, restart/revoke/remove. Реальная модель после финального deployment: `01a152d9-7d04-7f21-9597-91c259813c7c`, ровно одна Owner confirmation существующего key id, без generic MCP approval; client receipt выше. Полные 173 Balda package checks под race, golangci-lint и architecture checks — pass; launchd Workspace/SSH/Beads-Dolt running, health/login 200. Внешние тестовые сообщения Mattermost не отправлялись.
Проверено: SSH race/vet/build; 15 native SSH lifecycle checks и 16 checks на случайных aliases в сети реальной Balda, включая alias-only import без via, автоматический relay, pin failure, retry, restart/revoke/remove. Историческая model-проверка после deployment SSH-маршрута 06:28 UTC: `01a152d9-7d04-7f21-9597-91c259813c7c`, ровно одна Owner confirmation существующего key id, без generic MCP approval; client receipt выше. Полный race-прогон Balda: 142 пакета с тестами; golangci-lint и architecture checks — pass; launchd Workspace/SSH/Beads-Dolt running, health/login 200. Внешние тестовые сообщения Mattermost не отправлялись.
Первичный провал приёмки: [сессия Mattermost](https://mm.qentra.top/qentra/pl/bjb4nhz6o3yoxqg9rs1qcpncjh). Причины и исправление: [[personal/projects/balda/ssh-client-route-2026-10-19]]. Evidence: `~/.local/share/balda-workspace/candidate/client-route/`; backup: `~/.local/share/balda-workspace/backups/client-route-20261019T062059Z`.
@@ -115,7 +117,7 @@ Default private policies имеют изолированную сеть; API/pro
Upstream Codex ACP 1.11.0 требует elicitation capability, которой нет у текущего клиента Balda. В закреплённой сборке добавлен узкий fallback пустой confirmation-only формы на существующий ACP RequestPermission. Форма с полями и неподдержанные режимы без capabilities не принимаются автоматически. Explicit accept/decline/cancel и неизвестные ответы покрыты тестами. Чистая повторная сборка закреплённого source + patch прошла race/lint и дала одинаковый хеш.
В Balda исправлены две причины потерянного ответа: обычный `1` в DM теперь относится к единственному доставленному действующему вопросу той же беседы/сессии; ID отвечающего совпадает с исходным ID автора запроса, без добавления `mattermost:` только к ответу. Проверяются права отвечающего, expiry и время сообщения. Старый `1`, в том числе в пределах той же секунды, не разрешает новый вопрос. Общие каналы и несколько pending-вопросов требуют ответа в треде.
Исторический патч `254f3e29` **откачен** в `3f6a1363`; описанное далее поведение больше не действует. Тогда обычный `1` в DM относится к единственному доставленному действующему вопросу той же беседы/сессии; ID отвечающего совпадает с исходным ID автора запроса, без добавления `mattermost:` только к ответу. Проверяются права отвечающего, expiry и время сообщения. Старый `1`, в том числе в пределах той же секунды, не разрешает новый вопрос. Общие каналы и несколько pending-вопросов требуют ответа в треде.
Проверено:
+6 -4
View File
@@ -1,12 +1,12 @@
# Workspace Gateway — план
## Текущее состояние — сверено 2026-10-19 06:30 UTC
## Текущее состояние — сверено 2026-10-19 08:06 UTC
| Компонент | Проверенное состояние |
| --- | --- |
| SSH Manager | 0.3.2, `a86df58`, 8 MCP-инструментов, `127.0.0.1:17796` |
| Workspace Manager | `0c82b8f`, четыре функции, native SMB3, `127.0.0.1:17795`; root только `developer`, recipient `balda` |
| Balda | `3e86b995`, `balda-mm-mac`, provider `pool`, permissions `ask`; старт `2026-10-19T06:28:48.664493362Z` |
| Balda | `eee69fc5`, `balda-mm-mac`, provider `pool`, permissions `ask`; старт `2026-10-19T08:05:42.795540715Z` |
| Проверка установленного SSH-ключа | Реальный контейнер Balda, `registered`, `client_verified_at=2026-10-19T06:29:15.692883Z`; прежний key id сохранён |
| Исходники / runtime | Все три checkout чистые; build metadata обоих исправленных binaries указывает на эти чистые commits; активные hashes/inode проверены |
@@ -16,13 +16,15 @@ SSH Manager импортирует существующий Mac SSH alias из n
Inventory сейчас: `mac`, `mac-relay`, `kraken`. Kraken добавлен владельцем через Balda в сессии по ссылке ниже; маршрут исправлен самим менеджером на `mac-relay → kraken`, relay ограничен текущим endpoint. Новый target key при исправлении не устанавливался, прежняя identity и изоляция сохранены. Отдельный независимый SSH-вызов UID 1000 из Balda вернул ожидаемый маркер.
Треды Mattermost DM: `eee69fc5` сохраняет `root_id` пользовательского сообщения в адресе доставки; обычные ответы, progress и вопросы идут в его тред, дальнейшие replies сохраняют этот root. DM/group session IDs остаются прежними. Это поведение транспорта в коде; настройки переключения нет. Отдельный approval-тред не создаётся. `254f3e29` откачен коммитом `3f6a1363`: обработчик обычного числового ответа без треда и изменения хранилища удалены. Узкое сопоставление raw user ID для штатного threaded reply исправлено отдельно в `eee69fc5`. Исправление двойного меню `3e86b995` сохранено. `9018e7a3` исправляет transport routing; `c061e266` исправляет выбор pending-вопроса в общем root вместо уже отвеченного; неоднозначные параллельные pending-вопросы не подтверждаются. `eee69fc5` сохраняет прежнюю классификацию лички в архиве. Приёмка и ограничения: [[personal/projects/balda/mattermost-dm-threads-2026-10-19]].
Balda: меню подтверждения рендерится один раз — permission layer передаёт готовую presentation, questions layer сохраняет structured options для ответа, но не дописывает второе меню. Regression проходит через permission review, session question delivery и decision resolution. Добавление host и установка ключа остаются двумя разными owner confirmations; дополнительные generic MCP approvals у Codex выключены, native изменения доступа подтверждаются владельцем.
MCP: `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 root только grants получателя, `--mcp-approval-policy=allow`.
Workspace: `workspace_folders`, `workspace_connect`, `workspace_disconnect`, `workspace_lease`; discovery только папок, выдача конкретной папки RO/RW с TTL. Downloads и общий Developer/home mount не включены. Lease journal пуст. Приняты SMB revoke существующих FD/expiry и shared Beads fixture; runtime Workspace в этом исправлении не менялся.
Проверено: SSH race/vet/build; 15 native SSH lifecycle checks и 16 checks на случайных aliases в сети реальной Balda, включая alias-only import без via, автоматический relay, pin failure, retry, restart/revoke/remove. Реальная модель после финального deployment: `01a152d9-7d04-7f21-9597-91c259813c7c`, ровно одна Owner confirmation существующего key id, без generic MCP approval; client receipt выше. Полные 173 Balda package checks под race, golangci-lint и architecture checks — pass; launchd Workspace/SSH/Beads-Dolt running, health/login 200. Внешние тестовые сообщения Mattermost не отправлялись.
Проверено: SSH race/vet/build; 15 native SSH lifecycle checks и 16 checks на случайных aliases в сети реальной Balda, включая alias-only import без via, автоматический relay, pin failure, retry, restart/revoke/remove. Историческая model-проверка после deployment SSH-маршрута 06:28 UTC: `01a152d9-7d04-7f21-9597-91c259813c7c`, ровно одна Owner confirmation существующего key id, без generic MCP approval; client receipt выше. Полный race-прогон Balda: 142 пакета с тестами; golangci-lint и architecture checks — pass; launchd Workspace/SSH/Beads-Dolt running, health/login 200. Внешние тестовые сообщения Mattermost не отправлялись.
Первичный провал приёмки: [сессия Mattermost](https://mm.qentra.top/qentra/pl/bjb4nhz6o3yoxqg9rs1qcpncjh). Причины и исправление: [[personal/projects/balda/ssh-client-route-2026-10-19]]. Evidence: `~/.local/share/balda-workspace/candidate/client-route/`; backup: `~/.local/share/balda-workspace/backups/client-route-20261019T062059Z`.
@@ -115,7 +117,7 @@ Default private policies имеют изолированную сеть; API/pro
Upstream Codex ACP 1.11.0 требует elicitation capability, которой нет у текущего клиента Balda. В закреплённой сборке добавлен узкий fallback пустой confirmation-only формы на существующий ACP RequestPermission. Форма с полями и неподдержанные режимы без capabilities не принимаются автоматически. Explicit accept/decline/cancel и неизвестные ответы покрыты тестами. Чистая повторная сборка закреплённого source + patch прошла race/lint и дала одинаковый хеш.
В Balda исправлены две причины потерянного ответа: обычный `1` в DM теперь относится к единственному доставленному действующему вопросу той же беседы/сессии; ID отвечающего совпадает с исходным ID автора запроса, без добавления `mattermost:` только к ответу. Проверяются права отвечающего, expiry и время сообщения. Старый `1`, в том числе в пределах той же секунды, не разрешает новый вопрос. Общие каналы и несколько pending-вопросов требуют ответа в треде.
Исторический патч `254f3e29` **откачен** в `3f6a1363`; описанное далее поведение больше не действует. Тогда обычный `1` в DM относится к единственному доставленному действующему вопросу той же беседы/сессии; ID отвечающего совпадает с исходным ID автора запроса, без добавления `mattermost:` только к ответу. Проверяются права отвечающего, expiry и время сообщения. Старый `1`, в том числе в пределах той же секунды, не разрешает новый вопрос. Общие каналы и несколько pending-вопросов требуют ответа в треде.
Проверено: