0.134.41

Fixed (LOW §5 — 20 задач, см. docs/audit/backend-2026-06.md §5)

Security (L-SC-1..L-SC-9)

  • L-SC-1 password_policy.go: добавлен комментарий про SHA-1 k-anonymity API для HIBP.
  • L-SC-3 keymanager.go: key ID теперь k<unix><nanosecond> — исключает коллизии при батчинге.
  • L-SC-5 keymanager.go: IsLegacyPlaintext переведён на errors.Is(err, ErrLegacyPlaintext) вместо string-matching.
  • L-SC-6 exitcodes.go: добавлена константа ExitUnknown = -1, exitCodeFrom использует её.
  • L-SC-7 backoff.go: doc-комментарий «single-goroutine: caller lifecycle loop».
  • L-SC-9 lifecycle.go: doc-комментарий с контрактом sleepOrSignal.
  • L-SC-2/4 secrets.go: convention-комментарий про base64 encodings между пакетами.

Store (L-ST-1..L-ST-6)

  • L-ST-1 dual.go: добавлен quoteTable() helper, 3 места конкатенации заменены.
  • L-ST-3 Миграция 075_audit_message_indexes: индексы на messages(user_id), audit_log(action), audit_log(resource_type).
  • L-ST-4 sqlite.go: doc-комментарий на GetAgent (3 лёгких запроса, ~10 rows max).
  • L-ST-6 hnsw.go: rand.NewSource(42)cryptoSeed() через crypto/rand.

Agent (L-A-2, L-A-8, L-A-12, L-A-15)

  • L-A-2 actor.go: при provider == nil отправляется WS error event пользователю.
  • L-A-8 actor.go: ask_user branch теперь вызывает recordUsage для учёта LLM-токенов.
  • L-A-12 context.go: dynamicRAGTopK хардкод вынесен в именованные константы.
  • L-A-15 plan_strategy.go: parsePlanResponse теперь обрабатывает markdown fence (```json).

Server (L-S-1, L-S-3)

  • L-S-1 audit.go: добавлены skip-префиксы /api/v1/metrics, /api/v1/ws/ticket.
  • L-S-3 helpers.go: doc-комментарий для nilSlice/nilPtrSlice.

Documentation

  • L-MIG-1 ADR 2026-06-07-migration-066-069-irreversible.md — необратимые миграции.
  • §5 Все 50 LOW-задач отмечены статусом в audit-файле (37 FIXED, 9 DEFERRED/N/A, 4 ранее FIXED).