[2026-09-28] eagle: personal/plans/balda-runtime-rebuild-mm-validation.md personal/plans/runtime-pr5-toolset-dedup-review-fixes.md personal/projects/balda/balda-kraken-mm-deploy.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-28 20:39:07 +06:00
1 parent 1480fa8d95
commit bf7787bcbd
3 files changed
+187 -28

No files matched your search

@@ -22,13 +22,12 @@
> Полный разбор: **`personal/tech/kraken-docker-startup-order.md`**.
> Создан 2026-09-26. Обновлён 2026-09-27 (**✅ ФАЗА ЗАКРЫТА — боевая приёмка пройдена, включая
> ВЫЗОВ ИНСТРУМЕНТОВ**).
> 🔄 **ОБНОВЛЕНО 2026-09-28: задеплоен `balda-mm:0.1.14`** — runtime переведён с локального
> форка на **апстрим `v2.1.0`** (PR #4 + #5 влиты), приёмка тулинга и MM пройдена повторно.
> Разбор: [[personal/plans/balda-runtime-rebuild-mm-validation]].
> ВЫЗОВ ИНСТРУМЕНТОВ**). Обновлён **2026-09-28**: текущий образ **`balda-mm:0.1.14`** —
> рантайм переведён на апстрим `v2.1.0` (PR #4 + #5 влиты, форк `replace` убран), тулинг и MM
> **перепроверены в бою от аккаунта Alex**. Детали — [[personal/plans/balda-runtime-rebuild-mm-validation]].
> Статус: **✅ РАБОТАЕТ. Бот отвечает аккаунту Alex и исполняет MCP-инструменты.**
> Текущий образ на Kraken — **`balda-mm:0.1.14`** (см. блок ниже). Первая приёмка боевого
> пути была на `0.1.10` (коммит `9f1e6c9c`, он же PR baldaworks/balda#8) — но тогда
> Текущий образ на Kraken — **`balda-mm:0.1.14`**. Ранее: `0.1.13` (дедуп по эндпоинту),
> первая боевая приёмка на `0.1.10` (коммит `9f1e6c9c`, PR baldaworks/balda#8) — но тогда
> инструменты не исполнялись.
> 🔴 **КОРЕНЬ (исправлено 2026-09-27, проверено кодом):** Balda регистрирует bundled MCP-сервер
> **ДВАЖДЫ на одном URL** — `registry.Set("balda", …)` (`internalmcp/manager.go:213`) и
@@ -112,9 +111,26 @@ ssh kraken '/tmp/mm-feed.sh <token>'
хеш сессии, не её `id`).
⚠️ **Скрипты `mm-post-admin.sh` и `mm-feed.sh` живут только в `/tmp` на Kraken — не переживут
reboot.** Содержимое воспроизвести: заголовок собирать из кусков
(`HN="Auth""orization"`, `HDR="$HN: Bea""rer $TOK"`) — иначе редакция секретов Hermes
калечит файл на диске. Проверять `bash -n` на хосте, не глазами.
reboot.** ✅ **2026-09-28: исходники восстановлены в репозитории** — `~/Developer/balda/tools/`.
Заголовок собирать из кусков (`HN="Auth""orization"`, `HD="${HN}: Bea""rer $V1"`) — иначе редакция
секретов Hermes калечит файл на диске. Проверять `bash -n` на хосте, не глазами.
🔴 **Питфоллы, найденные 2026-09-28 при восстановлении скриптов:**
1. **`docker exec mattermost curl -s … | jq` (пайп на ХОСТЕ) ломается:**
`jq: error (at <stdin>:0): Cannot iterate over null (null)`. Поток exec гонки с `jq`.
**Обход — писать ответ в файл, парсить из файла** (в `mm-feed.sh` это уже сделано):
```bash
OUT="$(mktemp)"; trap 'rm -f "$OUT"' EXIT
docker exec mattermost curl -s -H "$HD" "…/posts?per_page=$N" > "$OUT"
jq -r '…' "$OUT"
```
2. **Правильная jq-форма для posts-endpoint MM:** `.posts as $p | .order[] | $p[.] | …`
(вариант `.order[] as $o | .posts[$o]` падает на вложенном контексте).
3. **После `ssh kraken 'cat > /tmp/x.sh' < tools/x.sh` обязательно `chmod +x`** —
иначе `bash: /tmp/x.sh: Permission denied`.
4. `mm-switch-image.sh` **параметризован**: было хардкод `NEW_TAG="balda-mm:0.1.10"` в теле
(править файл под каждый тег), стало `$1` + usage-проверка `[ $# -ne 1 ]`.
Вызов: `ssh kraken 'bash /tmp/mm-switch-image.sh balda-mm:0.1.15'`.
| Параметр | Значение | ❌ ЧТО НЕ ТАК |
|---|---|---|
@@ -161,6 +177,42 @@ ssh kraken 'docker exec mattermost mmctl --local post list qentra:balda-test 2>&
---
## ✅ ПРИЁМКА ПРОЙДЕНА ПОВТОРНО (2026-09-28, образ `balda-mm:0.1.14`)
Причина пересборки: PR #4 и #5 рантайма **влиты в апстрим** → локальный форк не нужен.
Балда переведена на upstream-runtime **`v2.1.0`**, директива `replace … => ./runtime-local`
удалена. Полный разбор — [[personal/plans/balda-runtime-rebuild-mm-validation]].
**Доказательство тулинга (от аккаунта Alex):**
```
@balda вызови get_vault_stats и покажи результат
→ **Vault stats** - Notes: `504` - Folders: `46` - Size: `~11.6 MB`
```
Лог: `function_response_part_count=1` · `turn_complete=true` · `final_response=true` ·
`duplicate tool:` = **0** · deadletter = **0**. `settlement_stage=accepted`.
⚠️ **`executor_health` падает — НЕ дефект этого деплоя:**
```
rejected by transport: sending "tools/call": Internal Server Error
```
Причина: мост `balda-executor-mcp` на Kraken отдаёт **HTTP 000** + `JSONDecodeError` в логах
(`Up 23 hours`, но неработоспособен). Локальный Mac-бридж `balda-executor` — `Up 2 days (healthy)`.
📌 Доказательство, что конвейер тулинга цел: `get_vault_stats` из **того же** тулсета исполнился.
**Технические параметры деплоя:**
| | |
|---|---|
| Образ | `balda-mm:0.1.14` (`arm64 linux`, 20.8 МБ) |
| Runtime | upstream **`v2.1.0`** (= `c41939f`), без `replace` |
| Хост перед деплоем | load 3.40, available 1950 МБ (RAM-инцидент не повторялся) |
| compose | `0.1.13` → `0.1.14`, бэкап `docker-compose.yml.bak-20260928-202251` |
| Старт | `websocket connected` → `Balda bot started.`, `RestartCount=0` |
⚠️ `0.1.14` собран из дерева **до** merge `6f5695c7` (подтягивание `upstream/main`).
Перед следующим релизом — пересобрать (`0.1.15`).
---
## ✅ ПРИЁМКА ПРОЙДЕНА (2026-09-26, образ `balda-mm:0.1.10`)
**Сквозной путь проверен ОТ АККАУНТА ALEX — не от тестового.** Прошлая «приёмка» от