statement_checks.yaml: необязательный ключ group у мягких соотношений одной
формы и варианта. В колонке сошлась хоть одна альтернатива — нарушений группы
нет; не сошлась ни одна — одно нарушение, ближайшая к цели. group у жёсткого —
ошибка загрузки.
Соотношения 2400 ОФР — группа net_profit; в упрощённую форму добавлен вариант
с +2410. Положительный 2410 (доход по налогу, ФСБУ 4/2023) больше не даёт
ложного «2400 = 2300 − 2410 + 2420». Прогон ОФР Фарватера — без нарушений.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Шапка не совпадала с docs/contracts/statement-code-orders.yaml (ревью,
раунд 2): комментарии про sync-statements и репозиторий arm-statements
вместо текста про библиотеку. Перечни кодов не менялись.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Строка сразу под строкой заголовка сегмента проверяется на нумерацию мягко: ячейка со сбоем OCR
даёт своё единственное целое («• ■ 1», «3гола», «гола\n4»), ячейка без цифр («/», «V») — пропуск.
Подписи шапки сравниваются без хвоста-номера столбца («Коды\n2» → «коды»), поэтому склеенная с
нумерацией повторная шапка становится шапкой сегмента.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Столбец без подписи правее последней колонки с подписью периода колонкой сумм
не считается; вместо COLUMN_WITHOUT_DATE — info NUMBERS_OUTSIDE_TABLE с адресами
ячеек. Решение владельца 18.10.2026 (arm-ka-docs#116, Р-31).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
M-2: README и docstring normalize_candidate — при отсутствии документа
candidate.warnings хост обрабатывает сам. M-3: тесты сопоставления
по дате (переставленные даты) и по порядку (дубль даты).
M-4: «Косарев» заменён на «Иванов» в тестах и docstring.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Адрес ячейки остаётся в message. Добавлен инвариант-тест по golden:
line_refs предупреждений документа входят в ref строк, locator нет,
column_index есть среди колонок.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
После выбора строки по подписи кода проверяется и нижняя строка (годы):
если подпись шапки отдельно не период, а вместе с нижней — период,
строки склеиваются. Тесты: Excel, OCR, повторная шапка в два ряда.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
Пять golden-входов по Review Focus 1–5, эталоны, свойство status_input_from_contract(to_contract(d)) == status_input(d)
на golden и граничных кейсах (DISCLOSURE, без строк, абсолютная колонка без даты), test_public_api, RulesError в __all__,
README: публичный API, словари, golden-update.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
normalize_candidate / normalize; __init__ экспортирует уже реализованный публичный API.
DISCLOSURE: шапка не проверяется, предупреждений шапки нет, статус done (P1-6).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W