# Design: Срез 2c (сквозное, docs) ## Context См. proposal и `arm-core/openspec/changes/slice-2c-osv-ingest/design.md` (D-1…D-13). ## Decisions ### D-1. v5.15 без expression-индекса `lower(email)` как уникальный индекс не поддерживается сверкой ORM↔DBML (индексы сравниваются по колонкам). Вместо этого email нормализуется в нижний регистр при записи, уникальность — прежний UNIQUE. Миграция приводит данные. ### D-2. Правила маппинга фиксируются в §1.3/§9 после реализации Как в Срезе 2a: задача docs-change «по факту» выполняется после merge дочернего change'а, расхождения — правкой §. ### D-3. Автозамена — новый §9.5 Решение владельца 05.10.2026: новый файл с документом того же типа/счёта/периода заменяет прежние (в т.ч. `CONFIRMED`, с пометкой в аудите); удаление файла — пока нет `CONFIRMED` и файл никого не заменял; после Среза 4 — ограничение по консолидациям. ## Decisions made without discussion | № | Дата | Решение | Обоснование | Цена ошибки | |---|---|---|---|---| | 1 | 2026-10-05 | D-1: email в нижнем регистре вместо `lower(email)`-индекса | сверка DBML | индекс в v5.16 | | 2 | 2026-10-05 | D-3: §9.5 автозамена/удаление по решению владельца; удаление заменившего файла запрещено | целостность цепочки версий | ослабить | | 3 | 2026-10-05 | `period_check = UNKNOWN` до Среза 4 | нет версии консолидации | пересчёт в Срезе 4 |