Migrating a legacy prefab

manta-recon's prefabs predate this format and are already ensembles in every way that matters — measured, not assumed: all four build every piece, and their subsystems, zones, points and piece-level values survive a load/save round trip untouched. Two of the four validate and load as they stand.

Two things stop the other two, and this fixes both:

in the file what it becomes
a piece with no id id from its mesh name, deduplicated
hp sitting on the piece features.destroyable.hp

Why id is generated from the MESH and not the index

Because index-derived ids are the thing this format exists to refuse: "derived ids mean every insertion renumbers the world". A migration that wrote piece-0piece-6 would satisfy the validator and reintroduce the fault one layer down, permanently, in a file somebody then hand-edits.

"Dome Mystery" becomes dome-mystery; a second one becomes dome-mystery-2. Ugly in a tie, stable under insertion, and legible in a diff — which is what an id is for.

Idempotent, and that is the point

Run it twice and the second run reports no changes. A migration you cannot re-run is one you are afraid of, so you run it once, by hand, and never again — and the next legacy file gets fixed by hand too. Pieces that already have ids keep them; an hp already lifted is not lifted twice.

What it deliberately does NOT do