# Design: Срез 4 (сквозное) — документы ## Context Дочерний change в arm-core (`slice-4-consolidation`) держит технические решения D-1…D-16. Здесь — что меняется в документах контекста и модели и почему. ## Decisions ### D-1. Новая версия DBML ради одной колонки `osv_entry.counterparty_match_kind` — ручное решение аналитика (DECISION-5 разрешает хранить ручные решения), а `INN/NAME/ALIAS` — зафиксированный шаг автоматического резолва, нужный для подсветки строк к проверке. Вычислять на чтение нельзя (алиас после ручного связывания маскирует ручное). Версия 5.16, v5.15 остаётся в репозитории. ### D-2. §2 переписывается из «[открыто]» в правило Формула остаётся; добавляются ключ, выбор источников, пробел и нули. OQ-03 закрывается решением владельца 06.10.2026. ### D-3. §3 п. 1 меняет «последние подтверждённые» на явную привязку Подхват при создании версии и расширении периметра заменяет fallback «если версия ещё не зафиксировала документы». Фраза убирается, чтобы код и правило не расходились. ### D-4. Контракт API для фронта — отдельный документ в `docs/dev/` Разработчик фронта не читает OpenSpec arm-core. `api-contract-slice-4.md` — выжимка: маршруты, схемы, фильтры, коды ошибок, соответствие экранам макета. Источник истины — спеки arm-core; документ помечен как производный. ## Decisions made without discussion | # | Дата | Решение | Обоснование | Цена ошибки | |---|---|---|---|---| | 1 | 2026-10-06 | OQ-40 закрывается допущением `reporting_date` по правилу банка, макет помечен неточным | владелец не возражал на двух срезах; правило банка — в DBML note | одно поле, правится миграцией данных | | 2 | 2026-10-06 | Контракт для фронта выносится в `docs/dev/api-contract-slice-4.md`, а не в `docs/contracts/` | `docs/contracts/` — JSON Schema между сервисами с версией; API фронта описывает OpenAPI | дублирование OpenAPI текстом; помечено «производный» |