Functions – strange behavior of Check

Reap @ Quiet @ Do[(On[Inverse::sing]; Sow @ Check[Inverse[({{1, 2},{1, 2}})];
2 + 2, 3 + 3]), {i, 10}

;
(* {Null, {{6, 4, 4, 4, 4, 4, 4, 4, 4} 4}}} *)

the piece of code above first in the first iteration is correctly evaluated at 6 since the matrix is ​​singular. After successive iterations, it gives 4.

Reap @ Quiet @ Do[Sow@Check[Toaffirm[Sow@Check[Assert[Sow@Check[Affirmer[Sow@Check[Assert[Inverse[({{1, 2},{1, 2}})]];
2 + 2, 3 + 3], {i, 10}](* {Null, {{6, 6, 6, 6, 6, 6, 6, 6, 6, 6} 6}}} *)

the problem can be avoided by using To affirm. My question is: why does Check ignore the uniqueness of the matrix even if I force the message to be broadcast? Is this a bug?