## 94. P2 — 커버리지 gate 둘이 나란히 있고, 하나는 발화할 수 없다

`MongoStableContractSuite`의 javadoc이 존재 이유를 적는다.

> The report distinguishes a failed contract from a contract that never ran. A suite that reports "no failures" because half of it was skipped is exactly the shape of green build that certifies nothing, **so a missing contract is a failure here.**

구현은 그 구분을 만들 수 없다(`138-...` §8.2).

```java
Set<MongoReplicaSetContract> executed = new LinkedHashSet<>();
for (MongoReplicaSetContract contract : MongoReplicaSetContract.all()) {
  executed.add(contract);                       // ← 루프가 무조건 채운다
  if (!contractRunner.test(contract)) { failures.add(...); }
}
Set<MongoReplicaSetContract> missing = new LinkedHashSet<>(MongoReplicaSetContract.all());
