Skip to content

Stable IDs are data, not branding

✅ Real Political World migration policy 💾 Compatibility

Political World changed its public project identity to:

Lous12.PoliticalWorld

but deliberately kept many historical identifiers beginning with:

ukiol_

Why?

Because persistent IDs are data compatibility, not branding.

The 1.6 → 1.7 migration document tells addon developers to update:

old dependency / namespace → new public identity

while explicitly warning:

do not rename old ukiol_* content/save IDs

The internal identity document gives the same rationale: old gameplay assets, localization keys, traits, powers, ideology IDs, currents, map IDs and saved values already used those strings.

Changing the author’s public name does not make those save references disposable.

Do not mix:

Lous12.PoliticalWorld

Used by the mod loader and addons.

Lous12.PoliticalWorld

Used by source code.

ukiol_...

Historical strings that may already exist in saves.

All three can have different migration rules.

Legacy compatibility does not mean new public addons should copy the old prefix.

New addon identity should look like:

someauthor.DragonPolitics

and owned content:

someauthor.DragonPolitics.ideology_dragonism

Before renaming any ID, ask:

Can this string exist in an old save?
Can another mod persist or reference it?
Can it exist in player configuration?
Can it appear in localization/content registry links?
Can it be part of an external API?

If any answer is yes, the rename may require a migration.

For data keys, a safe pattern is often:

read new
if missing:
read old
if old exists:
write new = old
keep old
return value

This is exactly the strategy Political World’s addon-data v2 migration uses for legacy int/string state.

Keeping old data during the migration window makes rollback and mixed-version recovery safer.

A refactor changes source organization.

A migration changes data identity.

Never assume those are the same operation.