## Why Технический долг повторного ревью PR #114 (AURORA-1537), задача AURORA-1651. Признак `one_sided` считался по наличию строк ОСВ, а не по суммам: пара «100 млн против строки с нулевым сальдо» выглядела сошедшейся (`one_sided = false`, `exceeds_threshold = false`), а «0.00 против 0.00» с одной строкой — подсвечивалась ложно. Книга xlsx заливала пару только по порогу. Режим «все счета» брал забалансовые счета 001–012: например, 009 «Обеспечения выданные» на компанию группы давал ложное расхождение (решение владельца 16.10.2026). Реализация — PR RSHB/arm-core#165 (ветка `AURORA-1651`, автор — Потапова), доведена ревьюером по решению владельца 22.10.2026. ## What Changes - `one_sided` = ровно одна из сумм пары нулевая (знак не важен: сальдо в ОСВ бывает отрицательным). - XLSX шахматки заливает пару, если `exceeds_threshold` или `one_sided`; в шапке режима ALL — «Все балансовые счета». - Режим ALL — только балансовые счета (`is_off_balance = false`); MANUAL принимает любые, включая забалансовые. - Правила — `../docs/context/05-domain-rules.md` §6 (docs-PR вместе с этим change), открытые вопросы — OQ про счёт `000` и процент при отрицательной меньшей стороне. ## Non-goals - Подсветка односторонней пары на экране шахматки — фронт, PR #158 (change `intercompany-matrix-ui`). - Фильтры `GET /directories/accounts` (были в первой редакции PR, убраны решением владельца 22.10.2026). - Процент расхождения при отрицательной меньшей стороне и исключение счёта `000` из ALL — открытые вопросы. ## Capabilities ### Modified Capabilities - `consolidated-osv`: требования «Шахматка по сводной ОСВ версии» и «XLSX шахматки». ## Impact - `api/src/services/intercompany_matrix.py`, `api/src/services/intercompany_matrix_export.py`; тесты шахматки. - Контракт API не меняется (поля те же), меняется смысл `one_sided` и состав счетов режима ALL.