4d7f355dcad31f103ed80272c29e3702e7d9c874
Конвейер 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>
Description
No description provided
Languages
JavaScript
98.7%
Python
1%
Shell
0.3%