hi ..I rewrote the complete example with proper code.Of course the code is longer, but it also deals with all the issues correctly.[ see also attached files ]lemme know if you have questions.
attr buildingHeight = 20
attr facadeColor = "#ffdddd"
attr roofColor = "#444444"
attr roofInnerColor = "#eeeeee"
attr roofWallThickness = 0.3
attr roofWallHeight = 0.65
attr facadeTexDimHorizontal = 6
attr facadeTexDimVertical = 4
facadeTex = "assets/wall.c.06.jpg"
dirtTex = "assets/dirtmap.15.jpg"
Lot -->
 extrude (world.y, buildingHeight)
 comp(f) {side : Facade | top : Roof}
Facade -->
 # color
 color(facadeColor)
 # texture, UV set 0
 setupProjection(0, scope.xy, facadeTexDimHorizontal, facadeTexDimVertical) # scope is zUp after comp(f) !
 projectUV(0)
 texture ( facadeTex )
 # dirt, UV set 2
 setupProjection(2, scope.xy, '1, '1)
 projectUV(2)
 set (material.dirtmap, dirtTex )
 translateUV(2, rand(1), 0) # offset the texture slightly to the right. range between 0 and 1, "1 full texture tile".
Roof -->
 offset ( - roofWallThickness)
 comp(f) {inside : RoofSurface | border : RoofWallInner}
RoofSurface -->
 t(0,0,-roofWallHeight) # scope is oriented zUP after a comp(f), thus I move down in z !
 extrude(world.y, roofWallHeight)
 comp(f) {top : NIL | bottom : RoofFloor | all : RoofWallInner}
RoofFloor -->
 color(roofColor)
 setupProjection(2, scope.xy, '1, '1)
 projectUV(2)
 set (material.dirtmap, dirtTex ) 
RoofWallInner -->
 color(roofInnerColor)
 alignScopeToGeometry(zUp, 0, world.lowest)
 setupProjection(2, scope.xy, 10, 10) # choosing just any dimensions, I'm not scaling '1 here !
 projectUV(2)
 set (material.dirtmap, dirtTex ) 
 
matt