Stable IDs — это данные, а не branding
✅ Реальная migration policy Political World 💾 Compatibility
Political World сменил публичную identity на:
Lous12.PoliticalWorldно специально оставил многие исторические IDs:
ukiol_Почему?
Persistent IDs — это data compatibility, а не branding.
Реальный migration example
Заголовок раздела «Реальный migration example»Документ 1.6 → 1.7 говорит addon developers обновить:
old dependency / namespace → new public identityно отдельно предупреждает:
не переименовывать старые ukiol_* content/save IDsInternal identity doc объясняет: gameplay assets, localization keys, traits, powers, ideology IDs, currents, map IDs и saved values уже использовали эти strings.
Смена публичного имени автора не делает save references одноразовыми.
Разделяйте три identity
Заголовок раздела «Разделяйте три identity»Project/dependency identity
Заголовок раздела «Project/dependency identity»Lous12.PoliticalWorldИспользуется mod loader и addons.
C# namespace
Заголовок раздела «C# namespace»Lous12.PoliticalWorldИспользуется source code.
Persistent gameplay/save IDs
Заголовок раздела «Persistent gameplay/save IDs»ukiol_...Исторические strings, которые уже могут жить в saves.
У всех трёх разные migration rules.
Новые IDs используют новый namespace
Заголовок раздела «Новые IDs используют новый namespace»Legacy compatibility не означает, что новые addons должны копировать old prefix.
Новый addon:
someauthor.DragonPoliticsOwned content:
someauthor.DragonPolitics.ideology_dragonismChecklist перед rename
Заголовок раздела «Checklist перед rename»Перед переименованием спросите:
Может ли string уже быть в старом save?Может ли другой mod хранить/reference её?Может ли она быть в player configuration?Может ли участвовать в localization/content registry links?Является ли частью external API?Если хотя бы да — вероятно нужна migration.
Copy-forward migration
Заголовок раздела «Copy-forward migration»Для data keys безопасный pattern:
read newif missing: read old if old exists: write new = old keep oldreturn valueИменно так работает addon-data v2 migration Political World для legacy int/string state.
Сохранение old data на migration window полезно для rollback и mixed-version recovery.
Общее правило
Заголовок раздела «Общее правило»Refactor меняет organization source.
Migration меняет identity данных.
Это не одна и та же операция.