Neither of these rules allows covariant return types. Signatures of a method refer to the method name and the types and order of its arguments, but not to the return type.
If a method declaration d1 with return type R1 overrides or hides the declaration of another method d2 with return type R2, then d1 must be return-type-substitutable (§8.4.5) for d2, or a compile-time error occurs.
This rule allows for covariant return types - refining the return type of a method when overriding it.
That refers to Section 8.4.5, which states:
A method declaration d1 with return type R1 is return-type-substitutable for another method d2 with return type R2 iff any of the following is true:
If R1 is void then R2 is void.
If R1 is a primitive type then R2 is identical to R1.
If R1 is a reference type then one of the following is true:
R1, adapted to the type parameters of d2 (§8.4.4), is a subtype of R2.
R1 can be converted to a subtype of R2 by unchecked conversion (§5.1.9).
d1 does not have the same signature as d2 (§8.4.2), and R1 = |R2|.
(emphasis mine)
That part I bolded allows covariant return types.