The forward migration script does work in the same version - I do it all of the time.
The trick I find is that the original object has t be deleted from the library.
If Archicad sees the original object, there will be no migration.
When it is not there, it looks at the migration scripts in all of the objects in the loaded library, and when it finds one that references the GUID of the missing object, it will substitute it, using the forward migration script you have set up in it (i.e. swapping and setting default parameter values).
One of the forum moderators.
Versions 6.5 to 25
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Dell Precision 3510 - i7 6820HQ @ 2.70GHz, 16GB RAM, AMD FirePro W5130M, Windows 10