0.167.41

Removed

  • Уборка мёртвого кода контекстного слоя ( — P3, аудит 2026-08-context). Часть объявленных сущностей описывала поведение, которого нет в коде, и вводила в заблуждение при доработках. Удалено: тип Compressor целиком (Compress, summarizeAndExtract, persistFacts, compressorFact, makeCompressorCompactFn, strPtr, константы compressorProtectedFirst/Last, compressorMinDiscard) — нигде не инстанцировался вне тестов со времён перехода на memory.AutoCompact; решение «подключить или удалить» откладывалось до закрытия (структурированный handoff) — закрыт, handoff реализован в memory.CompactionHandoffPrompt, заготовка не понадобилась; живой emergencyCompact сохранён. removeOrphanedToolMessages в internal/memory/autocompact.go — только тестовые вызовы, рабочий дубль логики — repairToolPairs (context.go) + позиционная тёзка в providers/sanitize.go (не тронута); 4 теста удалены вместе с функцией. Мёртвые константы token_estimator.go: CompactHardThreshold, ContextSafetyReserve, ImageTokenWeight, CompactCooldownSeconds — ноль потребителей (живой CompactSoftThreshold остался). Сохранено как legacy-shim: trim короткого маркера [Сжатый контекст] в buildSummarySection (chat_history.go) — генератор (Compressor) удалён, но в БД остаются summary-строки прошлых деплоев; без trim маркер протекал бы в tool-вывод (выявлено ocr review). docs/Memory.md §7 переписан по фактическому коду: прежний текст описывал удалённый TTL/DELETE-алгоритм (30 мин простоя, DELETE FROM messages, session.metadata) — актуально: событийный гибридный триггер (ADR 2026-06-30-autocompact-event-driven), non-destructive soft-delete (ADR 2026-06-30-non-destructive-compaction), CompactConfig из трёх полей, archiveToConversation + CompactionHandoffPrompt (#285), маркер [Resumed Session] ≤1 в активном окне.