Keep every direction in the same space
For a first lighting pass, choose world space for positions, normals, lights, and the viewer. The model matrix transforms a vertex position; its linear part does not always transform normals correctly. Under non-uniform scale, use the inverse transpose of the supported nonsingular model transform for a normal direction.
Interpolate the transformed normal and normalize it at the fragment when the lighting equation needs a unit direction. A blend of unit vertex normals is generally not itself unit length. Degenerate geometry and singular scales need an explicit policy before taking an inverse or normalizing.
Add a normal-debug view to the observatory before tuning appearance. Map normal components into a visible range and compare a box face before and after rotation. A colored normal picture is a diagnostic representation, not an albedo texture or a final lighting calculation.
Give one exhibit a non-uniform scale. Compare correct normal handling with reusing the model matrix, and record which face reveals the error.
