4.4 KiB
4.4 KiB
Context
Сквозной дизайн — change docs unified-statement-normalization (design.md, specs/arm-core/spec.md, план
plans/2026-10-18-plan-3-arm-core.md). Здесь — решения уровня ядра для части Б; решения части А — в
openspec/changes/unified-normalization-core-a/design.md (D-1…, A1-1…A5-6, P3-1…P3-24). Схема данных —
../docs/model/data-model-v5.19.dbml; код части А уже в main.
Goals / Non-Goals
Goals и Non-goals — см. proposal.md.
Decisions
- D-1. Единственная точка входа в пакет.
import arm_statements— толькоapi/src/services/statements_engine.py(протоколStatementsEngineи его реализация) иapi/src/domain/stored_form.py; остальной код ядра работает с протоколом. - D-2. §7 хранится только как
document_issue.GET …/statementиPOST …/confirmчитают нарушения из записей; временный расчёт на лету (P3-14 части А) удаляется в B6. - D-3. Архивация вместе с частью А (R-7 части А).
unified-normalization-core-bархивируется только вместе сunified-normalization-core-aи только после выкладки обеих частей; сначала архивируется А, затем Б (дельты Б MODIFIED опираются на требования, которые А добавляет). - D-4. Дельта «копия словаря §7 ядра» оформлена как MODIFIED. Требования с таким именем в
openspec/specs/нет: упоминание копии живёт в «Соотношения §7 по колонкам»; поэтому удаление выражено правкой этого требования (и пунктом «Словари ядра» вdocuments-api), а неREMOVED.
Decisions made without discussion
Решения, принятые без обсуждения с человеком на этапе плана и исполнения части Б (маркеры P3-n — из плана 3,
R-n — рулинги контроллера, Р-n — решения владельца). Таблица дополняется задачами B1–B6.
| Дата | Решение | Обоснование | Цена ошибки |
|---|---|---|---|
| 2026-10-18 | R-1 (Р-40). CODE_NOT_IN_DICTIONARY / CODE_NOT_IN_EDITION пишутся только для кодов из ровно четырёх цифр; пятизначные подстроки Excel не проверяются. P3-7 плана в этой части заменён (запись на код документа сохраняется, пятизначные коды — нет) |
решение владельца 18.10.2026 (Р-40) перед исполнением Б; закрывает O-3 (поток info у пятизначных) |
пропущенный info у нестандартного пятизначного кода; восстановление — снять условие длины кода в маппере 2.0 и пересчёте |
| 2026-10-18 | R-2 (Р-34). Подтверждение кода строки — флаг is_confirmed; line_code_confidence и line_code_modified не меняются (P3-16 части А) |
решение владельца 18.10.2026; в пересчёте Б правило is_confirmed ⇒ needs_review строки = false берётся из P3-16 |
нет — поведение уже реализовано в части А |
| 2026-10-18 | R-3. Удаление копии словаря §7 в дельте оформлено как MODIFIED «Соотношения §7 по колонкам», а не REMOVED (см. D-4); «Ответ GET …/statement» и порядок 409 оформлены новыми ADDED-требованиями, так как в openspec/specs/ и дельтах части А одноимённых нет |
openspec archive требует, чтобы имя REMOVED/MODIFIED существовало; иначе архив упадёт |
при архивации — правка имён заголовков дельт |