### 47.2 (8.2) 조건 형제 비교 — 두 개의 계약 강제 형태

| | notification `ProviderAdapterContract` | web `WebBudgetContract` 외 6종 |
|---|---|---|
| 강제 수단 | 상속(강제 없음) | 소스셋 + `dependsOn` 태스크 그래프 |
| 실제 적용 | 8종 중 3종 | 세 런타임 전부 |
| 빠진 것을 잡는 장치 | 없음 | `webCrossStackParityTest`가 세 기록을 비교하고, 하나라도 없으면 실패 |

web 쪽이 구조적으로 우월하다. `build.gradle`이 그 이유를 적는다 — "a parity check that compares whatever happens to be present would report agreement across a matrix with a hole in it."

### 47.3 (8.3) 중복 메커니즘 — 없음

`WebArchitectureRules`가 유일한 규칙 팩이고 소비자가 둘(자기 테스트 + app-bootstrap 프로덕션 적용)이다. 계약 클래스도 각 능력당 하나다.

### 47.4 (8.4) 카운트 고정
