Curious how to control the order of geom::SourceMods

I’ve got some code that’s building geometry for a house. It builds the walls and roof separately and combines them:

// Extrude centers on the origin so half the walls will be below ground
geom::SourceMods walls = geom::Extrude( shapeFrom( outline ), height, 1.0f ).caps( false ) >> geom::Translate( vec3( 0, 0, height / 2.0f ) );
// Raise the roof to the top of the building
roof = RoofMesh( outline, roofStyle, slope, overhang ) >> geom::Translate( vec3( 0, 0, height ) );
return roof & walls;

RoofMesh is a custom geom::Source I wrote that built the vertexes and indexes by hand. This was all working correctly, putting the pieces in the right spot.

I decided to replace RoofMesh with a smaller functions that generated the top and sides of the roof as two TriMesh objects which are merged together:

return geom::SourceMods( buildRoofFields( arrRoofFaces ) ) & buildRoofGables( arrRoofGables );

The problem is that now the transformation are being combined. Before I could move the roof and wall separately, now the transformations seem to be applied after the geometry is merged:

Is there a way to force the modifiers to be applied? Or perhaps an alternate order to the & and << operations that will get around this?

I’ve tried a few different things and haven’t come up with anything clever. I’m probably going to see about manually combining the two TriMeshes rather than letting SourceMods do it.