Per the qa-review skill: explicit verdict, measured budgets, the screenshots that
carry the claim, defects by severity and what remains unverified.
Verdict SHIP WITH NOTES - geometry/placement/budgets verified by measurement, the
visual half explicitly pending human review (the vision pre-check is unreliable on
this content and was not used as evidence).
Also fixes the last QA finding: kit pieces kept the grey M_Kit_* material the FBX
import creates, so glazing was not glass and shopfronts were not stone. Assembly now
assigns M_FacadeGlass to glazing, M_FacadeStone to surrounds, M_FacadeStoneShadow to
doors and M_FacadeBanner to fascias (6/6 materials resolved), and the importer
deletes the unused M_Kit_* materials (Kit folder now exactly 16 SM_ meshes).
Packaged QA re-verified after the change: walk, transect 0 holes, wall probe 0/35,
facade probe 0/9, RESULT PASS.
- Kit pieces export as SM_Kit_* (Unreal static-mesh convention) while the Blender
objects keep their readable names; the kit loader strips the prefix so layout
still addresses pieces by short name.
- facade_kit_build.py validates each piece before handoff (non-manifold edges,
loose vertices, triangle count) and records the result in the part report:
16 pieces, all manifold, no loose geometry, 12 tris each.
- ue_import_facade_kit.py removes kit assets the current build no longer produces,
so a rename cannot leave two generations of the same piece behind.
- Kit re-imported and re-applied (625 pieces); packaged QA still PASS.
- Tools/facade_kit_build.py: the reusable kit (pilaster, sill, lintel, window bay,
shopfront bay, door bay, cornice, parapet + coping) at the measured 4.96 m bay
and 3.10 m storey; 16 meshes exported per object through the shared preset with
a JSON part report recording dims and evidence.
- Tools/ue_import_facade_kit.py: imports to /Game/Hollywood/Kit with
complex-as-simple collision, so thin panes keep their real faces.
- Tools/ue_apply_facade_kit.py: assembles from each building's own bounding box
(bays = round(width/4.96), storeys above the ground floor) with shopfronts at
street level, windows above, pilasters on bay boundaries, cornice and parapet at
the top. Clears a previous application; unique labels per building.
638 pieces across six frontage buildings and both north buildings.
Two bugs fixed en route: the window piece was modelled entirely at +Y so it sat
inside the solid wall and was invisible (now projects 3 cm proud with glazing
6 cm inset), and clearing materials mid-build invalidated handles.
Screenshots re-rendered; window rhythm now reads (edge transitions per row rose
from flat to ~197 on the spawn view).