Your comments

ok it needs a few extra lines for this batching to work,
#pragma multi_compile_instancing
            struct VertexInput {
                ...
                UNITY_VERTEX_INPUT_INSTANCE_ID
            };
            struct VertexOutput {
                ...
                UNITY_VERTEX_INPUT_INSTANCE_ID
            };
VertexOutput vert (VertexInput v) {
                VertexOutput o = (VertexOutput)0;
                ...
                UNITY_SETUP_INSTANCE_ID(v);
                UNITY_TRANSFER_INSTANCE_ID(v, o);
                float3 lightColor = _LightColor0.rgb;
                o.pos = UnityObjectToClipPos( v.vertex );
                UNITY_TRANSFER_FOG(o,o.pos);
                return o;
            }
Possibly this is working as intended, but I was under the impression enable instancing option would add these lines or something similar.