Problem with producing correct vertex normals

I am having trouble producing the correct lighting on a quantized mesh tile I created and it is probably because I have done something wrong in my c# code based on how cesium js works.

I am assuming positive x always refers to heading east and positive y always refers to heading north. Z is up.

If I wind a triangle facing south anticlockwise like so

V1 = 0,0,0

V2 = 1,0,0

V3 = 0,0,1

I get a vertex normal 0,-1,0

This makes sense to me as its says the normal is pointing south

I then OctEncode this to x=128, y=255

Which I think means pointing north or south?

However In the Cesium view however the face lights up when the sun is in the west

Where have I gone wrong?

Same example but this time triangle facing north produces

V1 = 0,0,0

V2 = 0,0,1

V3 = 1,0,0

Vertex norm 0,1,0

OctEncoded to x=128,y=255

Lights up in cesium when sun in west

Can anyone see where it has gone wrong or where the values produced are wrong

I think the terrain normals are in ECEF, based on this snippet that converts them to ENU:

So perhaps that’s where the issue lies.

Thanks Omar i need to get back to this problem and I think you maybe onto something