Решили: раны забега живут в существующем ConsequenceData (полярность травма/закалка), а не в новом типе InjuryData, как планировал заход.

Почему: тип уже был заведён под последствия боя, зарегистрирован в ContentDomains (домен consequence) и описывал ровно ту же сущность — моды, вес выдачи, цену снятия. Отдельный InjuryData рядом стал бы вторым владельцем одного факта: два типа, два домена id, два места, куда дизайнер может положить «−30% скорости», и никакого способа узнать, какой из них читает игра. Достроили вместо этого сам ConsequenceData: ступень, срок истечения, иконка.

Грабли: тип выглядел живым, но был пустым насквозь — ноль ассетов на диске, ноль ссылок в коде кроме реестра доменов. Это и позволило поменять Severity (int) на InjuryGrade (enum) без миграции: смена типа сериализованного поля обычно молча теряет данные, здесь терять было нечего. Проверялось не глазами, а грепом по guid скрипта в *.asset — имени класса в YAML нет, и обычный поиск по «Consequence» вернул бы пустоту одинаково и для «нет ассетов», и для «не так искали».

Прежнее поле Severity отвечало на вопрос «насколько больно», а каскаду нужен другой — «в какой ряд слотов кладётся». По целому числу тяжести каскад было не написать, не додумав границы рядов.

Владелец правды: ConsequenceData.cs, ContentEnums.cs (InjuryGrade), тест InjuryCascadeTests.