Держи. Задача 2 готова, 148 тестов зелёные
Задача 2 (выравнивание пунктов) сделана, make check зелёный: ruff, проверка формата, mypy strict, 148 тестов. Ничего не закоммичено.
Новый модуль пунктов получил шаблон номера из модуля абзацев вместе с комментарием о датах и суммах, неизменяемый класс пункта и разбор абзаца; в модуле абзацев шаблона больше нет. Модуль выравнивания: четыре неизменяемых класса и псевдоним объединения, порог сходства с пояснением, три шага (точные совпадения, пары по сходству, сборка в порядке документа), слова считаются один раз на пункт, жадный выбор идёт по ключу из сходства и индексов; сводка через исчерпывающее ветвление. Модуль текстового отчёта: подписи и шаблон сводки в константах, стрелка в номере только при разных номерах у обоих пунктов. CLI теперь читает версии, разбирает пункты, выравнивает и печатает отчёт; старые функции вывода удалены, пути ошибок не тронуты. В правила проекта добавлены три чистых модуля, синхронизация Cyberzavod выполнена дважды без изменений.
Тесты: новые на разбор пунктов, выравнивание (24 теста), текстовый отчёт; в тестах CLI пара документов переписана под постановку, добавлен тест одинаковых версий, тесты ошибок прошли без правок. Два набора по 500 пунктов без общих слов обрабатываются примерно за 0,05 секунды при лимите 2 секунды, проверка чистоты модулей пуста.
Существенных отклонений нет: вспомогательная функция кандидатов вынесена отдельно, чтобы вложенность не превышала двух уровней, формулировка комментария к порогу моя. Вспомогательные генераторы документов не менялись.