@theoryshaw Basically you had a project with a single wall, then in master you made a copy of this wall, and in a branch of the original project you made a different copy of this wall. The merged result should have had all three walls.
The problem is that when you copy a wall, blenderbim creates a new wall, but also creates a new ObjectPlacement for the original wall, even though from a user perspective nothing about the original wall has actually changed.
Now ifcmerge is clever/stupid enough to realise that this ObjectPlacement is entirely new in both branches, even though due to the way you did it it happened to use the same set of step-ids in both branches (which was a boggle to say the least).
ifcmerge will refuse to merge an entity where an attribute has been modified in both branches - I'm not sure that randomly picking one to keep is a good idea because this will result in invalid IFC data such as orphan entities, but maybe we need to do this anyway with a 'prefer local/prefer remote' flag, since resolving this stuff manually is no fun at all.
But ultimately this is a BlenderBIM misfeature: copying a wall regenerates the ObjectPlacement of the original wall, even though as a Native IFC user you expect the original wall to be unchanged. None of this would have bothered anyone until now, so there are probably other similar glitches throughout BlenderBIM. I think a similar thing happens when you delete a window from a wall, the wall gets a new ObjectPlacement and/or Representation even though neither has changed. These need collecting and reporting in the tracker.