Late-medieval French kit: 6 houses; exact frontage/depth, metre units, +Y up / +Z front; origins at front-wall centre; 1.5 m foundations.
300,419 triangles; 23,726,432 GLB bytes; 10 shared PBR materials; COLOR_0 multiplies baked base colour; signed 16-bit normals use KHR_mesh_quantization.
Poly Haven CC0 texture ids: medieval_red_brick, metal_plate_02, rock_wall_09, roof_tiles_14, slate_floor_03, wooden_planks, worn_plaster_wall, worn_rock_natural_01; https://polyhaven.com/license; sources dl.polyhaven.org, jpg/1k.
Revision 1 wear: four recessed plaster losses per plastered house, with masonry and broken-edge returns, bulged lime panels, sill/eave runoff, green capillary damp, silvered oak, settled jetties/ridges, slipped/missing tiles, lower-course/valley moss, slate lichen, chimney and oven soot; geometry + COLOR_0.
Build: Blender 5.2 -b --python-exit-code 1 --python build_kit.py; -- --count N for incremental order 1,2,3,5,4,6; scans/bakes cached beside script; every completed house exports atomically.
Revision 1 life: two planted window boxes, angled shutters, cloth bolts/woven basket, scored loaves, wordless shop/bakery signs, two added bracket lanterns, two gutters/downpipes, worn treads, cool reflective panes with faint warm interiors. Reimported GLB supplies Cycles renders; QA separately records runtime/structural checks.
