"The best migration is the one you never run. Read the files where they already live."
The Migration Temptation
When you build a new engine that needs to use existing model files, the instinct is to bring them into your world: copy them into your folder structure, rename them to your convention, maybe symlink them so they look like they're yours. It feels like taking ownership. It's actually taking on risk — a migration step that can fail, duplicate gigabytes, and orphan the files the old tool still expects.
Absorb In Place Instead
The engine takes the opposite stance: scan the existing model directory and read every file where it already lives. No moving, no renaming, no symlinking into a private structure. The engine is a parallel reader of the model directory, not a new installer that relocates it. The files stay exactly where they are; the engine just builds a registry that points at them in place.
Why This Avoids a Whole Class of Bugs
Migrations are where data goes to die. A copy that half-completes leaves you with an inconsistent state. A rename that the old tool didn't expect breaks the old tool. Symlinks rot when paths change. Every one of these is a failure mode you simply don't have if you never move the files. Absorbing in place isn't just tidier — it deletes an entire category of failure by refusing to do the thing that causes it.
Coexistence Is a Feature
Because the engine reads in place and never mutates the layout, the old tool can keep running from the exact same files. You don't have to choose between the new engine and the old one during the transition — both read the same directory, neither steps on the other. That coexistence is what makes adopting the new engine low-risk: if something's wrong, the old tool is right there, untouched, still working.