In fragment, it not use out gl_PerVertex to declare pipeline between vertex and fragment stages.
You may use "in gl_ClipDistance[] " to declare input corresponding to vertex 's gl_PerVertex.gl_ClipDistance[].
Or, you can delete gl_ClipDistance member is Vertex, since you did not use id at all.