Before digging into the problem, I want to say that the information you gave us is quite sparse, I had to extrapolate a lot. The problem discussed is interesting, and you should motivate a bit more your suggestions.
The confusion comes from the fact that you state rule S2975, but it seems to me that you are in fact discussing rule S1182.
Without this confusion, the problem is clearer: one of the concern of this rule is that if you extend a class defining
clone() without a call to
super.clone(), you are likely to violate the invariant #2:
x.clone().getClass() == x.getClass(). If the class is final though, you are not subject to this problem.
What worries me at this point is that
super.clone() is not here only for invariant #2, have you though about how it could affect them?
In addition, could you explain me why you have the need for both a clone and a copy constructor? From my point of vue, a copy constructor is here exactly to avoid all the problems of clone.