Отступления, принятые при постройке контент-каркаса (ветка feat/content-framework, пакеты 0–7, 221/221 EditMode). Запись извлечена из замороженного 10-reference/data-layer §12; подробный разбор каждого — в архивном Meta - Tech Changelog §2.7.

Решили отступить от дизайна в четырёх местах, и все четыре — про «не усложнять раньше нужды».

1. ContentDatabase — единый плоский список, а не реестр по доменам. Реестр, валидация и менеджер и так работают с любым наследником ContentDefinition единообразно, поэтому разбивка по доменам была бы структурой ради структуры — на 28 ассетах. Шов на дробление оставлен: когда ассетов станет много, разделить можно без переписывания потребителей.

2. Поле DisplayNameKey на контенте убрано — имя и описание идут только через лок-ключи {id}.name / {id}.desc. Одна конвенция ключей вместо двух источников имени; второй источник — это ровно тот дефект, который мы вычищаем везде.

3. Тайминговые ручки оставлены в SimConstants, а не в конфиг-SO. AiTickRate, MaxAttackAnimTicks, MinWindupTicks — структурные и чисто-тайминговые величины, на которых стоят тесты (AttackTiming), а не балансные ручки, которые дизайнер крутит. Шов бейка в SO готов, перенос — при первой реальной нужде тюнить их без перекомпиляции. Правило-разделитель: в SO уезжает то, что крутит дизайнер; в код остаётся то, что держит тест.

4. Снаряд деспавнится по краю камеро-видимой зоны (CameraZone + margin), а не по краю арены. Решение Макса: снаряд не должен гаснуть в видимой части боя — игрок это читает как пропавший урон.

Устарело, не переносить: тем же заходом в StatsConfig добавлялась общая база статов юнита (Defaults: MaxHP 120, AAD 12, AS 1…), а семь реликвий переписывались как Flat-диффы от неё. Схема с тех пор заменена классовым каскадом (база HP и скорости приходит от боевого класса, поверх — Override-группы). Числа из той таблицы недействительны.

Владелец правды: Assets/_Project/Scripts/Data/ (ContentDefinition, ContentDatabase, SimConstants); каскад статов — Assets/_Project/Scripts/Combat/Stats/ и балансные SO.