# Messaging R2 자격(qualification) — 미구현 추적: MSG-015 ## 상태 **구현되지 않았다.** R2 자격을 주장할 수 있는 근거가 없다. - qualification producer 없음 - 대응하는 Test 태스크 없음 - 공통 스키마 validator 없음 따라서 `config/messaging/readiness-cards.yaml`의 카드는 `verifyMessagingContracts`와 `verifyMessagingJsonSchemaV1` 두 개를 제외하면 모두 `maturity: not-implemented`다. ## 왜 Gradle 태스크를 미리 만들어 두지 않는가 2026-09 이전에는 루트 빌드가 아래 아홉 개 태스크 이름을 미리 등록해 두고, 그 본문이 **입력과 무관하게 무조건 예외를 던졌다**. ```text verifyMessagingPollingOutboxR2 verifyMessagingTargetBinding verifyMessagingKafkaProducerR2 verifyMessagingDeploymentCutover verifyMessagingSecurityR2 verifyMessagingCleanupTargetBinding verifyMessagingReleaseProfile verifyMessagingFinalR2Profile verifyMessagingTargetBindingPreflight ``` 의도는 "fail-closed"였지만 결과는 다음과 같았다. - `./gradlew tasks`에 게이트처럼 보이는 이름 아홉 개가 나타난다. - `dependsOn`으로 걸 수 있다. 거는 순간 그 레인은 영원히 빨간불이다. - 정상적인 입력으로도 성공할 수 없으므로 "검증"이 아니다. 즉 TODO를 Gradle 태스크 API로 표현한 것이었다. 미구현 사실을 기록하는 자리는 이 문서이고, 태스크는 **실제로 통과할 수 있게 된 시점에** 그 producer와 함께 추가한다. ## 구현 시 추가할 것 1. 각 시나리오를 실제로 실행하는 Test 태스크. 2. 그 실행 결과(JUnit XML)에서 payload-free manifest를 만드는 producer. 3. `config/messaging/evidence/build-evidence-manifest-v1.schema.json`으로 그 manifest 바이트를 검증하는 finalizer. 4. 위 셋이 모두 생긴 다음에 `verifyMessagingR2` 태스크 등록. `gradle/qualification/messaging-qualification.gradle`의 `verifyMessagingJsonSchemaV1`이 그 네 단계를 모두 갖춘 예시다.