Files
brain/tools
Дмитрий 4d7f355dca fix(secretary): схлопывание дублей протокола (идемпотентный канон)
Конвейер reconcile только ДОПИСЫВАЛ строки (модель копит, restoreLostLines
возвращает) — раздел «Решения» рос вечно (на «линзе» 714 записей, на
«протоколе» 40+ копий одного решения; «История» спамила [<-9][<-9]...).

Добавлен collapseProtocol: канон по кускам строки (split ' — ', убираем
ДОСЛОВНЫЕ повторы кусков, порядок и первое вхождение храним), слияние по
канону+статусу (struck/done), объединение ходов (union). Идемпотентно и
lossless — контроль смысла: ни одна уникальная строка не теряется и не
выдумывается. События Истории дедупятся по (turn,dir).

Вшит в reconcileTurn (вход = самолечение раздутого дела, выход = дубли не
копятся) и в stop-hook перед записью (финальный чокпоинт: ловит срыв
reconcile / работу без ключа / уже накопленный мусор).

9 новых тестов (вкл. идемпотентность и контроль смысла); свод секретаря
106/106 зелёных. Реестр СВ (hidden/nextSvId), шаги, тема — не трогаются.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 06:37:14 +03:00
..