0.134.38

Fixed (MEDIUM §4.3–4.7 remaining + CRITICAL partial — 12 задач, см. docs/audit/backend-2026-06.md)

  • C-SC-4 Атомарный refresh-rotation: RevokeRefreshTokenIfActive (SQLite + PG + DualStore) — UPDATE ... WHERE revoked_at IS NULL с RowsAffected(). TOCTOU-окно закрыто.
  • M-X-4 env_scrub.go: pass → word-boundary regex (?:^|[-_])pass(?:$|[-_]) — убраны false positives на COMPASS, BYPASS.
  • M-M-3 AutoCompactService: jitter ±20% на первый тик — при рестарте все агенты не стартуют одновременно.
  • M-M-4 AutoCompactService.Stop(): sync.WaitGroup + wg.Wait() — корректное завершение goroutine.
  • M-M-7 Dream.loadDynamicConfig: кэш с TTL 60s — не дёргает БД на каждом Run().
  • M-M-11 Consolidator.persistFacts: задокументирована не-атомарность (acceptable для фоновой задачи).
  • M-M-13 Indexer: IndexRequest.CreatedAt передаётся в AddChunk (SQLite + PG) — чанки наследуют дату документа.
  • M-M-14 recall_scoring.go: multi-format parseRecallTime (RFC3339Nano, RFC3339, SQLite) — работает на PostgreSQL.
  • M-M-16 CachedEmbedder: async DB cache write через goroutine — не блокирует Embed().
  • M-M-20 reranker/llm.go: rune-aware truncate — не разрезает UTF-8 мультибайтные символы.
  • M-M-21 reranker/ollama.go: regex [-+]?\d*\.?\d+ вместо Sscanf — парсит число из произвольного ответа.
  • M-U-9 permissions/presets.go: slog.Warn при customAllowPatterns активен — видимость security risk.