[2026-09-26] eagle: personal/plans/balda-mm-pr-plan.md personal/projects/balda/balda-kraken-mm-deploy.md personal/tech/music-tags-repair-truenas.md
This commit is contained in:
1 parent
7564ae26ac
commit
7dbb3871b0
3 files changed
+218
-11
No files matched your search
@@ -7,6 +7,105 @@
|
||||
> Со всеми поддерживаемыми фичами и тестами. Вперёд! Без вопросов и требующих апрува команд.»
|
||||
> Часть [[personal/projects/balda/balda-mm-delegation-plan]] (Фаза 2 → PR в апстрим).
|
||||
|
||||
## ✅ БОЕВАЯ ПРИЁМКА ПРОЙДЕНА — 2026-09-26 (образ `0.1.10`, коммит `9f1e6c9c`)
|
||||
|
||||
**Сквозной путь работает ОТ АККАУНТА ALEX.** Это первая настоящая приёмка (прошлая была
|
||||
ложной — от `testuser`).
|
||||
|
||||
### Доказательство — лента канала `balda-test`
|
||||
|
||||
```
|
||||
1790413414689 | edxrgupoxiyg5gzmr79tjypbme | слово ← ОТВЕТ БОТА
|
||||
1790413409055 | cbwsorzwoigbtrdnteugnx4aqo | @balda скажи одно слово ← пост ALEX
|
||||
```
|
||||
|
||||
Запрос — `cbwsorzwoigbtrdnteugnx4aqo` (**аккаунт Alex**, `admin`), ответ — бот.
|
||||
В логах: **`settlement_stage=accepted`** (НЕ `unauthorized`!), `assembled provider user content`,
|
||||
`delivery settled`.
|
||||
|
||||
### Состояние привязки владельца — починено
|
||||
|
||||
```
|
||||
balda_user_bindings:
|
||||
channel_type = mattermost
|
||||
principal = cbwsorzwoigbtrdnteugnx4aqo ← БЕЗ префикса ✅ (иначе unauthorized)
|
||||
display_name = mattermost:cbwsorzwoigbtrdnteugnx4aqo ← ОДИНАРНЫЙ префикс ✅ (нет мусора)
|
||||
```
|
||||
|
||||
Прошлый дефект двойного префикса вылечен **в коде** (идемпотентный `MattermostSubject`),
|
||||
в БД мусора нет.
|
||||
|
||||
### WS-здоровье
|
||||
|
||||
| Метрика | Значение |
|
||||
|---|---|
|
||||
| `bad_seq` | **0** ✅ |
|
||||
| `Invalid sequence` | **0** ✅ |
|
||||
| `pong` | **6** (пинг раз в 30 с работает) |
|
||||
| `RestartCount` | **0** ✅ |
|
||||
| Контейнер | `balda-mm:0.1.10` Up стабильно |
|
||||
|
||||
### Старт — чистый
|
||||
|
||||
```
|
||||
mattermost transport configured server_url=http://mattermost:8065 bot_user_id_set=true
|
||||
session manager ready balda_provider=deepseek
|
||||
mattermost websocket connected ws://mattermost:8065/api/v4/websocket
|
||||
Balda bot started.
|
||||
```
|
||||
Никакого crash-loop, `advertised commands have no actor handler` **отсутствует**.
|
||||
|
||||
### ⚠️ Два не-блокера, которые стоит знать
|
||||
|
||||
1. **`warn: getMe response missing result`** при старте. Косметика: startup-лог не смог
|
||||
прочитать identity бота. На работу НЕ влияет — `bot_user_id_set=true` из конфига, ответы
|
||||
идут. Стоит починить отдельно (low priority, в апстриме).
|
||||
2. **`transport_user_id = c6udeze8dfrdxm5jbgq55bd58r` в логах сессии** — это **`testuser`**,
|
||||
id прошлого владельца, зашитый в **persisted-метаданные сессии** `mm-c-7aafea13` (создана
|
||||
в прошлой сессии от testuser). Авторизация при этом прошла верно (по `principal` из
|
||||
bindings), ответ ушёл Alex'у. **Но это грязь:** сессия хранит чужой `user_id`.
|
||||
🔴 Если Alex хочет чистую сессию — `/reset` в канале создаст новую с его `user_id`.
|
||||
На работу не влияет (проверено: ответ пришёл).
|
||||
|
||||
### Деплой — как сделано (воспроизводимо)
|
||||
|
||||
```bash
|
||||
# 1. образ из PR-коммита (на Mac)
|
||||
cd ~/Developer/balda
|
||||
docker buildx build --builder arm64builder --platform linux/arm64 \
|
||||
-f Dockerfile.release --build-arg VERSION=v0.3.1-mm-pr8 \
|
||||
--build-arg COMMIT=$(git rev-parse --short HEAD) \
|
||||
--build-arg BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
|
||||
--provenance=false --load -t balda-mm:0.1.10 .
|
||||
|
||||
# 2. перенос (распаковка zstd НА MAC — на хосте zstd 1.5.4 не читает фрейм macOS)
|
||||
docker save balda-mm:0.1.10 -o /tmp/balda-0110.tar
|
||||
zstd -3 -T0 -o /tmp/balda-0110.tar.zst --force /tmp/balda-0110.tar
|
||||
zstd -dc /tmp/balda-0110.tar.zst | ssh kraken 'docker load'
|
||||
|
||||
# 3. переключение с бэкапом compose (скрипт tools/mm-switch-image.sh)
|
||||
ssh kraken "cat > /tmp/mm-switch-image.sh" < tools/mm-switch-image.sh
|
||||
ssh kraken 'bash -n /tmp/mm-switch-image.sh' < /dev/null # SYNTAX_OK
|
||||
ssh kraken 'bash /tmp/mm-switch-image.sh' < /dev/null
|
||||
```
|
||||
|
||||
**Скрипты, созданные для этого деплоя:**
|
||||
| Скрипт | Что делает |
|
||||
|---|---|
|
||||
| `tools/mm-switch-image.sh` | смена тега образа в compose + бэкап + `--force-recreate` |
|
||||
| `tools/mm-whoami.sh` | какой MM-аккаунт у PAT (`/users/me`) — нужен для приёмки от заказчика |
|
||||
|
||||
⚠️ **Проверка CA в образе:** `docker save` даёт **OCI**-формат, где файлы в
|
||||
`blobs/sha256/*`; `tar -tf image.tar | grep ca-certificates` даст **0** (ложный минус).
|
||||
Проверять по слоям: распаковать и искать в `blobs/`, или верить `docker inspect` →
|
||||
`SSL_CERT_FILE` в `Config.Env`.
|
||||
|
||||
⚠️ **Приёмка обязывает иметь PAT заказчика.** `/tmp/admin-tok` = PAT Alex
|
||||
(`cbwsorzwoigbtrdnteugnx4aqo`, `admin`) — сверено через `mm-whoami.sh` **до** постинга,
|
||||
а не на глаз. Без этого тест снова был бы от `testuser` = ложная приёмка.
|
||||
|
||||
---
|
||||
|
||||
## ✅ PR ОТКРЫТ — https://github.com/baldaworks/balda/pull/8 (2026-09-26)
|
||||
|
||||
**Статус: OPEN · MERGEABLE · все 8 CI-джобов PASS.**
|
||||
|
||||
Reference in new issue
Block a user