# Модель данных v5.27 — КФО без сохранения промежуточного расчёта Миграция arm-core: `0014_dbml_v5_27`, после `0013_dbml_v5_26`. База: [v5.26](entities-v5.26.md). Схема: [data-model-v5.27.dbml](data-model-v5.27.dbml). Поле `kfo_result.snapshot` не вводится. Незамороженная таблица рассчитывается при каждом GET без записи в БД. До заморозки в `kfo_result` сохраняется обоснование порогов, в `consolidation_version` — отклонения от методологии, в `kfo_result_line` — только строки с непустыми комментариями. Расчётные ячейки компаний не создаются. Обязательное `consolidated_amount` строки комментария равно 0 и не используется при чтении; `computed_at` шапки при её создании заполняется временем расчёта ответа PUT, а не временем заморозки. При переходе в VERIFIED таблица рассчитывается по текущим источникам, ручные поля накладываются на неё, полный результат сохраняется и получает `is_frozen = true` в одной транзакции с переходом статуса. После заморозки GET читает сохранённый результат. Повторная заморозка не пересчитывает результат. Миграция удаляет прежний расчётный кэш незамороженных таблиц, сохраняя комментарии, обоснования и отклонения от методологии. Замороженные суммы не изменяются. Удалённый промежуточный расчёт при downgrade не восстанавливается. `vgo_assignment.side` добавляется по DOC-277424 §3.4: NULL для ББ, D/K для ОФР. Уникальность ББ — версия/тип/строка, ОФР — версия/тип/строка/сторона. Старые назначения ASSIGN переносятся по счетам правил, неоднозначные решения блокируют миграцию; UNASSIGNED переносится на D и K. Откат запрещён при конфликте старого уникального ключа. `correction.ordinal` не вводится; дополнительные строки упорядочиваются по ID. Поле API `data_changed` сохраняется для совместимости и всегда равно false: отдельного состояния неактуального сохранённого расчёта больше нет.