zero error:
error = vT [Q] v
error =





error = p.x * a * (p.x *a + p.y * b + p.z * c + d) + p.y * b * (p.x *a + p.y * b + p.z * c + d) + p.z * c * (p.x *a + p.y * b + p.z * c + d) + d * (p.x *a + p.y * b + p.z * c + d)
error = (p.x *a + p.y * b + p.z * c + d) * (p.x *a + p.y * b + p.z * c + d)
substituting:
a = n.x
b = n.y
c = n.z
d = (p dot n)
gives:
error = (p.x *n.x + p.y * n.y + p.z * n.z (p dot n)) * (p.x *n.x + p.y * n.y + p.z * n.z (p dot n))
error = (p.x *n.x + p.y * n.y + p.z * n.z  p.x *n.x  p.y * n.y  p.z * n.z) * (p.x *n.x + p.y * n.y + p.z * n.z  p.x *n.x  p.y * n.y  p.z * n.z)
cancelling out terms gives:
error = 0 * 0
error =0
so as required if no edges are collapsed the error is zero