## Context Реализация — PR RSHB/arm-core#159. Результирующая таблица ВГО (§6) — чистая функция от сводной ОСВ версии и периметра (`calculate_result_table`); в БД не хранится (DECISION-5). Выгрузка повторяет устройство выгрузки шахматки (`intercompany_matrix_export.py`, change `intercompany-matrix`). ## Decisions 1. JSON и xlsx строятся одним методом сервиса `_build_result_table` (`build_with_members` → `calculate_result_table`), поэтому состав и порядок компаний, статьи и `group_total` совпадают; параметров у таблицы нет. 2. Книга: лист «Результирующая таблица», шапка (ГК, период, версия, единицы «руб.»), строка заголовка «Статья ВГО» / компании / «Итого по группе», суммы — `Decimal` с форматом `#,##0.00`, закреплены заголовок и первая колонка. Имя файла — `intercompany-result-table_<ГК>_<год>-<квартал>_v.xlsx` (RFC 5987, запасное ASCII-имя). 3. Аудит `EXPORT` пишется после построения книги: ошибка расчёта (404, 422) или сборки книги события не оставляет. 4. Реквизиты версии в шапке и имени файла общие для шахматки и результирующей таблицы (`VersionExportInfo`, `_write_details`, `_group_name`, `_xlsx_response`) — без копий кода. ## Decisions made without discussion - 22.10.2026. Требование автора перенесено из `openspec/specs/consolidations-api` в дельту `ADDED` отдельным требованием со сценариями (у автора — абзац внутри требования «Результирующая таблица ВГО» без сценария); событие аудита добавлено в `audit-trail`. Обоснование: владелец поручил закрыть замечания ревью силами ревьюера, прецедент — change `intercompany-matrix`. Цена ошибки: низкая — текст правится в этом change'е до архивации. - 22.10.2026. Аудит экспорта результирующей таблицы оформлен отдельным `ADDED`-требованием, а не `MODIFIED` «Аудит экспорта шахматки». Обоснование: у событий разный payload (`articles` вместо режима и счетов), отдельное требование не переписывает согласованный текст. Цена ошибки: низкая. - 22.10.2026. Компания без суммы в статье при сборке книги даёт `KeyError` вместо молчаливого 0. Обоснование: `calculate_result_table` выдаёт сумму на каждую компанию периметра, пропуск — ошибка расчёта, которую нельзя прятать в файле. Цена ошибки: при таком дефекте расчёта выгрузка ответит 500 вместо файла с нулём. - 22.10.2026. Общие реквизиты книги вынесены в базовый `VersionExportInfo`, затронут и код выгрузки шахматки. Обоснование: замечание ревью о копиях шапки и имени файла. Цена ошибки: конфликт слияния с PR #141 (тот меняет `MatrixExportInfo`); порядок — сначала #141, затем ребейз #159.