Your code is quite similar to what I came up with

the only difference is, I just assumed when no modelScale value was set the value was 1.0f. I tried calculating the scale too from the matrix, and came up with different maths, but something that ends up roughly the same result. But in the end, not sure it is needed.
Interesting too about the light intensity greater than 1. Either the h/w just clamps the value or leaves it unclamped. I don't know which.
When I tried specular before, my code totally fell apart in these corner cases (like in lost world), which then made me think that my lighting formula was wrong. But now we have a better understanding of this, I think we should be able to get specular to work

Harry do you have a final version of the specular you worked on before? Because for the screenshots you posted for ECA and Scud, it looked almost perfect compared to the real hardware.