Files
clean-architecture-backend-…/docs/superpowers/packages/notification/VALIDATION.md
T

591 lines
29 KiB
Markdown

# Notification Superpowers 문서 정적 검증
- 결과: **PASS**
- 실행 검사: **567개**
- 통과: **567개**
- 실패: **0개**
- 설계서: **4,770행**
- 구현 계획서: **5,325행**
- 구현 Task: **50개**
- Create 경로: **322개**
- 설계 SHA-256: `fe7b57c6573ef7305033fe9402333d3c10f7a03ccf421dce5f353e2616ac8677`
- 계획 SHA-256: `176b0c86e11e6d4d8440285dd723e5555616ff9a69a7a9419250c2ce2b67f565`
## 검사 결과
| 검사 | 결과 | 상세 |
|---|---:|---|
| 설계서 존재 | PASS | /mnt/data/notification-platform-design.md |
| 구현 계획서 존재 | PASS | /mnt/data/notification-platform-implementation-plan.md |
| 설계서 최소 상세도 | PASS | 4,770 lines |
| 계획서 최소 상세도 | PASS | 5,325 lines |
| 설계서 코드 fence 균형 | PASS | 482 |
| 계획서 코드 fence 균형 | PASS | 308 |
| 설계 핵심 계약: NotificationRequest | PASS | |
| 설계 핵심 계약: RecipientDelivery | PASS | |
| 설계 핵심 계약: DeliveryAttempt | PASS | |
| 설계 핵심 계약: ProviderEvent | PASS | |
| 설계 핵심 계약: EvidenceLevel | PASS | |
| 설계 핵심 계약: SubmissionOutcome | PASS | |
| 설계 핵심 계약: DeliveryOutcome | PASS | |
| 설계 핵심 계약: AMBIGUOUS | PASS | |
| 설계 핵심 계약: append-only | PASS | |
| 설계 핵심 계약: FCM_FID | PASS | |
| 설계 핵심 계약: FCM_REGISTRATION_TOKEN_LEGACY | PASS | |
| 설계 핵심 계약: AES-256-GCM | PASS | |
| 설계 핵심 계약: HMAC-SHA-256 | PASS | |
| 설계 핵심 계약: FOR UPDATE SKIP LOCKED | PASS | |
| 설계 핵심 계약: SMTP Adapter | PASS | |
| 설계 핵심 계약: Amazon SES Adapter | PASS | |
| 설계 핵심 계약: Twilio Adapter | PASS | |
| 설계 핵심 계약: FCM Adapter | PASS | |
| 설계 핵심 계약: APNs Adapter | PASS | |
| 설계 핵심 계약: Web Push Adapter | PASS | |
| 설계 핵심 계약: In-App Inbox | PASS | |
| 설계 핵심 계약: Reconciliation | PASS | |
| 설계 핵심 계약: N4 Admin Plane | PASS | |
| 설계 핵심 계약: 비지원 범위 | PASS | |
| 설계 핵심 계약: 완료 정의 | PASS | |
| exactlyOnce 단순 옵션 금지 명시 | PASS | |
| 금지 보장 부재: guaranteedDelivery=true | PASS | |
| 금지 보장 부재: APNs HTTP 200 = DELIVERED | PASS | |
| 금지 보장 부재: FCM send success = DEVICE_DELIVERED | PASS | |
| Task 1~50 연속성 | PASS | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50] |
| Task chunk 수 | PASS | 50 |
| Task 1 필수 항목: **Files:** | PASS | |
| Task 1 필수 항목: **Interfaces:** | PASS | |
| Task 1 필수 항목: **Implementation requirements:** | PASS | |
| Task 1 필수 항목: **Step 1: | PASS | |
| Task 1 필수 항목: **Step 2: | PASS | |
| Task 1 필수 항목: **Step 3: | PASS | |
| Task 1 필수 항목: **Step 4: | PASS | |
| Task 1 필수 항목: **Step 5: | PASS | |
| Task 1 필수 항목: Expected: | PASS | |
| Task 1 필수 항목: git commit -m | PASS | |
| Task 2 필수 항목: **Files:** | PASS | |
| Task 2 필수 항목: **Interfaces:** | PASS | |
| Task 2 필수 항목: **Implementation requirements:** | PASS | |
| Task 2 필수 항목: **Step 1: | PASS | |
| Task 2 필수 항목: **Step 2: | PASS | |
| Task 2 필수 항목: **Step 3: | PASS | |
| Task 2 필수 항목: **Step 4: | PASS | |
| Task 2 필수 항목: **Step 5: | PASS | |
| Task 2 필수 항목: Expected: | PASS | |
| Task 2 필수 항목: git commit -m | PASS | |
| Task 3 필수 항목: **Files:** | PASS | |
| Task 3 필수 항목: **Interfaces:** | PASS | |
| Task 3 필수 항목: **Implementation requirements:** | PASS | |
| Task 3 필수 항목: **Step 1: | PASS | |
| Task 3 필수 항목: **Step 2: | PASS | |
| Task 3 필수 항목: **Step 3: | PASS | |
| Task 3 필수 항목: **Step 4: | PASS | |
| Task 3 필수 항목: **Step 5: | PASS | |
| Task 3 필수 항목: Expected: | PASS | |
| Task 3 필수 항목: git commit -m | PASS | |
| Task 4 필수 항목: **Files:** | PASS | |
| Task 4 필수 항목: **Interfaces:** | PASS | |
| Task 4 필수 항목: **Implementation requirements:** | PASS | |
| Task 4 필수 항목: **Step 1: | PASS | |
| Task 4 필수 항목: **Step 2: | PASS | |
| Task 4 필수 항목: **Step 3: | PASS | |
| Task 4 필수 항목: **Step 4: | PASS | |
| Task 4 필수 항목: **Step 5: | PASS | |
| Task 4 필수 항목: Expected: | PASS | |
| Task 4 필수 항목: git commit -m | PASS | |
| Task 5 필수 항목: **Files:** | PASS | |
| Task 5 필수 항목: **Interfaces:** | PASS | |
| Task 5 필수 항목: **Implementation requirements:** | PASS | |
| Task 5 필수 항목: **Step 1: | PASS | |
| Task 5 필수 항목: **Step 2: | PASS | |
| Task 5 필수 항목: **Step 3: | PASS | |
| Task 5 필수 항목: **Step 4: | PASS | |
| Task 5 필수 항목: **Step 5: | PASS | |
| Task 5 필수 항목: Expected: | PASS | |
| Task 5 필수 항목: git commit -m | PASS | |
| Task 6 필수 항목: **Files:** | PASS | |
| Task 6 필수 항목: **Interfaces:** | PASS | |
| Task 6 필수 항목: **Implementation requirements:** | PASS | |
| Task 6 필수 항목: **Step 1: | PASS | |
| Task 6 필수 항목: **Step 2: | PASS | |
| Task 6 필수 항목: **Step 3: | PASS | |
| Task 6 필수 항목: **Step 4: | PASS | |
| Task 6 필수 항목: **Step 5: | PASS | |
| Task 6 필수 항목: Expected: | PASS | |
| Task 6 필수 항목: git commit -m | PASS | |
| Task 7 필수 항목: **Files:** | PASS | |
| Task 7 필수 항목: **Interfaces:** | PASS | |
| Task 7 필수 항목: **Implementation requirements:** | PASS | |
| Task 7 필수 항목: **Step 1: | PASS | |
| Task 7 필수 항목: **Step 2: | PASS | |
| Task 7 필수 항목: **Step 3: | PASS | |
| Task 7 필수 항목: **Step 4: | PASS | |
| Task 7 필수 항목: **Step 5: | PASS | |
| Task 7 필수 항목: Expected: | PASS | |
| Task 7 필수 항목: git commit -m | PASS | |
| Task 8 필수 항목: **Files:** | PASS | |
| Task 8 필수 항목: **Interfaces:** | PASS | |
| Task 8 필수 항목: **Implementation requirements:** | PASS | |
| Task 8 필수 항목: **Step 1: | PASS | |
| Task 8 필수 항목: **Step 2: | PASS | |
| Task 8 필수 항목: **Step 3: | PASS | |
| Task 8 필수 항목: **Step 4: | PASS | |
| Task 8 필수 항목: **Step 5: | PASS | |
| Task 8 필수 항목: Expected: | PASS | |
| Task 8 필수 항목: git commit -m | PASS | |
| Task 9 필수 항목: **Files:** | PASS | |
| Task 9 필수 항목: **Interfaces:** | PASS | |
| Task 9 필수 항목: **Implementation requirements:** | PASS | |
| Task 9 필수 항목: **Step 1: | PASS | |
| Task 9 필수 항목: **Step 2: | PASS | |
| Task 9 필수 항목: **Step 3: | PASS | |
| Task 9 필수 항목: **Step 4: | PASS | |
| Task 9 필수 항목: **Step 5: | PASS | |
| Task 9 필수 항목: Expected: | PASS | |
| Task 9 필수 항목: git commit -m | PASS | |
| Task 10 필수 항목: **Files:** | PASS | |
| Task 10 필수 항목: **Interfaces:** | PASS | |
| Task 10 필수 항목: **Implementation requirements:** | PASS | |
| Task 10 필수 항목: **Step 1: | PASS | |
| Task 10 필수 항목: **Step 2: | PASS | |
| Task 10 필수 항목: **Step 3: | PASS | |
| Task 10 필수 항목: **Step 4: | PASS | |
| Task 10 필수 항목: **Step 5: | PASS | |
| Task 10 필수 항목: Expected: | PASS | |
| Task 10 필수 항목: git commit -m | PASS | |
| Task 11 필수 항목: **Files:** | PASS | |
| Task 11 필수 항목: **Interfaces:** | PASS | |
| Task 11 필수 항목: **Implementation requirements:** | PASS | |
| Task 11 필수 항목: **Step 1: | PASS | |
| Task 11 필수 항목: **Step 2: | PASS | |
| Task 11 필수 항목: **Step 3: | PASS | |
| Task 11 필수 항목: **Step 4: | PASS | |
| Task 11 필수 항목: **Step 5: | PASS | |
| Task 11 필수 항목: Expected: | PASS | |
| Task 11 필수 항목: git commit -m | PASS | |
| Task 12 필수 항목: **Files:** | PASS | |
| Task 12 필수 항목: **Interfaces:** | PASS | |
| Task 12 필수 항목: **Implementation requirements:** | PASS | |
| Task 12 필수 항목: **Step 1: | PASS | |
| Task 12 필수 항목: **Step 2: | PASS | |
| Task 12 필수 항목: **Step 3: | PASS | |
| Task 12 필수 항목: **Step 4: | PASS | |
| Task 12 필수 항목: **Step 5: | PASS | |
| Task 12 필수 항목: Expected: | PASS | |
| Task 12 필수 항목: git commit -m | PASS | |
| Task 13 필수 항목: **Files:** | PASS | |
| Task 13 필수 항목: **Interfaces:** | PASS | |
| Task 13 필수 항목: **Implementation requirements:** | PASS | |
| Task 13 필수 항목: **Step 1: | PASS | |
| Task 13 필수 항목: **Step 2: | PASS | |
| Task 13 필수 항목: **Step 3: | PASS | |
| Task 13 필수 항목: **Step 4: | PASS | |
| Task 13 필수 항목: **Step 5: | PASS | |
| Task 13 필수 항목: Expected: | PASS | |
| Task 13 필수 항목: git commit -m | PASS | |
| Task 14 필수 항목: **Files:** | PASS | |
| Task 14 필수 항목: **Interfaces:** | PASS | |
| Task 14 필수 항목: **Implementation requirements:** | PASS | |
| Task 14 필수 항목: **Step 1: | PASS | |
| Task 14 필수 항목: **Step 2: | PASS | |
| Task 14 필수 항목: **Step 3: | PASS | |
| Task 14 필수 항목: **Step 4: | PASS | |
| Task 14 필수 항목: **Step 5: | PASS | |
| Task 14 필수 항목: Expected: | PASS | |
| Task 14 필수 항목: git commit -m | PASS | |
| Task 15 필수 항목: **Files:** | PASS | |
| Task 15 필수 항목: **Interfaces:** | PASS | |
| Task 15 필수 항목: **Implementation requirements:** | PASS | |
| Task 15 필수 항목: **Step 1: | PASS | |
| Task 15 필수 항목: **Step 2: | PASS | |
| Task 15 필수 항목: **Step 3: | PASS | |
| Task 15 필수 항목: **Step 4: | PASS | |
| Task 15 필수 항목: **Step 5: | PASS | |
| Task 15 필수 항목: Expected: | PASS | |
| Task 15 필수 항목: git commit -m | PASS | |
| Task 16 필수 항목: **Files:** | PASS | |
| Task 16 필수 항목: **Interfaces:** | PASS | |
| Task 16 필수 항목: **Implementation requirements:** | PASS | |
| Task 16 필수 항목: **Step 1: | PASS | |
| Task 16 필수 항목: **Step 2: | PASS | |
| Task 16 필수 항목: **Step 3: | PASS | |
| Task 16 필수 항목: **Step 4: | PASS | |
| Task 16 필수 항목: **Step 5: | PASS | |
| Task 16 필수 항목: Expected: | PASS | |
| Task 16 필수 항목: git commit -m | PASS | |
| Task 17 필수 항목: **Files:** | PASS | |
| Task 17 필수 항목: **Interfaces:** | PASS | |
| Task 17 필수 항목: **Implementation requirements:** | PASS | |
| Task 17 필수 항목: **Step 1: | PASS | |
| Task 17 필수 항목: **Step 2: | PASS | |
| Task 17 필수 항목: **Step 3: | PASS | |
| Task 17 필수 항목: **Step 4: | PASS | |
| Task 17 필수 항목: **Step 5: | PASS | |
| Task 17 필수 항목: Expected: | PASS | |
| Task 17 필수 항목: git commit -m | PASS | |
| Task 18 필수 항목: **Files:** | PASS | |
| Task 18 필수 항목: **Interfaces:** | PASS | |
| Task 18 필수 항목: **Implementation requirements:** | PASS | |
| Task 18 필수 항목: **Step 1: | PASS | |
| Task 18 필수 항목: **Step 2: | PASS | |
| Task 18 필수 항목: **Step 3: | PASS | |
| Task 18 필수 항목: **Step 4: | PASS | |
| Task 18 필수 항목: **Step 5: | PASS | |
| Task 18 필수 항목: Expected: | PASS | |
| Task 18 필수 항목: git commit -m | PASS | |
| Task 19 필수 항목: **Files:** | PASS | |
| Task 19 필수 항목: **Interfaces:** | PASS | |
| Task 19 필수 항목: **Implementation requirements:** | PASS | |
| Task 19 필수 항목: **Step 1: | PASS | |
| Task 19 필수 항목: **Step 2: | PASS | |
| Task 19 필수 항목: **Step 3: | PASS | |
| Task 19 필수 항목: **Step 4: | PASS | |
| Task 19 필수 항목: **Step 5: | PASS | |
| Task 19 필수 항목: Expected: | PASS | |
| Task 19 필수 항목: git commit -m | PASS | |
| Task 20 필수 항목: **Files:** | PASS | |
| Task 20 필수 항목: **Interfaces:** | PASS | |
| Task 20 필수 항목: **Implementation requirements:** | PASS | |
| Task 20 필수 항목: **Step 1: | PASS | |
| Task 20 필수 항목: **Step 2: | PASS | |
| Task 20 필수 항목: **Step 3: | PASS | |
| Task 20 필수 항목: **Step 4: | PASS | |
| Task 20 필수 항목: **Step 5: | PASS | |
| Task 20 필수 항목: Expected: | PASS | |
| Task 20 필수 항목: git commit -m | PASS | |
| Task 21 필수 항목: **Files:** | PASS | |
| Task 21 필수 항목: **Interfaces:** | PASS | |
| Task 21 필수 항목: **Implementation requirements:** | PASS | |
| Task 21 필수 항목: **Step 1: | PASS | |
| Task 21 필수 항목: **Step 2: | PASS | |
| Task 21 필수 항목: **Step 3: | PASS | |
| Task 21 필수 항목: **Step 4: | PASS | |
| Task 21 필수 항목: **Step 5: | PASS | |
| Task 21 필수 항목: Expected: | PASS | |
| Task 21 필수 항목: git commit -m | PASS | |
| Task 22 필수 항목: **Files:** | PASS | |
| Task 22 필수 항목: **Interfaces:** | PASS | |
| Task 22 필수 항목: **Implementation requirements:** | PASS | |
| Task 22 필수 항목: **Step 1: | PASS | |
| Task 22 필수 항목: **Step 2: | PASS | |
| Task 22 필수 항목: **Step 3: | PASS | |
| Task 22 필수 항목: **Step 4: | PASS | |
| Task 22 필수 항목: **Step 5: | PASS | |
| Task 22 필수 항목: Expected: | PASS | |
| Task 22 필수 항목: git commit -m | PASS | |
| Task 23 필수 항목: **Files:** | PASS | |
| Task 23 필수 항목: **Interfaces:** | PASS | |
| Task 23 필수 항목: **Implementation requirements:** | PASS | |
| Task 23 필수 항목: **Step 1: | PASS | |
| Task 23 필수 항목: **Step 2: | PASS | |
| Task 23 필수 항목: **Step 3: | PASS | |
| Task 23 필수 항목: **Step 4: | PASS | |
| Task 23 필수 항목: **Step 5: | PASS | |
| Task 23 필수 항목: Expected: | PASS | |
| Task 23 필수 항목: git commit -m | PASS | |
| Task 24 필수 항목: **Files:** | PASS | |
| Task 24 필수 항목: **Interfaces:** | PASS | |
| Task 24 필수 항목: **Implementation requirements:** | PASS | |
| Task 24 필수 항목: **Step 1: | PASS | |
| Task 24 필수 항목: **Step 2: | PASS | |
| Task 24 필수 항목: **Step 3: | PASS | |
| Task 24 필수 항목: **Step 4: | PASS | |
| Task 24 필수 항목: **Step 5: | PASS | |
| Task 24 필수 항목: Expected: | PASS | |
| Task 24 필수 항목: git commit -m | PASS | |
| Task 25 필수 항목: **Files:** | PASS | |
| Task 25 필수 항목: **Interfaces:** | PASS | |
| Task 25 필수 항목: **Implementation requirements:** | PASS | |
| Task 25 필수 항목: **Step 1: | PASS | |
| Task 25 필수 항목: **Step 2: | PASS | |
| Task 25 필수 항목: **Step 3: | PASS | |
| Task 25 필수 항목: **Step 4: | PASS | |
| Task 25 필수 항목: **Step 5: | PASS | |
| Task 25 필수 항목: Expected: | PASS | |
| Task 25 필수 항목: git commit -m | PASS | |
| Task 26 필수 항목: **Files:** | PASS | |
| Task 26 필수 항목: **Interfaces:** | PASS | |
| Task 26 필수 항목: **Implementation requirements:** | PASS | |
| Task 26 필수 항목: **Step 1: | PASS | |
| Task 26 필수 항목: **Step 2: | PASS | |
| Task 26 필수 항목: **Step 3: | PASS | |
| Task 26 필수 항목: **Step 4: | PASS | |
| Task 26 필수 항목: **Step 5: | PASS | |
| Task 26 필수 항목: Expected: | PASS | |
| Task 26 필수 항목: git commit -m | PASS | |
| Task 27 필수 항목: **Files:** | PASS | |
| Task 27 필수 항목: **Interfaces:** | PASS | |
| Task 27 필수 항목: **Implementation requirements:** | PASS | |
| Task 27 필수 항목: **Step 1: | PASS | |
| Task 27 필수 항목: **Step 2: | PASS | |
| Task 27 필수 항목: **Step 3: | PASS | |
| Task 27 필수 항목: **Step 4: | PASS | |
| Task 27 필수 항목: **Step 5: | PASS | |
| Task 27 필수 항목: Expected: | PASS | |
| Task 27 필수 항목: git commit -m | PASS | |
| Task 28 필수 항목: **Files:** | PASS | |
| Task 28 필수 항목: **Interfaces:** | PASS | |
| Task 28 필수 항목: **Implementation requirements:** | PASS | |
| Task 28 필수 항목: **Step 1: | PASS | |
| Task 28 필수 항목: **Step 2: | PASS | |
| Task 28 필수 항목: **Step 3: | PASS | |
| Task 28 필수 항목: **Step 4: | PASS | |
| Task 28 필수 항목: **Step 5: | PASS | |
| Task 28 필수 항목: Expected: | PASS | |
| Task 28 필수 항목: git commit -m | PASS | |
| Task 29 필수 항목: **Files:** | PASS | |
| Task 29 필수 항목: **Interfaces:** | PASS | |
| Task 29 필수 항목: **Implementation requirements:** | PASS | |
| Task 29 필수 항목: **Step 1: | PASS | |
| Task 29 필수 항목: **Step 2: | PASS | |
| Task 29 필수 항목: **Step 3: | PASS | |
| Task 29 필수 항목: **Step 4: | PASS | |
| Task 29 필수 항목: **Step 5: | PASS | |
| Task 29 필수 항목: Expected: | PASS | |
| Task 29 필수 항목: git commit -m | PASS | |
| Task 30 필수 항목: **Files:** | PASS | |
| Task 30 필수 항목: **Interfaces:** | PASS | |
| Task 30 필수 항목: **Implementation requirements:** | PASS | |
| Task 30 필수 항목: **Step 1: | PASS | |
| Task 30 필수 항목: **Step 2: | PASS | |
| Task 30 필수 항목: **Step 3: | PASS | |
| Task 30 필수 항목: **Step 4: | PASS | |
| Task 30 필수 항목: **Step 5: | PASS | |
| Task 30 필수 항목: Expected: | PASS | |
| Task 30 필수 항목: git commit -m | PASS | |
| Task 31 필수 항목: **Files:** | PASS | |
| Task 31 필수 항목: **Interfaces:** | PASS | |
| Task 31 필수 항목: **Implementation requirements:** | PASS | |
| Task 31 필수 항목: **Step 1: | PASS | |
| Task 31 필수 항목: **Step 2: | PASS | |
| Task 31 필수 항목: **Step 3: | PASS | |
| Task 31 필수 항목: **Step 4: | PASS | |
| Task 31 필수 항목: **Step 5: | PASS | |
| Task 31 필수 항목: Expected: | PASS | |
| Task 31 필수 항목: git commit -m | PASS | |
| Task 32 필수 항목: **Files:** | PASS | |
| Task 32 필수 항목: **Interfaces:** | PASS | |
| Task 32 필수 항목: **Implementation requirements:** | PASS | |
| Task 32 필수 항목: **Step 1: | PASS | |
| Task 32 필수 항목: **Step 2: | PASS | |
| Task 32 필수 항목: **Step 3: | PASS | |
| Task 32 필수 항목: **Step 4: | PASS | |
| Task 32 필수 항목: **Step 5: | PASS | |
| Task 32 필수 항목: Expected: | PASS | |
| Task 32 필수 항목: git commit -m | PASS | |
| Task 33 필수 항목: **Files:** | PASS | |
| Task 33 필수 항목: **Interfaces:** | PASS | |
| Task 33 필수 항목: **Implementation requirements:** | PASS | |
| Task 33 필수 항목: **Step 1: | PASS | |
| Task 33 필수 항목: **Step 2: | PASS | |
| Task 33 필수 항목: **Step 3: | PASS | |
| Task 33 필수 항목: **Step 4: | PASS | |
| Task 33 필수 항목: **Step 5: | PASS | |
| Task 33 필수 항목: Expected: | PASS | |
| Task 33 필수 항목: git commit -m | PASS | |
| Task 34 필수 항목: **Files:** | PASS | |
| Task 34 필수 항목: **Interfaces:** | PASS | |
| Task 34 필수 항목: **Implementation requirements:** | PASS | |
| Task 34 필수 항목: **Step 1: | PASS | |
| Task 34 필수 항목: **Step 2: | PASS | |
| Task 34 필수 항목: **Step 3: | PASS | |
| Task 34 필수 항목: **Step 4: | PASS | |
| Task 34 필수 항목: **Step 5: | PASS | |
| Task 34 필수 항목: Expected: | PASS | |
| Task 34 필수 항목: git commit -m | PASS | |
| Task 35 필수 항목: **Files:** | PASS | |
| Task 35 필수 항목: **Interfaces:** | PASS | |
| Task 35 필수 항목: **Implementation requirements:** | PASS | |
| Task 35 필수 항목: **Step 1: | PASS | |
| Task 35 필수 항목: **Step 2: | PASS | |
| Task 35 필수 항목: **Step 3: | PASS | |
| Task 35 필수 항목: **Step 4: | PASS | |
| Task 35 필수 항목: **Step 5: | PASS | |
| Task 35 필수 항목: Expected: | PASS | |
| Task 35 필수 항목: git commit -m | PASS | |
| Task 36 필수 항목: **Files:** | PASS | |
| Task 36 필수 항목: **Interfaces:** | PASS | |
| Task 36 필수 항목: **Implementation requirements:** | PASS | |
| Task 36 필수 항목: **Step 1: | PASS | |
| Task 36 필수 항목: **Step 2: | PASS | |
| Task 36 필수 항목: **Step 3: | PASS | |
| Task 36 필수 항목: **Step 4: | PASS | |
| Task 36 필수 항목: **Step 5: | PASS | |
| Task 36 필수 항목: Expected: | PASS | |
| Task 36 필수 항목: git commit -m | PASS | |
| Task 37 필수 항목: **Files:** | PASS | |
| Task 37 필수 항목: **Interfaces:** | PASS | |
| Task 37 필수 항목: **Implementation requirements:** | PASS | |
| Task 37 필수 항목: **Step 1: | PASS | |
| Task 37 필수 항목: **Step 2: | PASS | |
| Task 37 필수 항목: **Step 3: | PASS | |
| Task 37 필수 항목: **Step 4: | PASS | |
| Task 37 필수 항목: **Step 5: | PASS | |
| Task 37 필수 항목: Expected: | PASS | |
| Task 37 필수 항목: git commit -m | PASS | |
| Task 38 필수 항목: **Files:** | PASS | |
| Task 38 필수 항목: **Interfaces:** | PASS | |
| Task 38 필수 항목: **Implementation requirements:** | PASS | |
| Task 38 필수 항목: **Step 1: | PASS | |
| Task 38 필수 항목: **Step 2: | PASS | |
| Task 38 필수 항목: **Step 3: | PASS | |
| Task 38 필수 항목: **Step 4: | PASS | |
| Task 38 필수 항목: **Step 5: | PASS | |
| Task 38 필수 항목: Expected: | PASS | |
| Task 38 필수 항목: git commit -m | PASS | |
| Task 39 필수 항목: **Files:** | PASS | |
| Task 39 필수 항목: **Interfaces:** | PASS | |
| Task 39 필수 항목: **Implementation requirements:** | PASS | |
| Task 39 필수 항목: **Step 1: | PASS | |
| Task 39 필수 항목: **Step 2: | PASS | |
| Task 39 필수 항목: **Step 3: | PASS | |
| Task 39 필수 항목: **Step 4: | PASS | |
| Task 39 필수 항목: **Step 5: | PASS | |
| Task 39 필수 항목: Expected: | PASS | |
| Task 39 필수 항목: git commit -m | PASS | |
| Task 40 필수 항목: **Files:** | PASS | |
| Task 40 필수 항목: **Interfaces:** | PASS | |
| Task 40 필수 항목: **Implementation requirements:** | PASS | |
| Task 40 필수 항목: **Step 1: | PASS | |
| Task 40 필수 항목: **Step 2: | PASS | |
| Task 40 필수 항목: **Step 3: | PASS | |
| Task 40 필수 항목: **Step 4: | PASS | |
| Task 40 필수 항목: **Step 5: | PASS | |
| Task 40 필수 항목: Expected: | PASS | |
| Task 40 필수 항목: git commit -m | PASS | |
| Task 41 필수 항목: **Files:** | PASS | |
| Task 41 필수 항목: **Interfaces:** | PASS | |
| Task 41 필수 항목: **Implementation requirements:** | PASS | |
| Task 41 필수 항목: **Step 1: | PASS | |
| Task 41 필수 항목: **Step 2: | PASS | |
| Task 41 필수 항목: **Step 3: | PASS | |
| Task 41 필수 항목: **Step 4: | PASS | |
| Task 41 필수 항목: **Step 5: | PASS | |
| Task 41 필수 항목: Expected: | PASS | |
| Task 41 필수 항목: git commit -m | PASS | |
| Task 42 필수 항목: **Files:** | PASS | |
| Task 42 필수 항목: **Interfaces:** | PASS | |
| Task 42 필수 항목: **Implementation requirements:** | PASS | |
| Task 42 필수 항목: **Step 1: | PASS | |
| Task 42 필수 항목: **Step 2: | PASS | |
| Task 42 필수 항목: **Step 3: | PASS | |
| Task 42 필수 항목: **Step 4: | PASS | |
| Task 42 필수 항목: **Step 5: | PASS | |
| Task 42 필수 항목: Expected: | PASS | |
| Task 42 필수 항목: git commit -m | PASS | |
| Task 43 필수 항목: **Files:** | PASS | |
| Task 43 필수 항목: **Interfaces:** | PASS | |
| Task 43 필수 항목: **Implementation requirements:** | PASS | |
| Task 43 필수 항목: **Step 1: | PASS | |
| Task 43 필수 항목: **Step 2: | PASS | |
| Task 43 필수 항목: **Step 3: | PASS | |
| Task 43 필수 항목: **Step 4: | PASS | |
| Task 43 필수 항목: **Step 5: | PASS | |
| Task 43 필수 항목: Expected: | PASS | |
| Task 43 필수 항목: git commit -m | PASS | |
| Task 44 필수 항목: **Files:** | PASS | |
| Task 44 필수 항목: **Interfaces:** | PASS | |
| Task 44 필수 항목: **Implementation requirements:** | PASS | |
| Task 44 필수 항목: **Step 1: | PASS | |
| Task 44 필수 항목: **Step 2: | PASS | |
| Task 44 필수 항목: **Step 3: | PASS | |
| Task 44 필수 항목: **Step 4: | PASS | |
| Task 44 필수 항목: **Step 5: | PASS | |
| Task 44 필수 항목: Expected: | PASS | |
| Task 44 필수 항목: git commit -m | PASS | |
| Task 45 필수 항목: **Files:** | PASS | |
| Task 45 필수 항목: **Interfaces:** | PASS | |
| Task 45 필수 항목: **Implementation requirements:** | PASS | |
| Task 45 필수 항목: **Step 1: | PASS | |
| Task 45 필수 항목: **Step 2: | PASS | |
| Task 45 필수 항목: **Step 3: | PASS | |
| Task 45 필수 항목: **Step 4: | PASS | |
| Task 45 필수 항목: **Step 5: | PASS | |
| Task 45 필수 항목: Expected: | PASS | |
| Task 45 필수 항목: git commit -m | PASS | |
| Task 46 필수 항목: **Files:** | PASS | |
| Task 46 필수 항목: **Interfaces:** | PASS | |
| Task 46 필수 항목: **Implementation requirements:** | PASS | |
| Task 46 필수 항목: **Step 1: | PASS | |
| Task 46 필수 항목: **Step 2: | PASS | |
| Task 46 필수 항목: **Step 3: | PASS | |
| Task 46 필수 항목: **Step 4: | PASS | |
| Task 46 필수 항목: **Step 5: | PASS | |
| Task 46 필수 항목: Expected: | PASS | |
| Task 46 필수 항목: git commit -m | PASS | |
| Task 47 필수 항목: **Files:** | PASS | |
| Task 47 필수 항목: **Interfaces:** | PASS | |
| Task 47 필수 항목: **Implementation requirements:** | PASS | |
| Task 47 필수 항목: **Step 1: | PASS | |
| Task 47 필수 항목: **Step 2: | PASS | |
| Task 47 필수 항목: **Step 3: | PASS | |
| Task 47 필수 항목: **Step 4: | PASS | |
| Task 47 필수 항목: **Step 5: | PASS | |
| Task 47 필수 항목: Expected: | PASS | |
| Task 47 필수 항목: git commit -m | PASS | |
| Task 48 필수 항목: **Files:** | PASS | |
| Task 48 필수 항목: **Interfaces:** | PASS | |
| Task 48 필수 항목: **Implementation requirements:** | PASS | |
| Task 48 필수 항목: **Step 1: | PASS | |
| Task 48 필수 항목: **Step 2: | PASS | |
| Task 48 필수 항목: **Step 3: | PASS | |
| Task 48 필수 항목: **Step 4: | PASS | |
| Task 48 필수 항목: **Step 5: | PASS | |
| Task 48 필수 항목: Expected: | PASS | |
| Task 48 필수 항목: git commit -m | PASS | |
| Task 49 필수 항목: **Files:** | PASS | |
| Task 49 필수 항목: **Interfaces:** | PASS | |
| Task 49 필수 항목: **Implementation requirements:** | PASS | |
| Task 49 필수 항목: **Step 1: | PASS | |
| Task 49 필수 항목: **Step 2: | PASS | |
| Task 49 필수 항목: **Step 3: | PASS | |
| Task 49 필수 항목: **Step 4: | PASS | |
| Task 49 필수 항목: **Step 5: | PASS | |
| Task 49 필수 항목: Expected: | PASS | |
| Task 49 필수 항목: git commit -m | PASS | |
| Task 50 필수 항목: **Files:** | PASS | |
| Task 50 필수 항목: **Interfaces:** | PASS | |
| Task 50 필수 항목: **Implementation requirements:** | PASS | |
| Task 50 필수 항목: **Step 1: | PASS | |
| Task 50 필수 항목: **Step 2: | PASS | |
| Task 50 필수 항목: **Step 3: | PASS | |
| Task 50 필수 항목: **Step 4: | PASS | |
| Task 50 필수 항목: **Step 5: | PASS | |
| Task 50 필수 항목: Expected: | PASS | |
| Task 50 필수 항목: git commit -m | PASS | |
| Create 경로 중복 없음 | PASS | |
| Create 경로 충분성 | PASS | 322 |
| 미확정 표현 없음: TODO | PASS | 0 |
| 미확정 표현 없음: TBD | PASS | 0 |
| 미확정 표현 없음: FIXME | PASS | 0 |
| 미확정 표현 없음: fill in details | PASS | 0 |
| 미확정 표현 없음: implement later | PASS | 0 |
| 미확정 표현 없음: concrete assertion below | PASS | 0 |
| 미확정 표현 없음: 유사 작업 참조 | PASS | 0 |
| 계획 핵심 회귀 테스트: providerAcceptanceIsNotDelivery | PASS | |
| 계획 핵심 회귀 테스트: concurrentSameRequestReturnsOneNotificationId | PASS | |
| 계획 핵심 회귀 테스트: providerAcceptsThenResponseIsLostRecordsAmbiguousAndBlocksFallback | PASS | |
| 계획 핵심 회귀 테스트: deliveredBeforeSentNeverDowngrades | PASS | |
| 계획 핵심 회귀 테스트: fcmInstallationAndLegacyTokenAreDifferentTypes | PASS | |
| 계획 핵심 회귀 테스트: http200IsProviderAcceptedNotDelivered | PASS | |
| 계획 핵심 회귀 테스트: ttlHeaderIsRequiredAndAcceptanceIsNotDelivery | PASS | |
| 계획 핵심 회귀 테스트: websocketFailureDoesNotRollbackInboxItem | PASS | |
| 계획 핵심 회귀 테스트: metricTagsNeverContainHighCardinalityIdentifiers | PASS | |
| 계획 핵심 회귀 테스트: acceptedThenResponseLossIsAmbiguousForEveryApplicableAdapter | PASS | |
| 계획 핵심 회귀 테스트: notificationPerformanceTest | PASS | |
| 설계·계획 날짜 일치 | PASS | |
| Java 21 가정 명시 | PASS | |
| 실제 저장소 부재 가정 명시 | PASS | |
| Provider SDK 공개 금지 | PASS | |
| Core async CompletionStage | PASS | |
| FCM FID 우선 | PASS | |
| Ambiguous fallback 금지 | PASS | |
| ProviderEvent 원장 | PASS | |
| ZIP CRC 무결성 | PASS | None |
| ZIP 필수 파일 | PASS | [] |
## 검증 범위
- 이 검증은 Markdown 설계서와 구현 계획서의 구조·정합성·필수 계약·경로 중복·미확정 표현·패키지 CRC를 검사한다.
- 실제 Backend Skeleton 저장소가 입력되지 않았으므로 Gradle compile, Provider sandbox, PostgreSQL integration, chaos, performance test 실행 결과는 포함하지 않는다.
- 구현 시에는 계획의 각 Task가 지정한 red-green TDD 명령을 실제 저장소에서 실행해야 한다.