# 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 명령을 실제 저장소에서 실행해야 한다.