[2026-09-26] eagle: personal/projects/balda/balda-kraken-mm-deploy.md personal/projects/balda/balda-mm-delegation-plan.md personal/tech/balda-go-fx-pitfalls.md personal/tech/hermes-secret-redaction-bypass.md
This commit is contained in:
1 parent
a85e45588f
commit
f3b07534e4
4 files changed
+96
-25
No files matched your search
@@ -175,6 +175,21 @@ MM-адаптер при копировании «на глаз».
|
||||
**живой запуск бинаря**. Для нового транспорта добавлять в чек-лист шаг:
|
||||
`docker run` (или локальный `balda start`) с включённым транспортом **до** объявления готовности.
|
||||
|
||||
✅ **Фикс подтверждён живым запуском (2026-09-26).** После снятия `goal` контейнер `balda-mm`
|
||||
на Kraken перестал падать и дошёл до рабочего состояния:
|
||||
|
||||
```
|
||||
{"component":"balda.session_manager","balda_provider":"deepseek","message":"session manager ready"}
|
||||
{"component":"balda.channel.mattermost.ingress","url":"ws://mattermost:8065/api/v4/websocket",
|
||||
"message":"mattermost websocket connected"}
|
||||
{"message":"Balda bot started. Press Ctrl+C to stop."}
|
||||
```
|
||||
|
||||
📌 Порядок проверки, который сработал: правка дельтой → `go build ./...` → `go test
|
||||
./internal/apps/balda/actors/command/...` → пересборка образа → `docker compose up -d` →
|
||||
`docker logs | grep -E "started|websocket connected"`. **Не** объявлять транспорт готовым
|
||||
по «exit 0» и «conтейнер Up» — только по этим двум строкам в логах.
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Env-override работает только по ключам, уже присутствующим в YAML
|
||||
|
||||
@@ -291,6 +291,28 @@ ssh kraken "MM_ADMIN_PW='…' bash /tmp/x.sh" < /dev/null
|
||||
|
||||
---
|
||||
|
||||
### 📌 Как отличить «транспорт испортил» от «файл испорчен»
|
||||
|
||||
Серия из шести осыпавшихся вариантов дала чёткий критерий. Признак транспорта: **локальный файл
|
||||
цел, а хост видит мусор**. Проверка за один вызов:
|
||||
|
||||
```bash
|
||||
ssh host "cat > /tmp/p.sh && bash -n /tmp/p.sh && echo SYNTAX_OK || echo SYNTAX_FAIL"
|
||||
# затем сравнить длину строки на хосте и в локальном файле:
|
||||
ssh host 'awk "NR==N{print length(\$0)}" /tmp/p.sh' < /dev/null
|
||||
awk 'NR==N{print length($0)}' ./p.sh # локально
|
||||
```
|
||||
|
||||
Если длины **совпадают** — файл доехал, проблема в логике. Если в логе хоста строка короче
|
||||
или содержит `***` — сработала редакция, и править надо **не файл**, а способ передачи.
|
||||
|
||||
⚠️ Симметричная ловушка: `read_file` тоже показывает отредактированный текст. Отсюда правило —
|
||||
**никогда не собирать `patch`-овский `search` по выводу `read_file`**, если в строке есть
|
||||
`TOKEN`/`AUTH`/`Bearer`/`$o`. Файл на диске целый, и `patch` запишет байт-в-байт, вырезав код
|
||||
по-настоящему. Проверять `awk`/`grep -c`/`od -c`, а не глазами.
|
||||
|
||||
---
|
||||
|
||||
## Валидация результата (обязательный шаг)
|
||||
|
||||
После записи конфига — проверить, что в файле **нет** заглушки, но **есть** значение:
|
||||
@@ -320,3 +342,6 @@ grep "MM_SQLSETTINGS_DATASOURCE" compose.yml | grep -q 'postgres://${PGUSR}:\${P
|
||||
**E** (`printf` с format-строкой), **F** (`ssh 'bash -s' < file` съедает stdin) и
|
||||
**предпочтительный паттерн**: скрипт файлом → `cat > /tmp/x.sh` → `bash -n` на хосте →
|
||||
исполнение. Найдено на деплое Балды на Kraken.
|
||||
- **2026-09-26 (позже)**: добавлен §«Как отличить "транспорт испортил" от "файл испорчен"» —
|
||||
критерий по расхождению длин строки на хосте и локально, плюс правило не собирать
|
||||
`patch`-овский `search` из обрезанного `read_file`.
|
||||
Reference in new issue
Block a user