1.7.3

Fixed (#401)

  • DualStore не реализовывал store.ToolSearcher — без двух делегирующих методов type assertion в гейтах toolsearch (actor.go/loop.go) всегда проваливался, и per-server deferred-режим тулов (f5e8848 / #372) молча не работал, а в journal на каждом ходе сыпался WARN toolsearch: store does not implement ToolSearcher; the middleware stays disabled (#401; десятки раз в день с v1.5.1). Тонкость диагностики issue: main.go оборачивает в DualStore стор ВСЕГДА, поэтому middleware был выключен не только на dual-store/PG-инстансах, а во всех деплоях. Добавлены UpsertToolIndex/SearchToolsFTS (делегирование через capability-резолвер — current типизирован интерфейсом Store, где методов ToolSearcher нет by-design #329) и compile-time assertion var _ ToolSearcher = (*DualStore)(nil), который и должен был поймать регрессию v1.5.1.

Review (#401)

  • ocr review — 0 находок. Проверки: go test ./... -count=1, golangci-lint run ./internal/store/... (0), go vet, make build-cross (6 платформ) — зелёные. Тесты: TestDualStore_ImplementsToolSearcher (compile-time контракт), TestDualStore_ToolSearcherDelegation — round-trip upsert+search через DualStore{current: SQLiteStore} с проверкой, что индекс реально лёг в бэкенд. Исчезновение warn на проде — после деплоя.