[2026-09-28] eagle: personal/projects/balda/balda-valera.md personal/projects/balda/balda.md personal/tech/balda-go-fx-pitfalls.md
This commit is contained in:
1 parent
a74ce112a6
commit
803a53fd05
3 files changed
+121
-2
No files matched your search
@@ -37,6 +37,10 @@
|
||||
> Ключевой инсайт: апстримный `TurnComplete: true` **маскировал** баг — агент не доходил
|
||||
> до паковки инструментов. Как только патч включил второй раунд, ADK-механика проявилась.
|
||||
> Плюс метод: §«Доказать, что код патча в образе» (распаковать OCI-слои, грепнуть бинарник).
|
||||
> 🔴 **Добавлено 2026-09-27 (PR фикса MCP-тулинга в `runtime`):**
|
||||
> §«Два линтера спорят на одной строке теста» — `staticcheck ST1023` vs `unconvert`;
|
||||
> решение «убрать конструкцию, а не выбирать сторону» + побочный неиспользуемый импорт.
|
||||
> Там же проверенные гейты перед PR в `runtime` и питфолл таймаута `go test -race ./...` (>600 с).
|
||||
> Источник: работа над Mattermost-адаптером Балды (Фаза 2) + деплой на Kraken (Фаза 3).
|
||||
> Проектные доки: [[personal/projects/balda/balda-mattermost-connector]],
|
||||
> [[personal/projects/balda/balda-kraken-mm-deploy]],
|
||||
@@ -68,6 +72,47 @@
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Два линтера спорят на одной строке теста (Go)
|
||||
|
||||
В `runtime`-репо, файл `agentfactory/duplicate_toolset_test.go`:
|
||||
|
||||
```go
|
||||
var asToolset tool.Toolset = ts // ← staticcheck ST1023: «omit type, it's inferred»
|
||||
asToolset := tool.Toolset(ts) // ← unconvert: «unnecessary conversion»
|
||||
```
|
||||
|
||||
**Оба замечания валидны и взаимоисключающи** — правка одного рождает другое. Цикл:
|
||||
`ST1023` → чинишь → `unconvert` → чинишь обратно → `ST1023`.
|
||||
|
||||
📌 **Решение — не вводить переменную вообще.** Проверять тип напрямую:
|
||||
|
||||
```go
|
||||
if _, ok := any(ts).(requestProcessor); ok {
|
||||
t.Fatalf("MCP toolset unexpectedly implements ProcessRequest; dedup premise changed")
|
||||
}
|
||||
```
|
||||
|
||||
⚠️ **Побочный эффект:** после этого импорт `google.golang.org/adk/v2/tool` становится
|
||||
неиспользуемым → компилятор валит `"tool" imported and not used`. Убирать импорт
|
||||
**вместе** с правкой, не отдельным шагом.
|
||||
|
||||
📌 **Правило:** если два линтера требуют противоположного на одной строке — это сигнал
|
||||
не выбирать сторону, а **убрать конструкцию**, из-за которой возник спор.
|
||||
|
||||
### Гейты перед PR в `runtime` (проверенные)
|
||||
|
||||
```bash
|
||||
go build ./... # exit 0
|
||||
go vet ./... # exit 0
|
||||
go tool golangci-lint run ./... # 0 issues
|
||||
go test -race ./... # все пакеты ok
|
||||
```
|
||||
|
||||
⚠️ `go test -race ./...` на этом репо **дольше 600 с** (лимит foreground-таймаута) —
|
||||
запускать в фоне с `notify_on_complete`, а не ужимать лимит.
|
||||
|
||||
---
|
||||
|
||||
## 🔴 Чинить в КОДЕ, а не в данных (двойной префикс вернулся)
|
||||
|
||||
В прошлой сессии я нашёл, что `principal` в `balda_user_bindings` записан как
|
||||
|
||||
Reference in new issue
Block a user