Subdivision/decimation is not working as expected
It's not a problem with your code, but rather with your base objects. You have several overlapping vertices and edges in there.
Take a look at this screenshot:

See how there is no orange line indicating connected edges to the left?
If I pull the vertex point to the right, this happens:

This kind of 'malformed' model will play havoc with expected outputs.
There are quite a few vertices like that in your model. Fixing them by hand can be tedious, so it's a good idea to start with using Blender's 'Merge vertices by distance' functionality. In newer versions of Blender (I'm using 2.91, don't have a 2.8 install to check right now), this can be accessed by selecting two ore more vertices (using A to select all will do in your case), then pressing M -&gt; By Distance:

Just repeat this for each object, then run your script again:

I assume that looks like what you expected.
I've attached a .blend file with the fix I did: