feat: jpa, messaging, notification, mongo, graphql 어댑터터 리펙토링

This commit is contained in:
DongHyeonka
2026-08-18 10:59:56 +09:00
parent 2f5d2fc219
commit e98b56eb03
372 changed files with 25131 additions and 20357 deletions
@@ -0,0 +1,30 @@
> **보존 안내** — 이 파일은 저장소 루트 `fileserver-superpowers-package/` 에 있던 납품 패키지의 README다.
> 2026-08-15 문서 정리에서 설계서·계획서는 `docs/superpowers/specs/` 와 `docs/superpowers/plans/` 로 통합했고,
> 실행 불가 상태였던 `validate_fileserver_docs.py` 는 제거했다.
> 아래 본문은 납품 시점의 기록이므로 제거된 파일을 가리키는 문장은 더 이상 유효하지 않다.
# Fileserver Superpowers Package
## 포함 파일
- `fileserver-platform-design.md` — Fileserver 플랫폼 설계 확정안
- `fileserver-platform-implementation-plan.md` — 33개 TDD 작업으로 분해한 구현 계획
- `VALIDATION.md` — 문서 정적 검증 결과
- `validate_fileserver_docs.py` — 검증 재실행 스크립트
## 저장소 배치 위치
```text
docs/superpowers/specs/2026-08-07-fileserver-platform-design.md
docs/superpowers/plans/2026-08-07-fileserver-platform-implementation-plan.md
```
## 실행 순서
1. 실제 Backend Skeleton 구조와 root package를 대조한다.
2. 설계서의 모듈 경계를 저장소에 반영한다.
3. 구현 계획 Task 1부터 순서대로 실행한다.
4. 각 Task에서 실패 테스트를 확인한 뒤 구현한다.
5. Milestone A~D마다 전체 검증 Gate를 실행한다.
실행에는 `superpowers:subagent-driven-development` 방식이 권장된다.
@@ -0,0 +1,43 @@
# Fileserver Superpowers 문서 검증
**결과:** PASS
## 파일
- `fileserver-platform-design.md` — 1893 lines, 59904 bytes, SHA-256 `ee7b21277b254b9606a9ec6e34118a10fba3abbe818b43cbce9ae832102411e6`
- `fileserver-platform-implementation-plan.md` — 3422 lines, 131608 bytes, SHA-256 `9a443852ab3a7e4a2232c1b443d4cb8d3478a4954d70510173d3e0ac1d3d2125`
## 검증 항목
- [x] **fileserver-platform-design.md exists** — /mnt/data/fileserver-platform-design.md
- [x] **fileserver-platform-implementation-plan.md exists** — /mnt/data/fileserver-platform-implementation-plan.md
- [x] **design title** — True
- [x] **plan header** — required Superpowers header
- [x] **design code fences** — count=94
- [x] **plan code fences** — count=416
- [x] **design placeholder scan** — hits=[]
- [x] **plan placeholder scan** — hits=[]
- [x] **design section coverage** — missing=[]
- [x] **design topic: MVC** — missing=[]
- [x] **design topic: WebFlux** — missing=[]
- [x] **design topic: local/PVC/NFS** — missing=[]
- [x] **design topic: content/metadata separation** — missing=[]
- [x] **design topic: upload** — missing=[]
- [x] **design topic: download** — missing=[]
- [x] **design topic: publish** — missing=[]
- [x] **design topic: security** — missing=[]
- [x] **design topic: resumable** — missing=[]
- [x] **design topic: observability** — missing=[]
- [x] **blocking core port leakage** — hits=[]
- [x] **task count** — count=33
- [x] **task numbering** — numbers=[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]
- [x] **task block completeness** — {}
- [x] **unique create paths** — {}
- [x] **plan scope coverage** — missing=[]
- [x] **no Redis carryover** — search term=redis
- [x] **no deprecated nginx token design** — token mapper removed
## 검증 범위의 한계
- 현재 Backend Skeleton 저장소가 입력되지 않아 Gradle compilation, integration test, Nginx execution, PVC·NFS certification은 실행하지 않았다.
- 본 검증은 설계·계획 문서의 구조, 내부 일관성, 범위 추적성, 미확정 표식과 중복 경로를 확인한 정적 검증이다.
@@ -0,0 +1,48 @@
> **보존 안내** — 이 파일은 저장소 루트 `graphql-superpowers-package/` 에 있던 납품 패키지의 README다.
> 2026-08-15 문서 정리에서 설계서·계획서는 `docs/superpowers/specs/` 와 `docs/superpowers/plans/` 로 통합했고,
> `validate_graphql_docs.py` 와 `MANIFEST.sha256` 은 제거했다.
> 아래 본문은 납품 시점의 기록이므로 제거된 파일을 가리키는 문장은 더 이상 유효하지 않다.
# GraphQL Superpowers 설계 패키지
이 패키지는 `GraphQL API 실행 플랫폼 심층 리서치`를 구현 기준선으로 변환한 설계서와 실행 계획서다.
## 문서
- `docs/superpowers/specs/2026-08-12-graphql-api-execution-platform-design.md`
- Stable·Advanced 전체 아키텍처, 공개 계약, 경계, 실패 의미론, 테스트와 지원 등급
- 입력 심층 리서치 원문을 추적 부록으로 포함
- `docs/superpowers/plans/2026-08-12-graphql-api-execution-platform-implementation-plan.md`
- Stable 구현 Task 148
- `docs/superpowers/plans/2026-08-12-graphql-advanced-capabilities-expansion-plan.md`
- Stable Release Gate 이후 실행하는 Advanced·Experimental Task 119
- `VALIDATION.md`
- 정적 검증 결과와 검증 범위
- `validate_graphql_docs.py`
- 패키지 내부 문서 재검증 스크립트
- `MANIFEST.sha256`
- 패키지 파일 무결성 목록
## 구현 순서
```text
Stable Task 148
→ Stable Release Gate
→ Advanced Task 119
→ Capability별 Promotion Gate
```
## 명시적 전제
```text
Java 21
Gradle Kotlin DSL
Spring Boot 4.1 BOM
Spring for GraphQL 2.0
Boot-managed GraphQL Java v25 계열
Stable module root: modules/graphql
Advanced module root: modules/graphql-advanced
Root package: io.backend.skeleton.graphql
```
실제 저장소에 적용할 때 기존 package·version catalog·module naming에 맞춰 경로만 조정하고, 문서의 공개 계약·불변 조건·테스트 의미는 유지한다.
@@ -0,0 +1,98 @@
# GraphQL Superpowers 문서 정적 검증 결과
- **검증 시각 기준:** 2026-08-12
- **검증 대상:** 설계서 1개, Stable 구현 계획서 1개, Advanced·Experimental 확장 계획서 1개
- **검증 명령:** `python3 validate_graphql_docs.py`
- **결과:** **PASS**
- **실행 검사:** 1,475
- **통과:** 1,475
- **실패:** 0
## 문서 규모
| 문서 | 행 수 | 크기 |
|---|---:|---:|
| GraphQL API 실행 플랫폼 설계서 | 2,553 | 93,359 bytes |
| Stable 구현 계획서 | 4,560 | 209,041 bytes |
| Advanced 확장 계획서 | 1,976 | 105,717 bytes |
## 계획 구조
| 항목 | Stable | Advanced |
|---|---:|---:|
| Task 수 | 48 | 19 |
| Create 경로 수 | 227 | 113 |
| Task 번호 연속성 | PASS | PASS |
| 모든 Task의 `Files`·`Interfaces` | PASS | PASS |
| 모든 Task의 Implementation Requirements | PASS | PASS |
| 모든 Task의 Step 15 | PASS | PASS |
| 실패·통과 예상 결과 | PASS | PASS |
| Task별 Git commit 명령 | PASS | PASS |
| Create 경로 중복 | 없음 | 없음 |
| Stable·Advanced 경로 충돌 | 없음 | 없음 |
## 핵심 계약 검증
```text
SDL-first external contract
Single Executable Schema Stable default
HTTP POST Stable profile
application/graphql-response+json preferred
Validation 이후 Field Error·Partial Data는 HTTP 200
Draft 294는 Stable에서 제외
JPA Entity·MongoDB Document 직접 노출 금지
GraphQL Multipart Upload 미지원·Fileserver 사용
request-wide database transaction 금지
DataLoader request scope
Finite Fetch Profile
HMAC-signed cursor
Mutation idempotency·expected version 분리
Parser·shape·complexity·runtime response budget
Actor·Field·Object·Tenant authorization
Low-cardinality observability
Stable/Advanced dependency isolation
Persisted Operation·WebSocket·SSE·Federation 분리
RSocket·HTTP GET·Incremental Delivery Experimental
```
위 계약은 설계서와 계획서의 필수 문자열·모듈 경로·Task별 파일·테스트를 대조해 검증했습니다.
## 입력 리서치 추적성
- 첨부된 `GraphQL API 실행 플랫폼 심층 리서치` 원문 전체가 설계서의 `부록 B`에 포함되어 있습니다.
- 설계 본문은 원문의 용어와 결론을 유지하면서 구현 판단을 Stable·Advanced·Experimental로 고정합니다.
- 설계서와 입력 원문의 exact text 포함 검사를 별도로 통과했습니다.
## 패키지 검증 항목
```text
문서 파일 존재
Markdown code fence 균형
Task 148 / 119 연속성
Task별 테스트·명령·commit
정확한 Create 경로
Placeholder 금지
Stable module에 WebSocket·Federation·Persisted Operation 경로 부재
Advanced module에 feature flag와 capability 경로 존재
금지 API pattern 부재
문서 SHA-256 계산
```
## 검증 범위의 한계
현재 PASS는 **문서의 정적 구조, 요구사항 추적성, 내부 계약과 실행 계획의 완결성**을 의미합니다. 실제 Backend Skeleton 저장소가 입력으로 제공되지 않았으므로 다음은 실행하지 않았습니다.
```text
Gradle configuration·compile
Spring Boot ApplicationContext 기동
SchemaMappingInspector 실제 결과
GraphQlTester HTTP·WebFlux contract
JPA·MongoDB statement/query-count integration
query bomb·complexity load test
Virtual Thread·event-loop blocking test
WebSocket·SSE soak test
Federation composition·router integration
actual Git commit
```
실제 구현에서는 Stable Task 148을 먼저 수행해 Stable Release Gate를 통과한 뒤 Advanced Task 119를 시작해야 합니다.
@@ -0,0 +1,28 @@
> **보존 안내** — 이 파일은 저장소 루트 `httpclient-superpowers-package/` 에 있던 납품 패키지의 README다.
> 2026-08-15 문서 정리에서 설계서·계획서는 `docs/superpowers/specs/` 와 `docs/superpowers/plans/` 로 통합했고,
> 실행 불가 상태였던 `validate_httpclient_docs.py` 는 제거했다.
> 아래 본문은 납품 시점의 기록이므로 제거된 파일을 가리키는 문장은 더 이상 유효하지 않다.
# HTTP Client Superpowers 설계 패키지
이 패키지는 `Java/Spring 외부 HTTP Client 플랫폼 설계 심층 리서치`를 기반으로 작성한 설계서와 구현 계획서다.
## 파일
- `docs/superpowers/specs/2026-08-08-httpclient-platform-design.md`
- `docs/superpowers/plans/2026-08-08-httpclient-platform-implementation-plan.md`
- `VALIDATION.md`
- `validate_httpclient_docs.py`
## 구현 기준
- Java 21
- Gradle Kotlin DSL
- 공통 API는 Spring Framework 6.2 기준
- Spring Framework 7.0 호환성 검증
- Apache HttpClient 5 + RestClient
- JDK HttpClient + RestClient
- Reactor Netty + WebClient
- Jetty HTTP/3 Experimental
실제 Backend Skeleton 저장소가 제공되지 않았으므로 package 경로와 Gradle 구조는 설계서의 명시적 구현 가정이다. 구현 전 저장소의 기존 convention과 root package에 맞춰 경로만 조정하고 공개 계약과 정책 의미론은 유지한다.
@@ -0,0 +1,31 @@
# HTTP Client Superpowers 문서 검증
**검증 결과:** PASS
## 검증 항목
- 설계서 존재 및 최소 구조: PASS
- 구현 계획서 존재 및 최소 구조: PASS
- Task 번호 연속성: PASS
- Task별 Files·Interfaces·Step 1~5·Expected·Commit: PASS
- Markdown code fence 균형: PASS
- Placeholder scan: PASS
- 중복 Create 경로: PASS
- 핵심 설계 범위: PASS
- 핵심 구현 범위: PASS
## 통계
- explicitly forbidden signature documented: ApacheHttpClient nativeApacheClient()
- explicitly forbidden signature documented: HttpClient nativeJdkClient()
- explicitly forbidden signature documented: WebClient.Builder mutableBuilder()
- explicitly forbidden signature documented: RestClient.Builder mutableBuilder()
- design lines=1956, bytes=64493
- plan lines=3635, bytes=158401
- tasks=38, create_paths=306
## 결론
- 설계 결정과 구현 작업의 정적 추적성이 확인됐다.
- 실제 저장소가 제공되지 않았으므로 Gradle compile, integration, fault, security, performance test는 아직 실행되지 않았다.
- 계획의 Java 21, Gradle Kotlin DSL, root package는 명시된 구현 가정이다.
+73
View File
@@ -0,0 +1,73 @@
> **보존 안내** — 이 파일은 저장소 루트 `jpa-superpowers-package/` 에 있던 납품 패키지의 README다.
> 2026-08-15 문서 정리에서 설계서·계획서는 `docs/superpowers/specs/` 와 `docs/superpowers/plans/` 로 통합했고,
> `validate_jpa_docs.py` 와 `MANIFEST.sha256` 은 제거했다.
> 아래 본문은 납품 시점의 기록이므로 제거된 파일을 가리키는 문장은 더 이상 유효하지 않다.
# JPA 관계형 영속성 플랫폼 Superpowers 패키지
이 패키지는 Java/Spring Backend Skeleton의 JPA 관계형 영속성 플랫폼을 구현하기 위한 설계서, Stable 구현 계획서, Experimental 확장 계획서와 정적 검증 도구를 포함한다.
## 기준
- 기준일: 2026-08-11
- Java 21
- Gradle Kotlin DSL
- Spring Boot 4.1 dependency management
- Spring Data JPA 4.1
- Jakarta Persistence 3.2
- Hibernate ORM 7.4
- PostgreSQL 16·17·18 Stable Matrix
- H2는 Local Convenience이며 PostgreSQL 호환성 증거로 사용하지 않는다.
## 문서
```text
docs/superpowers/specs/2026-08-11-jpa-persistence-platform-design.md
docs/superpowers/plans/2026-08-11-jpa-persistence-platform-implementation-plan.md
docs/superpowers/plans/2026-08-11-jpa-persistence-experimental-expansion-plan.md
```
## 구현 경계
Stable 계획은 다음 원칙을 고정한다.
```text
도메인이 Entity·Embeddable·Repository·Query를 소유한다.
GenericRepository 또는 Spring Data CRUD 재포장을 만들지 않는다.
Application Service가 Transaction 경계를 소유한다.
Retry는 새 Persistence Context에서 전체 Use Case를 재실행한다.
Commit 결과 불명은 자동 Retry하지 않고 reconciliation으로 처리한다.
Flyway가 운영 Schema 변경의 Source of Truth다.
PostgreSQL 16·17·18 실제 계약 테스트를 Release Gate로 사용한다.
```
Experimental 계획은 다음 범위를 Stable과 분리한다.
```text
Shared-schema Multi-tenancy
PostgreSQL RLS
Schema-per-tenant
Database-per-tenant
Consistency-aware Read Replica
Jakarta Persistence 4.0
Hibernate ORM 8
PostgreSQL 19
```
## 실행 순서
1. Stable 구현 계획 Task 1~53을 순서대로 수행한다.
2. 각 Task에서 실패 테스트 → 실패 확인 → 최소 구현 → 통과 확인 → 커밋 순서를 따른다.
3. Stable Release Gate가 통과한 뒤 Experimental Task 1~9를 시작한다.
4. Experimental 기능은 별도 feature flag와 승격 ADR 없이 Stable Starter에 포함하지 않는다.
## 검증
압축을 해제한 패키지 루트에서 실행한다.
```bash
python validate_jpa_docs.py
sha256sum -c MANIFEST.sha256
```
현재 `VALIDATION.md`는 문서 구조·Task 완결성·타입 일관성·경로 충돌·핵심 계약을 대상으로 한 정적 검증 결과다. 실제 Backend Skeleton 저장소의 Gradle compile, PostgreSQL integration, Flyway upgrade, failure injection, 성능 및 보안 테스트 결과는 아니다.
+829
View File
@@ -0,0 +1,829 @@
# JPA Superpowers 문서 정적 검증
- 결과: **PASS**
- 실행 검사: **808개**
- 통과: **808개**
- 실패: **0개**
- 설계서: **3,276행**
- Stable 구현 계획서: **4,716행**
- Experimental 확장 계획서: **771행**
- Stable Task: **53개**
- Experimental Task: **9개**
- Stable Create 경로: **235개**
- Experimental Create 경로: **37개**
- 설계 SHA-256: `a28046eb1451d87e3ac9c3b1922c134b99fa9155d32c09c0f5bddf80f588aaec`
- Stable 계획 SHA-256: `bb5d0d876e9a3232a3661cd50b3a4c0da0ea4c68f820526d8b34cb3bdcb43d86`
- Experimental 계획 SHA-256: `1ac376309b161cf95b6b3def89284e509ce0191131a268833ca13bd50814ff09`
## 검사 결과
| 검사 | 결과 | 상세 |
|---|---:|---|
| 설계서 존재 | PASS | /mnt/data/jpa-superpowers-package/docs/superpowers/specs/2026-08-11-jpa-persistence-platform-design.md |
| Stable 계획서 존재 | PASS | /mnt/data/jpa-superpowers-package/docs/superpowers/plans/2026-08-11-jpa-persistence-platform-implementation-plan.md |
| Experimental 계획서 존재 | PASS | /mnt/data/jpa-superpowers-package/docs/superpowers/plans/2026-08-11-jpa-persistence-experimental-expansion-plan.md |
| 설계서 최소 상세도 | PASS | 3276 lines |
| Stable 계획서 최소 상세도 | PASS | 4716 lines |
| Experimental 계획서 최소 상세도 | PASS | 771 lines |
| 설계서 코드 fence 균형 | PASS | 262 |
| 설계서 placeholder 부재 | PASS | |
| Stable 계획서 코드 fence 균형 | PASS | 540 |
| Stable 계획서 placeholder 부재 | PASS | |
| Experimental 계획서 코드 fence 균형 | PASS | 94 |
| Experimental 계획서 placeholder 부재 | PASS | |
| 설계 핵심 계약: GenericRepository | PASS | |
| 설계 핵심 계약: TransactionCompletionUnknownException | PASS | |
| 설계 핵심 계약: EvidenceAwareJpaTransactionManager | PASS | |
| 설계 핵심 계약: Application Service | PASS | |
| 설계 핵심 계약: OSIV | PASS | |
| 설계 핵심 계약: PostgreSQL 16·17·18 | PASS | |
| 설계 핵심 계약: Hibernate 7.4 Collection Fetch Pagination | PASS | |
| 설계 핵심 계약: FOR UPDATE SKIP LOCKED | PASS | |
| 설계 핵심 계약: CREATE INDEX CONCURRENTLY | PASS | |
| 설계 핵심 계약: Flyway | PASS | |
| 설계 핵심 계약: Runtime·Migration·Admin | PASS | |
| 설계 핵심 계약: H2는 Local Convenience | PASS | |
| 설계 핵심 계약: 전체 Transaction Retry | PASS | |
| 설계 핵심 계약: J1 Standard Persistence | PASS | |
| 설계 핵심 계약: J4 Admin / Operations | PASS | |
| 설계 핵심 계약: 완료 정의 | PASS | |
| GenericRepository 실제 선언 부재 | PASS | |
| 운영 ddl auto update 금지 | PASS | |
| Completion Unknown 자동 Retry 금지 | PASS | |
| OSIV false 강제 | PASS | |
| PG16·17·18 Matrix | PASS | |
| Hibernate 7.4 fetch pagination gate | PASS | |
| Flyway snapshot upgrade gate | PASS | |
| Runtime role no DDL gate | PASS | |
| Stable 계획에 Experimental create 경로 부재 | PASS | |
| Stable Task 1~53 연속성 | 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, 51, 52, 53] |
| Experimental Task 1~9 연속성 | PASS | [1, 2, 3, 4, 5, 6, 7, 8, 9] |
| Stable Task chunk 수 | PASS | 53 |
| Experimental Task chunk 수 | PASS | 9 |
| Stable Task 1 필수 항목: **Files:** | PASS | |
| Stable Task 1 필수 항목: **Interfaces:** | PASS | |
| Stable Task 1 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 1 필수 항목: **Step 1: | PASS | |
| Stable Task 1 필수 항목: **Step 2: | PASS | |
| Stable Task 1 필수 항목: **Step 3: | PASS | |
| Stable Task 1 필수 항목: **Step 4: | PASS | |
| Stable Task 1 필수 항목: **Step 5: | PASS | |
| Stable Task 1 필수 항목: Expected: | PASS | |
| Stable Task 1 필수 항목: git commit -m | PASS | |
| Stable Task 1 Gradle focused command | PASS | |
| Stable Task 1 exact path | PASS | |
| Stable Task 2 필수 항목: **Files:** | PASS | |
| Stable Task 2 필수 항목: **Interfaces:** | PASS | |
| Stable Task 2 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 2 필수 항목: **Step 1: | PASS | |
| Stable Task 2 필수 항목: **Step 2: | PASS | |
| Stable Task 2 필수 항목: **Step 3: | PASS | |
| Stable Task 2 필수 항목: **Step 4: | PASS | |
| Stable Task 2 필수 항목: **Step 5: | PASS | |
| Stable Task 2 필수 항목: Expected: | PASS | |
| Stable Task 2 필수 항목: git commit -m | PASS | |
| Stable Task 2 Gradle focused command | PASS | |
| Stable Task 2 exact path | PASS | |
| Stable Task 3 필수 항목: **Files:** | PASS | |
| Stable Task 3 필수 항목: **Interfaces:** | PASS | |
| Stable Task 3 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 3 필수 항목: **Step 1: | PASS | |
| Stable Task 3 필수 항목: **Step 2: | PASS | |
| Stable Task 3 필수 항목: **Step 3: | PASS | |
| Stable Task 3 필수 항목: **Step 4: | PASS | |
| Stable Task 3 필수 항목: **Step 5: | PASS | |
| Stable Task 3 필수 항목: Expected: | PASS | |
| Stable Task 3 필수 항목: git commit -m | PASS | |
| Stable Task 3 Gradle focused command | PASS | |
| Stable Task 3 exact path | PASS | |
| Stable Task 4 필수 항목: **Files:** | PASS | |
| Stable Task 4 필수 항목: **Interfaces:** | PASS | |
| Stable Task 4 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 4 필수 항목: **Step 1: | PASS | |
| Stable Task 4 필수 항목: **Step 2: | PASS | |
| Stable Task 4 필수 항목: **Step 3: | PASS | |
| Stable Task 4 필수 항목: **Step 4: | PASS | |
| Stable Task 4 필수 항목: **Step 5: | PASS | |
| Stable Task 4 필수 항목: Expected: | PASS | |
| Stable Task 4 필수 항목: git commit -m | PASS | |
| Stable Task 4 Gradle focused command | PASS | |
| Stable Task 4 exact path | PASS | |
| Stable Task 5 필수 항목: **Files:** | PASS | |
| Stable Task 5 필수 항목: **Interfaces:** | PASS | |
| Stable Task 5 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 5 필수 항목: **Step 1: | PASS | |
| Stable Task 5 필수 항목: **Step 2: | PASS | |
| Stable Task 5 필수 항목: **Step 3: | PASS | |
| Stable Task 5 필수 항목: **Step 4: | PASS | |
| Stable Task 5 필수 항목: **Step 5: | PASS | |
| Stable Task 5 필수 항목: Expected: | PASS | |
| Stable Task 5 필수 항목: git commit -m | PASS | |
| Stable Task 5 Gradle focused command | PASS | |
| Stable Task 5 exact path | PASS | |
| Stable Task 6 필수 항목: **Files:** | PASS | |
| Stable Task 6 필수 항목: **Interfaces:** | PASS | |
| Stable Task 6 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 6 필수 항목: **Step 1: | PASS | |
| Stable Task 6 필수 항목: **Step 2: | PASS | |
| Stable Task 6 필수 항목: **Step 3: | PASS | |
| Stable Task 6 필수 항목: **Step 4: | PASS | |
| Stable Task 6 필수 항목: **Step 5: | PASS | |
| Stable Task 6 필수 항목: Expected: | PASS | |
| Stable Task 6 필수 항목: git commit -m | PASS | |
| Stable Task 6 Gradle focused command | PASS | |
| Stable Task 6 exact path | PASS | |
| Stable Task 7 필수 항목: **Files:** | PASS | |
| Stable Task 7 필수 항목: **Interfaces:** | PASS | |
| Stable Task 7 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 7 필수 항목: **Step 1: | PASS | |
| Stable Task 7 필수 항목: **Step 2: | PASS | |
| Stable Task 7 필수 항목: **Step 3: | PASS | |
| Stable Task 7 필수 항목: **Step 4: | PASS | |
| Stable Task 7 필수 항목: **Step 5: | PASS | |
| Stable Task 7 필수 항목: Expected: | PASS | |
| Stable Task 7 필수 항목: git commit -m | PASS | |
| Stable Task 7 Gradle focused command | PASS | |
| Stable Task 7 exact path | PASS | |
| Stable Task 8 필수 항목: **Files:** | PASS | |
| Stable Task 8 필수 항목: **Interfaces:** | PASS | |
| Stable Task 8 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 8 필수 항목: **Step 1: | PASS | |
| Stable Task 8 필수 항목: **Step 2: | PASS | |
| Stable Task 8 필수 항목: **Step 3: | PASS | |
| Stable Task 8 필수 항목: **Step 4: | PASS | |
| Stable Task 8 필수 항목: **Step 5: | PASS | |
| Stable Task 8 필수 항목: Expected: | PASS | |
| Stable Task 8 필수 항목: git commit -m | PASS | |
| Stable Task 8 Gradle focused command | PASS | |
| Stable Task 8 exact path | PASS | |
| Stable Task 9 필수 항목: **Files:** | PASS | |
| Stable Task 9 필수 항목: **Interfaces:** | PASS | |
| Stable Task 9 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 9 필수 항목: **Step 1: | PASS | |
| Stable Task 9 필수 항목: **Step 2: | PASS | |
| Stable Task 9 필수 항목: **Step 3: | PASS | |
| Stable Task 9 필수 항목: **Step 4: | PASS | |
| Stable Task 9 필수 항목: **Step 5: | PASS | |
| Stable Task 9 필수 항목: Expected: | PASS | |
| Stable Task 9 필수 항목: git commit -m | PASS | |
| Stable Task 9 Gradle focused command | PASS | |
| Stable Task 9 exact path | PASS | |
| Stable Task 10 필수 항목: **Files:** | PASS | |
| Stable Task 10 필수 항목: **Interfaces:** | PASS | |
| Stable Task 10 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 10 필수 항목: **Step 1: | PASS | |
| Stable Task 10 필수 항목: **Step 2: | PASS | |
| Stable Task 10 필수 항목: **Step 3: | PASS | |
| Stable Task 10 필수 항목: **Step 4: | PASS | |
| Stable Task 10 필수 항목: **Step 5: | PASS | |
| Stable Task 10 필수 항목: Expected: | PASS | |
| Stable Task 10 필수 항목: git commit -m | PASS | |
| Stable Task 10 Gradle focused command | PASS | |
| Stable Task 10 exact path | PASS | |
| Stable Task 11 필수 항목: **Files:** | PASS | |
| Stable Task 11 필수 항목: **Interfaces:** | PASS | |
| Stable Task 11 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 11 필수 항목: **Step 1: | PASS | |
| Stable Task 11 필수 항목: **Step 2: | PASS | |
| Stable Task 11 필수 항목: **Step 3: | PASS | |
| Stable Task 11 필수 항목: **Step 4: | PASS | |
| Stable Task 11 필수 항목: **Step 5: | PASS | |
| Stable Task 11 필수 항목: Expected: | PASS | |
| Stable Task 11 필수 항목: git commit -m | PASS | |
| Stable Task 11 Gradle focused command | PASS | |
| Stable Task 11 exact path | PASS | |
| Stable Task 12 필수 항목: **Files:** | PASS | |
| Stable Task 12 필수 항목: **Interfaces:** | PASS | |
| Stable Task 12 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 12 필수 항목: **Step 1: | PASS | |
| Stable Task 12 필수 항목: **Step 2: | PASS | |
| Stable Task 12 필수 항목: **Step 3: | PASS | |
| Stable Task 12 필수 항목: **Step 4: | PASS | |
| Stable Task 12 필수 항목: **Step 5: | PASS | |
| Stable Task 12 필수 항목: Expected: | PASS | |
| Stable Task 12 필수 항목: git commit -m | PASS | |
| Stable Task 12 Gradle focused command | PASS | |
| Stable Task 12 exact path | PASS | |
| Stable Task 13 필수 항목: **Files:** | PASS | |
| Stable Task 13 필수 항목: **Interfaces:** | PASS | |
| Stable Task 13 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 13 필수 항목: **Step 1: | PASS | |
| Stable Task 13 필수 항목: **Step 2: | PASS | |
| Stable Task 13 필수 항목: **Step 3: | PASS | |
| Stable Task 13 필수 항목: **Step 4: | PASS | |
| Stable Task 13 필수 항목: **Step 5: | PASS | |
| Stable Task 13 필수 항목: Expected: | PASS | |
| Stable Task 13 필수 항목: git commit -m | PASS | |
| Stable Task 13 Gradle focused command | PASS | |
| Stable Task 13 exact path | PASS | |
| Stable Task 14 필수 항목: **Files:** | PASS | |
| Stable Task 14 필수 항목: **Interfaces:** | PASS | |
| Stable Task 14 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 14 필수 항목: **Step 1: | PASS | |
| Stable Task 14 필수 항목: **Step 2: | PASS | |
| Stable Task 14 필수 항목: **Step 3: | PASS | |
| Stable Task 14 필수 항목: **Step 4: | PASS | |
| Stable Task 14 필수 항목: **Step 5: | PASS | |
| Stable Task 14 필수 항목: Expected: | PASS | |
| Stable Task 14 필수 항목: git commit -m | PASS | |
| Stable Task 14 Gradle focused command | PASS | |
| Stable Task 14 exact path | PASS | |
| Stable Task 15 필수 항목: **Files:** | PASS | |
| Stable Task 15 필수 항목: **Interfaces:** | PASS | |
| Stable Task 15 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 15 필수 항목: **Step 1: | PASS | |
| Stable Task 15 필수 항목: **Step 2: | PASS | |
| Stable Task 15 필수 항목: **Step 3: | PASS | |
| Stable Task 15 필수 항목: **Step 4: | PASS | |
| Stable Task 15 필수 항목: **Step 5: | PASS | |
| Stable Task 15 필수 항목: Expected: | PASS | |
| Stable Task 15 필수 항목: git commit -m | PASS | |
| Stable Task 15 Gradle focused command | PASS | |
| Stable Task 15 exact path | PASS | |
| Stable Task 16 필수 항목: **Files:** | PASS | |
| Stable Task 16 필수 항목: **Interfaces:** | PASS | |
| Stable Task 16 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 16 필수 항목: **Step 1: | PASS | |
| Stable Task 16 필수 항목: **Step 2: | PASS | |
| Stable Task 16 필수 항목: **Step 3: | PASS | |
| Stable Task 16 필수 항목: **Step 4: | PASS | |
| Stable Task 16 필수 항목: **Step 5: | PASS | |
| Stable Task 16 필수 항목: Expected: | PASS | |
| Stable Task 16 필수 항목: git commit -m | PASS | |
| Stable Task 16 Gradle focused command | PASS | |
| Stable Task 16 exact path | PASS | |
| Stable Task 17 필수 항목: **Files:** | PASS | |
| Stable Task 17 필수 항목: **Interfaces:** | PASS | |
| Stable Task 17 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 17 필수 항목: **Step 1: | PASS | |
| Stable Task 17 필수 항목: **Step 2: | PASS | |
| Stable Task 17 필수 항목: **Step 3: | PASS | |
| Stable Task 17 필수 항목: **Step 4: | PASS | |
| Stable Task 17 필수 항목: **Step 5: | PASS | |
| Stable Task 17 필수 항목: Expected: | PASS | |
| Stable Task 17 필수 항목: git commit -m | PASS | |
| Stable Task 17 Gradle focused command | PASS | |
| Stable Task 17 exact path | PASS | |
| Stable Task 18 필수 항목: **Files:** | PASS | |
| Stable Task 18 필수 항목: **Interfaces:** | PASS | |
| Stable Task 18 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 18 필수 항목: **Step 1: | PASS | |
| Stable Task 18 필수 항목: **Step 2: | PASS | |
| Stable Task 18 필수 항목: **Step 3: | PASS | |
| Stable Task 18 필수 항목: **Step 4: | PASS | |
| Stable Task 18 필수 항목: **Step 5: | PASS | |
| Stable Task 18 필수 항목: Expected: | PASS | |
| Stable Task 18 필수 항목: git commit -m | PASS | |
| Stable Task 18 Gradle focused command | PASS | |
| Stable Task 18 exact path | PASS | |
| Stable Task 19 필수 항목: **Files:** | PASS | |
| Stable Task 19 필수 항목: **Interfaces:** | PASS | |
| Stable Task 19 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 19 필수 항목: **Step 1: | PASS | |
| Stable Task 19 필수 항목: **Step 2: | PASS | |
| Stable Task 19 필수 항목: **Step 3: | PASS | |
| Stable Task 19 필수 항목: **Step 4: | PASS | |
| Stable Task 19 필수 항목: **Step 5: | PASS | |
| Stable Task 19 필수 항목: Expected: | PASS | |
| Stable Task 19 필수 항목: git commit -m | PASS | |
| Stable Task 19 Gradle focused command | PASS | |
| Stable Task 19 exact path | PASS | |
| Stable Task 20 필수 항목: **Files:** | PASS | |
| Stable Task 20 필수 항목: **Interfaces:** | PASS | |
| Stable Task 20 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 20 필수 항목: **Step 1: | PASS | |
| Stable Task 20 필수 항목: **Step 2: | PASS | |
| Stable Task 20 필수 항목: **Step 3: | PASS | |
| Stable Task 20 필수 항목: **Step 4: | PASS | |
| Stable Task 20 필수 항목: **Step 5: | PASS | |
| Stable Task 20 필수 항목: Expected: | PASS | |
| Stable Task 20 필수 항목: git commit -m | PASS | |
| Stable Task 20 Gradle focused command | PASS | |
| Stable Task 20 exact path | PASS | |
| Stable Task 21 필수 항목: **Files:** | PASS | |
| Stable Task 21 필수 항목: **Interfaces:** | PASS | |
| Stable Task 21 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 21 필수 항목: **Step 1: | PASS | |
| Stable Task 21 필수 항목: **Step 2: | PASS | |
| Stable Task 21 필수 항목: **Step 3: | PASS | |
| Stable Task 21 필수 항목: **Step 4: | PASS | |
| Stable Task 21 필수 항목: **Step 5: | PASS | |
| Stable Task 21 필수 항목: Expected: | PASS | |
| Stable Task 21 필수 항목: git commit -m | PASS | |
| Stable Task 21 Gradle focused command | PASS | |
| Stable Task 21 exact path | PASS | |
| Stable Task 22 필수 항목: **Files:** | PASS | |
| Stable Task 22 필수 항목: **Interfaces:** | PASS | |
| Stable Task 22 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 22 필수 항목: **Step 1: | PASS | |
| Stable Task 22 필수 항목: **Step 2: | PASS | |
| Stable Task 22 필수 항목: **Step 3: | PASS | |
| Stable Task 22 필수 항목: **Step 4: | PASS | |
| Stable Task 22 필수 항목: **Step 5: | PASS | |
| Stable Task 22 필수 항목: Expected: | PASS | |
| Stable Task 22 필수 항목: git commit -m | PASS | |
| Stable Task 22 Gradle focused command | PASS | |
| Stable Task 22 exact path | PASS | |
| Stable Task 23 필수 항목: **Files:** | PASS | |
| Stable Task 23 필수 항목: **Interfaces:** | PASS | |
| Stable Task 23 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 23 필수 항목: **Step 1: | PASS | |
| Stable Task 23 필수 항목: **Step 2: | PASS | |
| Stable Task 23 필수 항목: **Step 3: | PASS | |
| Stable Task 23 필수 항목: **Step 4: | PASS | |
| Stable Task 23 필수 항목: **Step 5: | PASS | |
| Stable Task 23 필수 항목: Expected: | PASS | |
| Stable Task 23 필수 항목: git commit -m | PASS | |
| Stable Task 23 Gradle focused command | PASS | |
| Stable Task 23 exact path | PASS | |
| Stable Task 24 필수 항목: **Files:** | PASS | |
| Stable Task 24 필수 항목: **Interfaces:** | PASS | |
| Stable Task 24 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 24 필수 항목: **Step 1: | PASS | |
| Stable Task 24 필수 항목: **Step 2: | PASS | |
| Stable Task 24 필수 항목: **Step 3: | PASS | |
| Stable Task 24 필수 항목: **Step 4: | PASS | |
| Stable Task 24 필수 항목: **Step 5: | PASS | |
| Stable Task 24 필수 항목: Expected: | PASS | |
| Stable Task 24 필수 항목: git commit -m | PASS | |
| Stable Task 24 Gradle focused command | PASS | |
| Stable Task 24 exact path | PASS | |
| Stable Task 25 필수 항목: **Files:** | PASS | |
| Stable Task 25 필수 항목: **Interfaces:** | PASS | |
| Stable Task 25 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 25 필수 항목: **Step 1: | PASS | |
| Stable Task 25 필수 항목: **Step 2: | PASS | |
| Stable Task 25 필수 항목: **Step 3: | PASS | |
| Stable Task 25 필수 항목: **Step 4: | PASS | |
| Stable Task 25 필수 항목: **Step 5: | PASS | |
| Stable Task 25 필수 항목: Expected: | PASS | |
| Stable Task 25 필수 항목: git commit -m | PASS | |
| Stable Task 25 Gradle focused command | PASS | |
| Stable Task 25 exact path | PASS | |
| Stable Task 26 필수 항목: **Files:** | PASS | |
| Stable Task 26 필수 항목: **Interfaces:** | PASS | |
| Stable Task 26 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 26 필수 항목: **Step 1: | PASS | |
| Stable Task 26 필수 항목: **Step 2: | PASS | |
| Stable Task 26 필수 항목: **Step 3: | PASS | |
| Stable Task 26 필수 항목: **Step 4: | PASS | |
| Stable Task 26 필수 항목: **Step 5: | PASS | |
| Stable Task 26 필수 항목: Expected: | PASS | |
| Stable Task 26 필수 항목: git commit -m | PASS | |
| Stable Task 26 Gradle focused command | PASS | |
| Stable Task 26 exact path | PASS | |
| Stable Task 27 필수 항목: **Files:** | PASS | |
| Stable Task 27 필수 항목: **Interfaces:** | PASS | |
| Stable Task 27 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 27 필수 항목: **Step 1: | PASS | |
| Stable Task 27 필수 항목: **Step 2: | PASS | |
| Stable Task 27 필수 항목: **Step 3: | PASS | |
| Stable Task 27 필수 항목: **Step 4: | PASS | |
| Stable Task 27 필수 항목: **Step 5: | PASS | |
| Stable Task 27 필수 항목: Expected: | PASS | |
| Stable Task 27 필수 항목: git commit -m | PASS | |
| Stable Task 27 Gradle focused command | PASS | |
| Stable Task 27 exact path | PASS | |
| Stable Task 28 필수 항목: **Files:** | PASS | |
| Stable Task 28 필수 항목: **Interfaces:** | PASS | |
| Stable Task 28 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 28 필수 항목: **Step 1: | PASS | |
| Stable Task 28 필수 항목: **Step 2: | PASS | |
| Stable Task 28 필수 항목: **Step 3: | PASS | |
| Stable Task 28 필수 항목: **Step 4: | PASS | |
| Stable Task 28 필수 항목: **Step 5: | PASS | |
| Stable Task 28 필수 항목: Expected: | PASS | |
| Stable Task 28 필수 항목: git commit -m | PASS | |
| Stable Task 28 Gradle focused command | PASS | |
| Stable Task 28 exact path | PASS | |
| Stable Task 29 필수 항목: **Files:** | PASS | |
| Stable Task 29 필수 항목: **Interfaces:** | PASS | |
| Stable Task 29 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 29 필수 항목: **Step 1: | PASS | |
| Stable Task 29 필수 항목: **Step 2: | PASS | |
| Stable Task 29 필수 항목: **Step 3: | PASS | |
| Stable Task 29 필수 항목: **Step 4: | PASS | |
| Stable Task 29 필수 항목: **Step 5: | PASS | |
| Stable Task 29 필수 항목: Expected: | PASS | |
| Stable Task 29 필수 항목: git commit -m | PASS | |
| Stable Task 29 Gradle focused command | PASS | |
| Stable Task 29 exact path | PASS | |
| Stable Task 30 필수 항목: **Files:** | PASS | |
| Stable Task 30 필수 항목: **Interfaces:** | PASS | |
| Stable Task 30 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 30 필수 항목: **Step 1: | PASS | |
| Stable Task 30 필수 항목: **Step 2: | PASS | |
| Stable Task 30 필수 항목: **Step 3: | PASS | |
| Stable Task 30 필수 항목: **Step 4: | PASS | |
| Stable Task 30 필수 항목: **Step 5: | PASS | |
| Stable Task 30 필수 항목: Expected: | PASS | |
| Stable Task 30 필수 항목: git commit -m | PASS | |
| Stable Task 30 Gradle focused command | PASS | |
| Stable Task 30 exact path | PASS | |
| Stable Task 31 필수 항목: **Files:** | PASS | |
| Stable Task 31 필수 항목: **Interfaces:** | PASS | |
| Stable Task 31 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 31 필수 항목: **Step 1: | PASS | |
| Stable Task 31 필수 항목: **Step 2: | PASS | |
| Stable Task 31 필수 항목: **Step 3: | PASS | |
| Stable Task 31 필수 항목: **Step 4: | PASS | |
| Stable Task 31 필수 항목: **Step 5: | PASS | |
| Stable Task 31 필수 항목: Expected: | PASS | |
| Stable Task 31 필수 항목: git commit -m | PASS | |
| Stable Task 31 Gradle focused command | PASS | |
| Stable Task 31 exact path | PASS | |
| Stable Task 32 필수 항목: **Files:** | PASS | |
| Stable Task 32 필수 항목: **Interfaces:** | PASS | |
| Stable Task 32 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 32 필수 항목: **Step 1: | PASS | |
| Stable Task 32 필수 항목: **Step 2: | PASS | |
| Stable Task 32 필수 항목: **Step 3: | PASS | |
| Stable Task 32 필수 항목: **Step 4: | PASS | |
| Stable Task 32 필수 항목: **Step 5: | PASS | |
| Stable Task 32 필수 항목: Expected: | PASS | |
| Stable Task 32 필수 항목: git commit -m | PASS | |
| Stable Task 32 Gradle focused command | PASS | |
| Stable Task 32 exact path | PASS | |
| Stable Task 33 필수 항목: **Files:** | PASS | |
| Stable Task 33 필수 항목: **Interfaces:** | PASS | |
| Stable Task 33 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 33 필수 항목: **Step 1: | PASS | |
| Stable Task 33 필수 항목: **Step 2: | PASS | |
| Stable Task 33 필수 항목: **Step 3: | PASS | |
| Stable Task 33 필수 항목: **Step 4: | PASS | |
| Stable Task 33 필수 항목: **Step 5: | PASS | |
| Stable Task 33 필수 항목: Expected: | PASS | |
| Stable Task 33 필수 항목: git commit -m | PASS | |
| Stable Task 33 Gradle focused command | PASS | |
| Stable Task 33 exact path | PASS | |
| Stable Task 34 필수 항목: **Files:** | PASS | |
| Stable Task 34 필수 항목: **Interfaces:** | PASS | |
| Stable Task 34 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 34 필수 항목: **Step 1: | PASS | |
| Stable Task 34 필수 항목: **Step 2: | PASS | |
| Stable Task 34 필수 항목: **Step 3: | PASS | |
| Stable Task 34 필수 항목: **Step 4: | PASS | |
| Stable Task 34 필수 항목: **Step 5: | PASS | |
| Stable Task 34 필수 항목: Expected: | PASS | |
| Stable Task 34 필수 항목: git commit -m | PASS | |
| Stable Task 34 Gradle focused command | PASS | |
| Stable Task 34 exact path | PASS | |
| Stable Task 35 필수 항목: **Files:** | PASS | |
| Stable Task 35 필수 항목: **Interfaces:** | PASS | |
| Stable Task 35 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 35 필수 항목: **Step 1: | PASS | |
| Stable Task 35 필수 항목: **Step 2: | PASS | |
| Stable Task 35 필수 항목: **Step 3: | PASS | |
| Stable Task 35 필수 항목: **Step 4: | PASS | |
| Stable Task 35 필수 항목: **Step 5: | PASS | |
| Stable Task 35 필수 항목: Expected: | PASS | |
| Stable Task 35 필수 항목: git commit -m | PASS | |
| Stable Task 35 Gradle focused command | PASS | |
| Stable Task 35 exact path | PASS | |
| Stable Task 36 필수 항목: **Files:** | PASS | |
| Stable Task 36 필수 항목: **Interfaces:** | PASS | |
| Stable Task 36 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 36 필수 항목: **Step 1: | PASS | |
| Stable Task 36 필수 항목: **Step 2: | PASS | |
| Stable Task 36 필수 항목: **Step 3: | PASS | |
| Stable Task 36 필수 항목: **Step 4: | PASS | |
| Stable Task 36 필수 항목: **Step 5: | PASS | |
| Stable Task 36 필수 항목: Expected: | PASS | |
| Stable Task 36 필수 항목: git commit -m | PASS | |
| Stable Task 36 Gradle focused command | PASS | |
| Stable Task 36 exact path | PASS | |
| Stable Task 37 필수 항목: **Files:** | PASS | |
| Stable Task 37 필수 항목: **Interfaces:** | PASS | |
| Stable Task 37 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 37 필수 항목: **Step 1: | PASS | |
| Stable Task 37 필수 항목: **Step 2: | PASS | |
| Stable Task 37 필수 항목: **Step 3: | PASS | |
| Stable Task 37 필수 항목: **Step 4: | PASS | |
| Stable Task 37 필수 항목: **Step 5: | PASS | |
| Stable Task 37 필수 항목: Expected: | PASS | |
| Stable Task 37 필수 항목: git commit -m | PASS | |
| Stable Task 37 Gradle focused command | PASS | |
| Stable Task 37 exact path | PASS | |
| Stable Task 38 필수 항목: **Files:** | PASS | |
| Stable Task 38 필수 항목: **Interfaces:** | PASS | |
| Stable Task 38 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 38 필수 항목: **Step 1: | PASS | |
| Stable Task 38 필수 항목: **Step 2: | PASS | |
| Stable Task 38 필수 항목: **Step 3: | PASS | |
| Stable Task 38 필수 항목: **Step 4: | PASS | |
| Stable Task 38 필수 항목: **Step 5: | PASS | |
| Stable Task 38 필수 항목: Expected: | PASS | |
| Stable Task 38 필수 항목: git commit -m | PASS | |
| Stable Task 38 Gradle focused command | PASS | |
| Stable Task 38 exact path | PASS | |
| Stable Task 39 필수 항목: **Files:** | PASS | |
| Stable Task 39 필수 항목: **Interfaces:** | PASS | |
| Stable Task 39 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 39 필수 항목: **Step 1: | PASS | |
| Stable Task 39 필수 항목: **Step 2: | PASS | |
| Stable Task 39 필수 항목: **Step 3: | PASS | |
| Stable Task 39 필수 항목: **Step 4: | PASS | |
| Stable Task 39 필수 항목: **Step 5: | PASS | |
| Stable Task 39 필수 항목: Expected: | PASS | |
| Stable Task 39 필수 항목: git commit -m | PASS | |
| Stable Task 39 Gradle focused command | PASS | |
| Stable Task 39 exact path | PASS | |
| Stable Task 40 필수 항목: **Files:** | PASS | |
| Stable Task 40 필수 항목: **Interfaces:** | PASS | |
| Stable Task 40 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 40 필수 항목: **Step 1: | PASS | |
| Stable Task 40 필수 항목: **Step 2: | PASS | |
| Stable Task 40 필수 항목: **Step 3: | PASS | |
| Stable Task 40 필수 항목: **Step 4: | PASS | |
| Stable Task 40 필수 항목: **Step 5: | PASS | |
| Stable Task 40 필수 항목: Expected: | PASS | |
| Stable Task 40 필수 항목: git commit -m | PASS | |
| Stable Task 40 Gradle focused command | PASS | |
| Stable Task 40 exact path | PASS | |
| Stable Task 41 필수 항목: **Files:** | PASS | |
| Stable Task 41 필수 항목: **Interfaces:** | PASS | |
| Stable Task 41 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 41 필수 항목: **Step 1: | PASS | |
| Stable Task 41 필수 항목: **Step 2: | PASS | |
| Stable Task 41 필수 항목: **Step 3: | PASS | |
| Stable Task 41 필수 항목: **Step 4: | PASS | |
| Stable Task 41 필수 항목: **Step 5: | PASS | |
| Stable Task 41 필수 항목: Expected: | PASS | |
| Stable Task 41 필수 항목: git commit -m | PASS | |
| Stable Task 41 Gradle focused command | PASS | |
| Stable Task 41 exact path | PASS | |
| Stable Task 42 필수 항목: **Files:** | PASS | |
| Stable Task 42 필수 항목: **Interfaces:** | PASS | |
| Stable Task 42 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 42 필수 항목: **Step 1: | PASS | |
| Stable Task 42 필수 항목: **Step 2: | PASS | |
| Stable Task 42 필수 항목: **Step 3: | PASS | |
| Stable Task 42 필수 항목: **Step 4: | PASS | |
| Stable Task 42 필수 항목: **Step 5: | PASS | |
| Stable Task 42 필수 항목: Expected: | PASS | |
| Stable Task 42 필수 항목: git commit -m | PASS | |
| Stable Task 42 Gradle focused command | PASS | |
| Stable Task 42 exact path | PASS | |
| Stable Task 43 필수 항목: **Files:** | PASS | |
| Stable Task 43 필수 항목: **Interfaces:** | PASS | |
| Stable Task 43 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 43 필수 항목: **Step 1: | PASS | |
| Stable Task 43 필수 항목: **Step 2: | PASS | |
| Stable Task 43 필수 항목: **Step 3: | PASS | |
| Stable Task 43 필수 항목: **Step 4: | PASS | |
| Stable Task 43 필수 항목: **Step 5: | PASS | |
| Stable Task 43 필수 항목: Expected: | PASS | |
| Stable Task 43 필수 항목: git commit -m | PASS | |
| Stable Task 43 Gradle focused command | PASS | |
| Stable Task 43 exact path | PASS | |
| Stable Task 44 필수 항목: **Files:** | PASS | |
| Stable Task 44 필수 항목: **Interfaces:** | PASS | |
| Stable Task 44 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 44 필수 항목: **Step 1: | PASS | |
| Stable Task 44 필수 항목: **Step 2: | PASS | |
| Stable Task 44 필수 항목: **Step 3: | PASS | |
| Stable Task 44 필수 항목: **Step 4: | PASS | |
| Stable Task 44 필수 항목: **Step 5: | PASS | |
| Stable Task 44 필수 항목: Expected: | PASS | |
| Stable Task 44 필수 항목: git commit -m | PASS | |
| Stable Task 44 Gradle focused command | PASS | |
| Stable Task 44 exact path | PASS | |
| Stable Task 45 필수 항목: **Files:** | PASS | |
| Stable Task 45 필수 항목: **Interfaces:** | PASS | |
| Stable Task 45 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 45 필수 항목: **Step 1: | PASS | |
| Stable Task 45 필수 항목: **Step 2: | PASS | |
| Stable Task 45 필수 항목: **Step 3: | PASS | |
| Stable Task 45 필수 항목: **Step 4: | PASS | |
| Stable Task 45 필수 항목: **Step 5: | PASS | |
| Stable Task 45 필수 항목: Expected: | PASS | |
| Stable Task 45 필수 항목: git commit -m | PASS | |
| Stable Task 45 Gradle focused command | PASS | |
| Stable Task 45 exact path | PASS | |
| Stable Task 46 필수 항목: **Files:** | PASS | |
| Stable Task 46 필수 항목: **Interfaces:** | PASS | |
| Stable Task 46 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 46 필수 항목: **Step 1: | PASS | |
| Stable Task 46 필수 항목: **Step 2: | PASS | |
| Stable Task 46 필수 항목: **Step 3: | PASS | |
| Stable Task 46 필수 항목: **Step 4: | PASS | |
| Stable Task 46 필수 항목: **Step 5: | PASS | |
| Stable Task 46 필수 항목: Expected: | PASS | |
| Stable Task 46 필수 항목: git commit -m | PASS | |
| Stable Task 46 Gradle focused command | PASS | |
| Stable Task 46 exact path | PASS | |
| Stable Task 47 필수 항목: **Files:** | PASS | |
| Stable Task 47 필수 항목: **Interfaces:** | PASS | |
| Stable Task 47 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 47 필수 항목: **Step 1: | PASS | |
| Stable Task 47 필수 항목: **Step 2: | PASS | |
| Stable Task 47 필수 항목: **Step 3: | PASS | |
| Stable Task 47 필수 항목: **Step 4: | PASS | |
| Stable Task 47 필수 항목: **Step 5: | PASS | |
| Stable Task 47 필수 항목: Expected: | PASS | |
| Stable Task 47 필수 항목: git commit -m | PASS | |
| Stable Task 47 Gradle focused command | PASS | |
| Stable Task 47 exact path | PASS | |
| Stable Task 48 필수 항목: **Files:** | PASS | |
| Stable Task 48 필수 항목: **Interfaces:** | PASS | |
| Stable Task 48 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 48 필수 항목: **Step 1: | PASS | |
| Stable Task 48 필수 항목: **Step 2: | PASS | |
| Stable Task 48 필수 항목: **Step 3: | PASS | |
| Stable Task 48 필수 항목: **Step 4: | PASS | |
| Stable Task 48 필수 항목: **Step 5: | PASS | |
| Stable Task 48 필수 항목: Expected: | PASS | |
| Stable Task 48 필수 항목: git commit -m | PASS | |
| Stable Task 48 Gradle focused command | PASS | |
| Stable Task 48 exact path | PASS | |
| Stable Task 49 필수 항목: **Files:** | PASS | |
| Stable Task 49 필수 항목: **Interfaces:** | PASS | |
| Stable Task 49 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 49 필수 항목: **Step 1: | PASS | |
| Stable Task 49 필수 항목: **Step 2: | PASS | |
| Stable Task 49 필수 항목: **Step 3: | PASS | |
| Stable Task 49 필수 항목: **Step 4: | PASS | |
| Stable Task 49 필수 항목: **Step 5: | PASS | |
| Stable Task 49 필수 항목: Expected: | PASS | |
| Stable Task 49 필수 항목: git commit -m | PASS | |
| Stable Task 49 Gradle focused command | PASS | |
| Stable Task 49 exact path | PASS | |
| Stable Task 50 필수 항목: **Files:** | PASS | |
| Stable Task 50 필수 항목: **Interfaces:** | PASS | |
| Stable Task 50 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 50 필수 항목: **Step 1: | PASS | |
| Stable Task 50 필수 항목: **Step 2: | PASS | |
| Stable Task 50 필수 항목: **Step 3: | PASS | |
| Stable Task 50 필수 항목: **Step 4: | PASS | |
| Stable Task 50 필수 항목: **Step 5: | PASS | |
| Stable Task 50 필수 항목: Expected: | PASS | |
| Stable Task 50 필수 항목: git commit -m | PASS | |
| Stable Task 50 Gradle focused command | PASS | |
| Stable Task 50 exact path | PASS | |
| Stable Task 51 필수 항목: **Files:** | PASS | |
| Stable Task 51 필수 항목: **Interfaces:** | PASS | |
| Stable Task 51 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 51 필수 항목: **Step 1: | PASS | |
| Stable Task 51 필수 항목: **Step 2: | PASS | |
| Stable Task 51 필수 항목: **Step 3: | PASS | |
| Stable Task 51 필수 항목: **Step 4: | PASS | |
| Stable Task 51 필수 항목: **Step 5: | PASS | |
| Stable Task 51 필수 항목: Expected: | PASS | |
| Stable Task 51 필수 항목: git commit -m | PASS | |
| Stable Task 51 Gradle focused command | PASS | |
| Stable Task 51 exact path | PASS | |
| Stable Task 52 필수 항목: **Files:** | PASS | |
| Stable Task 52 필수 항목: **Interfaces:** | PASS | |
| Stable Task 52 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 52 필수 항목: **Step 1: | PASS | |
| Stable Task 52 필수 항목: **Step 2: | PASS | |
| Stable Task 52 필수 항목: **Step 3: | PASS | |
| Stable Task 52 필수 항목: **Step 4: | PASS | |
| Stable Task 52 필수 항목: **Step 5: | PASS | |
| Stable Task 52 필수 항목: Expected: | PASS | |
| Stable Task 52 필수 항목: git commit -m | PASS | |
| Stable Task 52 Gradle focused command | PASS | |
| Stable Task 52 exact path | PASS | |
| Stable Task 53 필수 항목: **Files:** | PASS | |
| Stable Task 53 필수 항목: **Interfaces:** | PASS | |
| Stable Task 53 필수 항목: **Implementation requirements:** | PASS | |
| Stable Task 53 필수 항목: **Step 1: | PASS | |
| Stable Task 53 필수 항목: **Step 2: | PASS | |
| Stable Task 53 필수 항목: **Step 3: | PASS | |
| Stable Task 53 필수 항목: **Step 4: | PASS | |
| Stable Task 53 필수 항목: **Step 5: | PASS | |
| Stable Task 53 필수 항목: Expected: | PASS | |
| Stable Task 53 필수 항목: git commit -m | PASS | |
| Stable Task 53 Gradle focused command | PASS | |
| Stable Task 53 exact path | PASS | |
| Experimental Task 1 필수 항목: **Files:** | PASS | |
| Experimental Task 1 필수 항목: **Interfaces:** | PASS | |
| Experimental Task 1 필수 항목: **Implementation requirements:** | PASS | |
| Experimental Task 1 필수 항목: **Step 1: | PASS | |
| Experimental Task 1 필수 항목: **Step 2: | PASS | |
| Experimental Task 1 필수 항목: **Step 3: | PASS | |
| Experimental Task 1 필수 항목: **Step 4: | PASS | |
| Experimental Task 1 필수 항목: **Step 5: | PASS | |
| Experimental Task 1 필수 항목: Expected: | PASS | |
| Experimental Task 1 필수 항목: git commit -m | PASS | |
| Experimental Task 1 Gradle focused command | PASS | |
| Experimental Task 1 exact path | PASS | |
| Experimental Task 2 필수 항목: **Files:** | PASS | |
| Experimental Task 2 필수 항목: **Interfaces:** | PASS | |
| Experimental Task 2 필수 항목: **Implementation requirements:** | PASS | |
| Experimental Task 2 필수 항목: **Step 1: | PASS | |
| Experimental Task 2 필수 항목: **Step 2: | PASS | |
| Experimental Task 2 필수 항목: **Step 3: | PASS | |
| Experimental Task 2 필수 항목: **Step 4: | PASS | |
| Experimental Task 2 필수 항목: **Step 5: | PASS | |
| Experimental Task 2 필수 항목: Expected: | PASS | |
| Experimental Task 2 필수 항목: git commit -m | PASS | |
| Experimental Task 2 Gradle focused command | PASS | |
| Experimental Task 2 exact path | PASS | |
| Experimental Task 3 필수 항목: **Files:** | PASS | |
| Experimental Task 3 필수 항목: **Interfaces:** | PASS | |
| Experimental Task 3 필수 항목: **Implementation requirements:** | PASS | |
| Experimental Task 3 필수 항목: **Step 1: | PASS | |
| Experimental Task 3 필수 항목: **Step 2: | PASS | |
| Experimental Task 3 필수 항목: **Step 3: | PASS | |
| Experimental Task 3 필수 항목: **Step 4: | PASS | |
| Experimental Task 3 필수 항목: **Step 5: | PASS | |
| Experimental Task 3 필수 항목: Expected: | PASS | |
| Experimental Task 3 필수 항목: git commit -m | PASS | |
| Experimental Task 3 Gradle focused command | PASS | |
| Experimental Task 3 exact path | PASS | |
| Experimental Task 4 필수 항목: **Files:** | PASS | |
| Experimental Task 4 필수 항목: **Interfaces:** | PASS | |
| Experimental Task 4 필수 항목: **Implementation requirements:** | PASS | |
| Experimental Task 4 필수 항목: **Step 1: | PASS | |
| Experimental Task 4 필수 항목: **Step 2: | PASS | |
| Experimental Task 4 필수 항목: **Step 3: | PASS | |
| Experimental Task 4 필수 항목: **Step 4: | PASS | |
| Experimental Task 4 필수 항목: **Step 5: | PASS | |
| Experimental Task 4 필수 항목: Expected: | PASS | |
| Experimental Task 4 필수 항목: git commit -m | PASS | |
| Experimental Task 4 Gradle focused command | PASS | |
| Experimental Task 4 exact path | PASS | |
| Experimental Task 5 필수 항목: **Files:** | PASS | |
| Experimental Task 5 필수 항목: **Interfaces:** | PASS | |
| Experimental Task 5 필수 항목: **Implementation requirements:** | PASS | |
| Experimental Task 5 필수 항목: **Step 1: | PASS | |
| Experimental Task 5 필수 항목: **Step 2: | PASS | |
| Experimental Task 5 필수 항목: **Step 3: | PASS | |
| Experimental Task 5 필수 항목: **Step 4: | PASS | |
| Experimental Task 5 필수 항목: **Step 5: | PASS | |
| Experimental Task 5 필수 항목: Expected: | PASS | |
| Experimental Task 5 필수 항목: git commit -m | PASS | |
| Experimental Task 5 Gradle focused command | PASS | |
| Experimental Task 5 exact path | PASS | |
| Experimental Task 6 필수 항목: **Files:** | PASS | |
| Experimental Task 6 필수 항목: **Interfaces:** | PASS | |
| Experimental Task 6 필수 항목: **Implementation requirements:** | PASS | |
| Experimental Task 6 필수 항목: **Step 1: | PASS | |
| Experimental Task 6 필수 항목: **Step 2: | PASS | |
| Experimental Task 6 필수 항목: **Step 3: | PASS | |
| Experimental Task 6 필수 항목: **Step 4: | PASS | |
| Experimental Task 6 필수 항목: **Step 5: | PASS | |
| Experimental Task 6 필수 항목: Expected: | PASS | |
| Experimental Task 6 필수 항목: git commit -m | PASS | |
| Experimental Task 6 Gradle focused command | PASS | |
| Experimental Task 6 exact path | PASS | |
| Experimental Task 7 필수 항목: **Files:** | PASS | |
| Experimental Task 7 필수 항목: **Interfaces:** | PASS | |
| Experimental Task 7 필수 항목: **Implementation requirements:** | PASS | |
| Experimental Task 7 필수 항목: **Step 1: | PASS | |
| Experimental Task 7 필수 항목: **Step 2: | PASS | |
| Experimental Task 7 필수 항목: **Step 3: | PASS | |
| Experimental Task 7 필수 항목: **Step 4: | PASS | |
| Experimental Task 7 필수 항목: **Step 5: | PASS | |
| Experimental Task 7 필수 항목: Expected: | PASS | |
| Experimental Task 7 필수 항목: git commit -m | PASS | |
| Experimental Task 7 Gradle focused command | PASS | |
| Experimental Task 7 exact path | PASS | |
| Experimental Task 8 필수 항목: **Files:** | PASS | |
| Experimental Task 8 필수 항목: **Interfaces:** | PASS | |
| Experimental Task 8 필수 항목: **Implementation requirements:** | PASS | |
| Experimental Task 8 필수 항목: **Step 1: | PASS | |
| Experimental Task 8 필수 항목: **Step 2: | PASS | |
| Experimental Task 8 필수 항목: **Step 3: | PASS | |
| Experimental Task 8 필수 항목: **Step 4: | PASS | |
| Experimental Task 8 필수 항목: **Step 5: | PASS | |
| Experimental Task 8 필수 항목: Expected: | PASS | |
| Experimental Task 8 필수 항목: git commit -m | PASS | |
| Experimental Task 8 Gradle focused command | PASS | |
| Experimental Task 8 exact path | PASS | |
| Experimental Task 9 필수 항목: **Files:** | PASS | |
| Experimental Task 9 필수 항목: **Interfaces:** | PASS | |
| Experimental Task 9 필수 항목: **Implementation requirements:** | PASS | |
| Experimental Task 9 필수 항목: **Step 1: | PASS | |
| Experimental Task 9 필수 항목: **Step 2: | PASS | |
| Experimental Task 9 필수 항목: **Step 3: | PASS | |
| Experimental Task 9 필수 항목: **Step 4: | PASS | |
| Experimental Task 9 필수 항목: **Step 5: | PASS | |
| Experimental Task 9 필수 항목: Expected: | PASS | |
| Experimental Task 9 필수 항목: git commit -m | PASS | |
| Experimental Task 9 Gradle focused command | PASS | |
| Experimental Task 9 exact path | PASS | |
| Stable Create 경로 중복 부재 | PASS | 235 |
| Experimental Create 경로 중복 부재 | PASS | 37 |
| Stable·Experimental Create 경로 충돌 부재 | PASS | set() |
| Experimental 계획은 Stable Task 1~53 이후 시작 | PASS | |
| 공통 타입 일관성: PersistenceOperationName | PASS | 21 |
| 공통 타입 일관성: TransactionProfile | PASS | 14 |
| 공통 타입 일관성: RetryProfile | PASS | 5 |
| 공통 타입 일관성: JpaTransactionExecutor | PASS | 14 |
| 공통 타입 일관성: JpaRetryPolicy | PASS | 7 |
| 공통 타입 일관성: RetryDecision | PASS | 8 |
| 공통 타입 일관성: JpaFailureContext | PASS | 11 |
| 공통 타입 일관성: QueryName | PASS | 22 |
| 공통 타입 일관성: KeysetPageRequest | PASS | 4 |
| 공통 타입 일관성: KeysetSlice | PASS | 7 |
| 공통 타입 일관성: TransactionCompletionUnknownException | PASS | 7 |
| 공통 타입 일관성: PostgreSqlWorkClaimExecutor | PASS | 2 |
| 공통 타입 일관성: FlywayValidationGate | PASS | 8 |
| 공통 타입 일관성: JpaPlatformEndpoint | PASS | 3 |
| Experimental Gradle 경로 정확성 | PASS | |
| Replica annotation-only routing 금지 | PASS | |
| RLS connection reuse 검증 | PASS | |
| Stable 승격 ADR gate | PASS | |
| 심층 리서치 원문 부록 포함 | PASS | |
@@ -0,0 +1,60 @@
> **보존 안내** — 이 파일은 저장소 루트 `messaging-superpowers-package/` 에 있던 납품 패키지의 README다.
> 2026-08-15 문서 정리에서 설계서·계획서는 `docs/superpowers/specs/` 와 `docs/superpowers/plans/` 로 통합했고,
> `validate_messaging_docs.py` 와 `MANIFEST.sha256` 은 제거했다.
> 아래 본문은 납품 시점의 기록이므로 제거된 파일을 가리키는 문장은 더 이상 유효하지 않다.
# Messaging Platform Superpowers Package
이 패키지는 `Java/Spring Messaging 플랫폼 심층 리서치`를 구현 기준으로 변환한 설계서와 구현 계획서다.
## 포함 파일
```text
docs/superpowers/specs/2026-08-10-messaging-platform-design.md
docs/superpowers/plans/2026-08-10-messaging-platform-implementation-plan.md
VALIDATION.md
validate_messaging_docs.py
MANIFEST.sha256
```
## 설계 경계
- 자체 `messaging-core`가 공개 계약을 소유한다.
- Kafka 4.2+/4.3.x와 RabbitMQ 4.3.x는 Stable Adapter다.
- Kafka Share Group, Pulsar 4.0 LTS·4.2, NATS JetStream 2.14.x는 Experimental Adapter다.
- 공통 `EXACTLY_ONCE` 또는 전역 순서 옵션을 제공하지 않는다.
- publish 결과는 `CONFIRMED`, `REJECTED`, `AMBIGUOUS`와 broker evidence로 표현한다.
- M1 Typed, M2 Advanced, M3 Native Capability, M4 Admin Plane을 분리한다.
- retry·DLQ·redrive에서 logical `messageId`를 유지한다.
- DLQ publish 확인 전에 source message를 settlement하지 않는다.
- Transactional Outbox, Inbox, Idempotent Consumer, Claim Check를 Reliability 모듈로 분리한다.
## 구현 가정
실제 Backend Skeleton 저장소가 입력에 포함되지 않았기 때문에 계획은 다음 기준을 사용한다.
- Java 21
- Gradle Kotlin DSL
- root package: `io.backend.skeleton.messaging`
- module root: `modules/messaging`
- PostgreSQL 16, Flyway, Spring JDBC/JPA
- JUnit 5, AssertJ, ArchUnit, Testcontainers, Toxiproxy
- Spring Framework 6.2 공통 호환선과 Spring 7.0 호환성 job
실제 저장소 구조가 다르면 파일 경로와 dependency catalog만 매핑한다. 공개 계약, 모듈 의존 방향, 신뢰성 상태 모델과 검증 기준은 그대로 유지한다.
## 문서 검증
패키지 루트에서 다음 명령을 실행한다.
```bash
./validate_messaging_docs.py \
docs/superpowers/specs/2026-08-10-messaging-platform-design.md \
docs/superpowers/plans/2026-08-10-messaging-platform-implementation-plan.md
```
`VALIDATION.md`는 문서 구조, Task 1~44 연속성, TDD 단계, 필수 설계 계약, placeholder, 중복 파일 경로를 확인한 정적 검증 결과다.
## 검증 한계
현재 검증은 설계·계획 문서에 대한 정적 검증이다. 실제 저장소가 제공되지 않아 Gradle compile, broker 통합 테스트, chaos test, 성능 인증은 실행하지 않았다. 구현 계획의 각 Task가 해당 실행 검증을 추가하도록 구성되어 있다.
@@ -0,0 +1,432 @@
# Messaging Superpowers 문서 정적 검증
- 설계서: `messaging-platform-design.md` — 2,608행, 74,649 bytes
- 계획서: `messaging-platform-implementation-plan.md` — 5,056행, 200,320 bytes
- Task 수: 44
- Create 경로 수: 356
- 검증 항목 수: 422
## 결과: PASS
- PASS: 설계서가 2,000행 이상이다
- PASS: 구현 계획서가 4,000행 이상이다
- PASS: 설계서 Markdown 코드 블록이 균형을 이룬다
- PASS: 계획서 Markdown 코드 블록이 균형을 이룬다
- PASS: 설계서에 unresolved todo marker가 없다
- PASS: 계획서에 unresolved todo marker가 없다
- PASS: 설계서에 unresolved tbd marker가 없다
- PASS: 계획서에 unresolved tbd marker가 없다
- PASS: 설계서에 unresolved fix marker가 없다
- PASS: 계획서에 unresolved fix marker가 없다
- PASS: 설계서에 placeholder ADR number가 없다
- PASS: 계획서에 placeholder ADR number가 없다
- PASS: 설계서에 wildcard build path가 없다
- PASS: 계획서에 wildcard build path가 없다
- PASS: 설계서에 deferred implementation phrase가 없다
- PASS: 계획서에 deferred implementation phrase가 없다
- PASS: 설계서가 필수 항목 'M1 Typed Messaging API'을 포함한다
- PASS: 설계서가 필수 항목 'M2 Advanced API'을 포함한다
- PASS: 설계서가 필수 항목 'M3 Native Capability'을 포함한다
- PASS: 설계서가 필수 항목 'M4 Admin Plane'을 포함한다
- PASS: 설계서가 필수 항목 'PublishCompletion'을 포함한다
- PASS: 설계서가 필수 항목 'AMBIGUOUS'을 포함한다
- PASS: 설계서가 필수 항목 'MessageEnvelope'을 포함한다
- PASS: 설계서가 필수 항목 'DeliveryGuarantee'을 포함한다
- PASS: 설계서가 필수 항목 'OrderingScope'을 포함한다
- PASS: 설계서가 필수 항목 'Retry Policy Engine'을 포함한다
- PASS: 설계서가 필수 항목 'DLQ·Parking·Redrive'을 포함한다
- PASS: 설계서가 필수 항목 'Kafka Stable Adapter'을 포함한다
- PASS: 설계서가 필수 항목 'RabbitMQ Stable Adapter'을 포함한다
- PASS: 설계서가 필수 항목 'Transactional Outbox'을 포함한다
- PASS: 설계서가 필수 항목 'Inbox와 Idempotent Consumer'을 포함한다
- PASS: 설계서가 필수 항목 'Claim Check'을 포함한다
- PASS: 설계서가 필수 항목 'Pulsar Experimental Adapter'을 포함한다
- PASS: 설계서가 필수 항목 'NATS JetStream Experimental Adapter'을 포함한다
- PASS: 설계서가 필수 항목 'Spring Cloud Stream Bridge'을 포함한다
- PASS: 설계서가 필수 항목 'Security'을 포함한다
- PASS: 설계서가 필수 항목 'Observability'을 포함한다
- PASS: 설계서가 필수 항목 '호환성 인증 매트릭스'을 포함한다
- PASS: 설계서가 필수 항목 '비지원 범위'을 포함한다
- PASS: 설계서가 필수 항목 '완료 정의'을 포함한다
- PASS: 공통 DeliveryGuarantee가 두 가지 보장만 선언한다
- PASS: 공통 DeliveryGuarantee enum에 EXACTLY_ONCE를 선언하지 않는다
- PASS: 공통 OrderingScope enum에 GLOBAL을 선언하지 않는다
- PASS: DLQ confirm 후 source settlement 순서를 명시한다
- PASS: retry와 reliability에서 동일 message ID를 유지한다
- PASS: Task 번호가 1부터 44까지 연속이다
- PASS: Task 1가 '**Files:**'을 포함한다
- PASS: Task 1가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 2가 '**Files:**'을 포함한다
- PASS: Task 2가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 3가 '**Files:**'을 포함한다
- PASS: Task 3가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 4가 '**Files:**'을 포함한다
- PASS: Task 4가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 5가 '**Files:**'을 포함한다
- PASS: Task 5가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 6가 '**Files:**'을 포함한다
- PASS: Task 6가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 7가 '**Files:**'을 포함한다
- PASS: Task 7가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 8가 '**Files:**'을 포함한다
- PASS: Task 8가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 9가 '**Files:**'을 포함한다
- PASS: Task 9가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 10가 '**Files:**'을 포함한다
- PASS: Task 10가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 11가 '**Files:**'을 포함한다
- PASS: Task 11가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 12가 '**Files:**'을 포함한다
- PASS: Task 12가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 13가 '**Files:**'을 포함한다
- PASS: Task 13가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 14가 '**Files:**'을 포함한다
- PASS: Task 14가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 15가 '**Files:**'을 포함한다
- PASS: Task 15가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 16가 '**Files:**'을 포함한다
- PASS: Task 16가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 17가 '**Files:**'을 포함한다
- PASS: Task 17가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 18가 '**Files:**'을 포함한다
- PASS: Task 18가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 19가 '**Files:**'을 포함한다
- PASS: Task 19가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 20가 '**Files:**'을 포함한다
- PASS: Task 20가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 21가 '**Files:**'을 포함한다
- PASS: Task 21가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 22가 '**Files:**'을 포함한다
- PASS: Task 22가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 23가 '**Files:**'을 포함한다
- PASS: Task 23가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 24가 '**Files:**'을 포함한다
- PASS: Task 24가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 25가 '**Files:**'을 포함한다
- PASS: Task 25가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 26가 '**Files:**'을 포함한다
- PASS: Task 26가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 27가 '**Files:**'을 포함한다
- PASS: Task 27가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 28가 '**Files:**'을 포함한다
- PASS: Task 28가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 29가 '**Files:**'을 포함한다
- PASS: Task 29가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 30가 '**Files:**'을 포함한다
- PASS: Task 30가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 31가 '**Files:**'을 포함한다
- PASS: Task 31가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 32가 '**Files:**'을 포함한다
- PASS: Task 32가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 33가 '**Files:**'을 포함한다
- PASS: Task 33가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 34가 '**Files:**'을 포함한다
- PASS: Task 34가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 35가 '**Files:**'을 포함한다
- PASS: Task 35가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 36가 '**Files:**'을 포함한다
- PASS: Task 36가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 37가 '**Files:**'을 포함한다
- PASS: Task 37가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 38가 '**Files:**'을 포함한다
- PASS: Task 38가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 39가 '**Files:**'을 포함한다
- PASS: Task 39가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 40가 '**Files:**'을 포함한다
- PASS: Task 40가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 41가 '**Files:**'을 포함한다
- PASS: Task 41가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 42가 '**Files:**'을 포함한다
- PASS: Task 42가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 43가 '**Files:**'을 포함한다
- PASS: Task 43가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: Task 44가 '**Files:**'을 포함한다
- PASS: Task 44가 '**Interfaces:**'을 포함한다
- 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가 'git commit -m'을 포함한다
- PASS: 중복된 Create 파일 경로가 없다
- PASS: Create 파일 경로에 wildcard가 없다
- PASS: 계획서가 필수 작업 'Kafka Producer Adapter와 Publish Evidence'을 포함한다
- PASS: 계획서가 필수 작업 'Kafka Consumer Group, Partition Coordinator'을 포함한다
- PASS: 계획서가 필수 작업 'Kafka Native Transaction Capability'을 포함한다
- PASS: 계획서가 필수 작업 'Kafka Share Group Experimental Adapter'을 포함한다
- PASS: 계획서가 필수 작업 'Rabbit Publisher Confirm·Return Evidence Adapter'을 포함한다
- PASS: 계획서가 필수 작업 'Rabbit Consumer Manual ACK'을 포함한다
- PASS: 계획서가 필수 작업 'Transactional Outbox Repository'을 포함한다
- PASS: 계획서가 필수 작업 'Inbox Transactional Idempotent Consumer'을 포함한다
- PASS: 계획서가 필수 작업 'Debezium Outbox Event Router'을 포함한다
- PASS: 계획서가 필수 작업 'Pulsar Experimental Adapter'을 포함한다
- PASS: 계획서가 필수 작업 'NATS JetStream Experimental Adapter'을 포함한다
- PASS: 계획서가 필수 작업 'Spring Cloud Stream Optional Bridge'을 포함한다
- PASS: 계획서가 필수 작업 'Global Backpressure'을 포함한다
- PASS: 계획서가 필수 작업 'Cross-broker 장애·보안·Reliability Contract Suite'을 포함한다
- PASS: 계획서가 필수 작업 '성능 인증, Compatibility Matrix'을 포함한다
- PASS: 계획서가 필수 작업 '지원 문서, Runbook, ADR, Release Gate'을 포함한다
- PASS: 계획서가 message identity 보존을 명시한다
- PASS: 계획서가 DLQ 실패 시 source ACK 금지를 명시한다
- PASS: 계획서가 credential 분리를 명시한다
- PASS: Stable chaos aggregate task가 계획에 존재한다
- PASS: performance aggregate task가 계획에 존재한다
- PASS: compatibility aggregate task가 계획에 존재한다
@@ -0,0 +1,47 @@
> **보존 안내** — 이 파일은 저장소 루트 `mongodb-superpowers-package/` 에 있던 납품 패키지의 README다.
> 2026-08-15 문서 정리에서 설계서·계획서는 `docs/superpowers/specs/` 와 `docs/superpowers/plans/` 로 통합했고,
> `validate_mongodb_docs.py` 와 `MANIFEST.sha256` 은 제거했다.
> 아래 본문은 납품 시점의 기록이므로 제거된 파일을 가리키는 문장은 더 이상 유효하지 않다.
# MongoDB Superpowers 문서 패키지
이 패키지는 첨부된 `MongoDB 문서 영속성 플랫폼 심층 리서치`를 요구사항 원본으로 사용해 작성한 설계서와 구현 계획서다.
## 파일
```text
docs/superpowers/specs/2026-08-11-mongodb-document-persistence-platform-design.md
docs/superpowers/plans/2026-08-11-mongodb-document-persistence-platform-implementation-plan.md
docs/superpowers/plans/2026-08-11-mongodb-advanced-capabilities-expansion-plan.md
VALIDATION.md
validate_mongodb_docs.py
MANIFEST.sha256
```
## 적용 가정
```text
Java 21
Gradle Kotlin DSL
Spring Boot 4.1 BOM
Spring Data MongoDB 5.1
Boot-managed MongoDB Java Driver
MongoDB 8.0 primary certification
MongoDB 7.0 compatibility
root package: io.backend.skeleton.mongodb
stable modules: modules/mongodb
advanced modules: modules/mongodb-advanced
```
실제 Backend Skeleton 저장소 구조가 입력에 포함되지 않았으므로 파일 경로는 위 가정에 따라 확정했다. 적용 시 기존 version catalog와 공통 build logic에 경로만 매핑하고 공개 계약과 신뢰성 의미론은 유지한다.
## 실행 순서
```text
Stable Implementation Plan Task 1~50
→ Stable Release Gate
→ Advanced Plan Task 1~15
→ capability별 Promotion Gate
```
Stable 구현 전에 Advanced 모듈을 Starter에 추가하지 않는다.
@@ -0,0 +1,737 @@
# MongoDB Superpowers 문서 정적 검증 결과
## 결과
```text
SUMMARY | total=687 pass=687 fail=0
```
| 항목 | 값 |
|---|---:|
| 설계서 행 수 | 1303 |
| Stable 구현 계획서 행 수 | 3943 |
| Advanced 구현 계획서 행 수 | 1139 |
| Stable Task | 50 |
| Advanced Task | 15 |
| Stable Create 경로 | 252 |
| Advanced Create 경로 | 77 |
## 검증 범위
```text
설계 핵심 결정 존재
Task 번호 연속성
모든 Task의 Files·Interfaces·Implementation requirements
모든 Task의 Step 1~5
Task별 실패·통과 예상 결과와 Commit
Create 경로 중복·충돌
Markdown code fence 균형
TODO·TBD·FIXME 부재
범용 Mongo Repository 실제 선언 부재
Runtime arbitrary runCommand public API 부재
Stable API V1 strict와 Replica Set 기준
Transaction body retry와 commit retry 분리
Change Stream at-least-once 계약
TTL cleanup-only 계약
GridFS compatibility-only 계약
Stable·Advanced dependency 격리
MongoDB 7.0·8.0 호환 Matrix
Advanced actual topology promotion gate
```
## 전체 검사 로그
```text
PASS | design exists
PASS | stable plan exists
PASS | advanced plan exists
PASS | design purpose
PASS | domain ownership
PASS | no generic repository design
PASS | stable api strict
PASS | local replica set
PASS | standalone smoke only
PASS | bson manifest
PASS | transaction retry separation
PASS | change stream at least once
PASS | ttl cleanup only
PASS | gridfs compatibility only
PASS | driver native observability
PASS | stable task count | 50
PASS | stable task sequence | [1, 2, 3]...[48, 49, 50]
PASS | stable task 1 has **Files:**
PASS | stable task 1 has **Interfaces:**
PASS | stable task 1 has **Implementation requirements:**
PASS | stable task 1 has **Step 1:
PASS | stable task 1 has **Step 2:
PASS | stable task 1 has **Step 3:
PASS | stable task 1 has **Step 4:
PASS | stable task 1 has **Step 5:
PASS | stable task 1 has commit
PASS | stable task 1 has expected result
PASS | stable task 2 has **Files:**
PASS | stable task 2 has **Interfaces:**
PASS | stable task 2 has **Implementation requirements:**
PASS | stable task 2 has **Step 1:
PASS | stable task 2 has **Step 2:
PASS | stable task 2 has **Step 3:
PASS | stable task 2 has **Step 4:
PASS | stable task 2 has **Step 5:
PASS | stable task 2 has commit
PASS | stable task 2 has expected result
PASS | stable task 3 has **Files:**
PASS | stable task 3 has **Interfaces:**
PASS | stable task 3 has **Implementation requirements:**
PASS | stable task 3 has **Step 1:
PASS | stable task 3 has **Step 2:
PASS | stable task 3 has **Step 3:
PASS | stable task 3 has **Step 4:
PASS | stable task 3 has **Step 5:
PASS | stable task 3 has commit
PASS | stable task 3 has expected result
PASS | stable task 4 has **Files:**
PASS | stable task 4 has **Interfaces:**
PASS | stable task 4 has **Implementation requirements:**
PASS | stable task 4 has **Step 1:
PASS | stable task 4 has **Step 2:
PASS | stable task 4 has **Step 3:
PASS | stable task 4 has **Step 4:
PASS | stable task 4 has **Step 5:
PASS | stable task 4 has commit
PASS | stable task 4 has expected result
PASS | stable task 5 has **Files:**
PASS | stable task 5 has **Interfaces:**
PASS | stable task 5 has **Implementation requirements:**
PASS | stable task 5 has **Step 1:
PASS | stable task 5 has **Step 2:
PASS | stable task 5 has **Step 3:
PASS | stable task 5 has **Step 4:
PASS | stable task 5 has **Step 5:
PASS | stable task 5 has commit
PASS | stable task 5 has expected result
PASS | stable task 6 has **Files:**
PASS | stable task 6 has **Interfaces:**
PASS | stable task 6 has **Implementation requirements:**
PASS | stable task 6 has **Step 1:
PASS | stable task 6 has **Step 2:
PASS | stable task 6 has **Step 3:
PASS | stable task 6 has **Step 4:
PASS | stable task 6 has **Step 5:
PASS | stable task 6 has commit
PASS | stable task 6 has expected result
PASS | stable task 7 has **Files:**
PASS | stable task 7 has **Interfaces:**
PASS | stable task 7 has **Implementation requirements:**
PASS | stable task 7 has **Step 1:
PASS | stable task 7 has **Step 2:
PASS | stable task 7 has **Step 3:
PASS | stable task 7 has **Step 4:
PASS | stable task 7 has **Step 5:
PASS | stable task 7 has commit
PASS | stable task 7 has expected result
PASS | stable task 8 has **Files:**
PASS | stable task 8 has **Interfaces:**
PASS | stable task 8 has **Implementation requirements:**
PASS | stable task 8 has **Step 1:
PASS | stable task 8 has **Step 2:
PASS | stable task 8 has **Step 3:
PASS | stable task 8 has **Step 4:
PASS | stable task 8 has **Step 5:
PASS | stable task 8 has commit
PASS | stable task 8 has expected result
PASS | stable task 9 has **Files:**
PASS | stable task 9 has **Interfaces:**
PASS | stable task 9 has **Implementation requirements:**
PASS | stable task 9 has **Step 1:
PASS | stable task 9 has **Step 2:
PASS | stable task 9 has **Step 3:
PASS | stable task 9 has **Step 4:
PASS | stable task 9 has **Step 5:
PASS | stable task 9 has commit
PASS | stable task 9 has expected result
PASS | stable task 10 has **Files:**
PASS | stable task 10 has **Interfaces:**
PASS | stable task 10 has **Implementation requirements:**
PASS | stable task 10 has **Step 1:
PASS | stable task 10 has **Step 2:
PASS | stable task 10 has **Step 3:
PASS | stable task 10 has **Step 4:
PASS | stable task 10 has **Step 5:
PASS | stable task 10 has commit
PASS | stable task 10 has expected result
PASS | stable task 11 has **Files:**
PASS | stable task 11 has **Interfaces:**
PASS | stable task 11 has **Implementation requirements:**
PASS | stable task 11 has **Step 1:
PASS | stable task 11 has **Step 2:
PASS | stable task 11 has **Step 3:
PASS | stable task 11 has **Step 4:
PASS | stable task 11 has **Step 5:
PASS | stable task 11 has commit
PASS | stable task 11 has expected result
PASS | stable task 12 has **Files:**
PASS | stable task 12 has **Interfaces:**
PASS | stable task 12 has **Implementation requirements:**
PASS | stable task 12 has **Step 1:
PASS | stable task 12 has **Step 2:
PASS | stable task 12 has **Step 3:
PASS | stable task 12 has **Step 4:
PASS | stable task 12 has **Step 5:
PASS | stable task 12 has commit
PASS | stable task 12 has expected result
PASS | stable task 13 has **Files:**
PASS | stable task 13 has **Interfaces:**
PASS | stable task 13 has **Implementation requirements:**
PASS | stable task 13 has **Step 1:
PASS | stable task 13 has **Step 2:
PASS | stable task 13 has **Step 3:
PASS | stable task 13 has **Step 4:
PASS | stable task 13 has **Step 5:
PASS | stable task 13 has commit
PASS | stable task 13 has expected result
PASS | stable task 14 has **Files:**
PASS | stable task 14 has **Interfaces:**
PASS | stable task 14 has **Implementation requirements:**
PASS | stable task 14 has **Step 1:
PASS | stable task 14 has **Step 2:
PASS | stable task 14 has **Step 3:
PASS | stable task 14 has **Step 4:
PASS | stable task 14 has **Step 5:
PASS | stable task 14 has commit
PASS | stable task 14 has expected result
PASS | stable task 15 has **Files:**
PASS | stable task 15 has **Interfaces:**
PASS | stable task 15 has **Implementation requirements:**
PASS | stable task 15 has **Step 1:
PASS | stable task 15 has **Step 2:
PASS | stable task 15 has **Step 3:
PASS | stable task 15 has **Step 4:
PASS | stable task 15 has **Step 5:
PASS | stable task 15 has commit
PASS | stable task 15 has expected result
PASS | stable task 16 has **Files:**
PASS | stable task 16 has **Interfaces:**
PASS | stable task 16 has **Implementation requirements:**
PASS | stable task 16 has **Step 1:
PASS | stable task 16 has **Step 2:
PASS | stable task 16 has **Step 3:
PASS | stable task 16 has **Step 4:
PASS | stable task 16 has **Step 5:
PASS | stable task 16 has commit
PASS | stable task 16 has expected result
PASS | stable task 17 has **Files:**
PASS | stable task 17 has **Interfaces:**
PASS | stable task 17 has **Implementation requirements:**
PASS | stable task 17 has **Step 1:
PASS | stable task 17 has **Step 2:
PASS | stable task 17 has **Step 3:
PASS | stable task 17 has **Step 4:
PASS | stable task 17 has **Step 5:
PASS | stable task 17 has commit
PASS | stable task 17 has expected result
PASS | stable task 18 has **Files:**
PASS | stable task 18 has **Interfaces:**
PASS | stable task 18 has **Implementation requirements:**
PASS | stable task 18 has **Step 1:
PASS | stable task 18 has **Step 2:
PASS | stable task 18 has **Step 3:
PASS | stable task 18 has **Step 4:
PASS | stable task 18 has **Step 5:
PASS | stable task 18 has commit
PASS | stable task 18 has expected result
PASS | stable task 19 has **Files:**
PASS | stable task 19 has **Interfaces:**
PASS | stable task 19 has **Implementation requirements:**
PASS | stable task 19 has **Step 1:
PASS | stable task 19 has **Step 2:
PASS | stable task 19 has **Step 3:
PASS | stable task 19 has **Step 4:
PASS | stable task 19 has **Step 5:
PASS | stable task 19 has commit
PASS | stable task 19 has expected result
PASS | stable task 20 has **Files:**
PASS | stable task 20 has **Interfaces:**
PASS | stable task 20 has **Implementation requirements:**
PASS | stable task 20 has **Step 1:
PASS | stable task 20 has **Step 2:
PASS | stable task 20 has **Step 3:
PASS | stable task 20 has **Step 4:
PASS | stable task 20 has **Step 5:
PASS | stable task 20 has commit
PASS | stable task 20 has expected result
PASS | stable task 21 has **Files:**
PASS | stable task 21 has **Interfaces:**
PASS | stable task 21 has **Implementation requirements:**
PASS | stable task 21 has **Step 1:
PASS | stable task 21 has **Step 2:
PASS | stable task 21 has **Step 3:
PASS | stable task 21 has **Step 4:
PASS | stable task 21 has **Step 5:
PASS | stable task 21 has commit
PASS | stable task 21 has expected result
PASS | stable task 22 has **Files:**
PASS | stable task 22 has **Interfaces:**
PASS | stable task 22 has **Implementation requirements:**
PASS | stable task 22 has **Step 1:
PASS | stable task 22 has **Step 2:
PASS | stable task 22 has **Step 3:
PASS | stable task 22 has **Step 4:
PASS | stable task 22 has **Step 5:
PASS | stable task 22 has commit
PASS | stable task 22 has expected result
PASS | stable task 23 has **Files:**
PASS | stable task 23 has **Interfaces:**
PASS | stable task 23 has **Implementation requirements:**
PASS | stable task 23 has **Step 1:
PASS | stable task 23 has **Step 2:
PASS | stable task 23 has **Step 3:
PASS | stable task 23 has **Step 4:
PASS | stable task 23 has **Step 5:
PASS | stable task 23 has commit
PASS | stable task 23 has expected result
PASS | stable task 24 has **Files:**
PASS | stable task 24 has **Interfaces:**
PASS | stable task 24 has **Implementation requirements:**
PASS | stable task 24 has **Step 1:
PASS | stable task 24 has **Step 2:
PASS | stable task 24 has **Step 3:
PASS | stable task 24 has **Step 4:
PASS | stable task 24 has **Step 5:
PASS | stable task 24 has commit
PASS | stable task 24 has expected result
PASS | stable task 25 has **Files:**
PASS | stable task 25 has **Interfaces:**
PASS | stable task 25 has **Implementation requirements:**
PASS | stable task 25 has **Step 1:
PASS | stable task 25 has **Step 2:
PASS | stable task 25 has **Step 3:
PASS | stable task 25 has **Step 4:
PASS | stable task 25 has **Step 5:
PASS | stable task 25 has commit
PASS | stable task 25 has expected result
PASS | stable task 26 has **Files:**
PASS | stable task 26 has **Interfaces:**
PASS | stable task 26 has **Implementation requirements:**
PASS | stable task 26 has **Step 1:
PASS | stable task 26 has **Step 2:
PASS | stable task 26 has **Step 3:
PASS | stable task 26 has **Step 4:
PASS | stable task 26 has **Step 5:
PASS | stable task 26 has commit
PASS | stable task 26 has expected result
PASS | stable task 27 has **Files:**
PASS | stable task 27 has **Interfaces:**
PASS | stable task 27 has **Implementation requirements:**
PASS | stable task 27 has **Step 1:
PASS | stable task 27 has **Step 2:
PASS | stable task 27 has **Step 3:
PASS | stable task 27 has **Step 4:
PASS | stable task 27 has **Step 5:
PASS | stable task 27 has commit
PASS | stable task 27 has expected result
PASS | stable task 28 has **Files:**
PASS | stable task 28 has **Interfaces:**
PASS | stable task 28 has **Implementation requirements:**
PASS | stable task 28 has **Step 1:
PASS | stable task 28 has **Step 2:
PASS | stable task 28 has **Step 3:
PASS | stable task 28 has **Step 4:
PASS | stable task 28 has **Step 5:
PASS | stable task 28 has commit
PASS | stable task 28 has expected result
PASS | stable task 29 has **Files:**
PASS | stable task 29 has **Interfaces:**
PASS | stable task 29 has **Implementation requirements:**
PASS | stable task 29 has **Step 1:
PASS | stable task 29 has **Step 2:
PASS | stable task 29 has **Step 3:
PASS | stable task 29 has **Step 4:
PASS | stable task 29 has **Step 5:
PASS | stable task 29 has commit
PASS | stable task 29 has expected result
PASS | stable task 30 has **Files:**
PASS | stable task 30 has **Interfaces:**
PASS | stable task 30 has **Implementation requirements:**
PASS | stable task 30 has **Step 1:
PASS | stable task 30 has **Step 2:
PASS | stable task 30 has **Step 3:
PASS | stable task 30 has **Step 4:
PASS | stable task 30 has **Step 5:
PASS | stable task 30 has commit
PASS | stable task 30 has expected result
PASS | stable task 31 has **Files:**
PASS | stable task 31 has **Interfaces:**
PASS | stable task 31 has **Implementation requirements:**
PASS | stable task 31 has **Step 1:
PASS | stable task 31 has **Step 2:
PASS | stable task 31 has **Step 3:
PASS | stable task 31 has **Step 4:
PASS | stable task 31 has **Step 5:
PASS | stable task 31 has commit
PASS | stable task 31 has expected result
PASS | stable task 32 has **Files:**
PASS | stable task 32 has **Interfaces:**
PASS | stable task 32 has **Implementation requirements:**
PASS | stable task 32 has **Step 1:
PASS | stable task 32 has **Step 2:
PASS | stable task 32 has **Step 3:
PASS | stable task 32 has **Step 4:
PASS | stable task 32 has **Step 5:
PASS | stable task 32 has commit
PASS | stable task 32 has expected result
PASS | stable task 33 has **Files:**
PASS | stable task 33 has **Interfaces:**
PASS | stable task 33 has **Implementation requirements:**
PASS | stable task 33 has **Step 1:
PASS | stable task 33 has **Step 2:
PASS | stable task 33 has **Step 3:
PASS | stable task 33 has **Step 4:
PASS | stable task 33 has **Step 5:
PASS | stable task 33 has commit
PASS | stable task 33 has expected result
PASS | stable task 34 has **Files:**
PASS | stable task 34 has **Interfaces:**
PASS | stable task 34 has **Implementation requirements:**
PASS | stable task 34 has **Step 1:
PASS | stable task 34 has **Step 2:
PASS | stable task 34 has **Step 3:
PASS | stable task 34 has **Step 4:
PASS | stable task 34 has **Step 5:
PASS | stable task 34 has commit
PASS | stable task 34 has expected result
PASS | stable task 35 has **Files:**
PASS | stable task 35 has **Interfaces:**
PASS | stable task 35 has **Implementation requirements:**
PASS | stable task 35 has **Step 1:
PASS | stable task 35 has **Step 2:
PASS | stable task 35 has **Step 3:
PASS | stable task 35 has **Step 4:
PASS | stable task 35 has **Step 5:
PASS | stable task 35 has commit
PASS | stable task 35 has expected result
PASS | stable task 36 has **Files:**
PASS | stable task 36 has **Interfaces:**
PASS | stable task 36 has **Implementation requirements:**
PASS | stable task 36 has **Step 1:
PASS | stable task 36 has **Step 2:
PASS | stable task 36 has **Step 3:
PASS | stable task 36 has **Step 4:
PASS | stable task 36 has **Step 5:
PASS | stable task 36 has commit
PASS | stable task 36 has expected result
PASS | stable task 37 has **Files:**
PASS | stable task 37 has **Interfaces:**
PASS | stable task 37 has **Implementation requirements:**
PASS | stable task 37 has **Step 1:
PASS | stable task 37 has **Step 2:
PASS | stable task 37 has **Step 3:
PASS | stable task 37 has **Step 4:
PASS | stable task 37 has **Step 5:
PASS | stable task 37 has commit
PASS | stable task 37 has expected result
PASS | stable task 38 has **Files:**
PASS | stable task 38 has **Interfaces:**
PASS | stable task 38 has **Implementation requirements:**
PASS | stable task 38 has **Step 1:
PASS | stable task 38 has **Step 2:
PASS | stable task 38 has **Step 3:
PASS | stable task 38 has **Step 4:
PASS | stable task 38 has **Step 5:
PASS | stable task 38 has commit
PASS | stable task 38 has expected result
PASS | stable task 39 has **Files:**
PASS | stable task 39 has **Interfaces:**
PASS | stable task 39 has **Implementation requirements:**
PASS | stable task 39 has **Step 1:
PASS | stable task 39 has **Step 2:
PASS | stable task 39 has **Step 3:
PASS | stable task 39 has **Step 4:
PASS | stable task 39 has **Step 5:
PASS | stable task 39 has commit
PASS | stable task 39 has expected result
PASS | stable task 40 has **Files:**
PASS | stable task 40 has **Interfaces:**
PASS | stable task 40 has **Implementation requirements:**
PASS | stable task 40 has **Step 1:
PASS | stable task 40 has **Step 2:
PASS | stable task 40 has **Step 3:
PASS | stable task 40 has **Step 4:
PASS | stable task 40 has **Step 5:
PASS | stable task 40 has commit
PASS | stable task 40 has expected result
PASS | stable task 41 has **Files:**
PASS | stable task 41 has **Interfaces:**
PASS | stable task 41 has **Implementation requirements:**
PASS | stable task 41 has **Step 1:
PASS | stable task 41 has **Step 2:
PASS | stable task 41 has **Step 3:
PASS | stable task 41 has **Step 4:
PASS | stable task 41 has **Step 5:
PASS | stable task 41 has commit
PASS | stable task 41 has expected result
PASS | stable task 42 has **Files:**
PASS | stable task 42 has **Interfaces:**
PASS | stable task 42 has **Implementation requirements:**
PASS | stable task 42 has **Step 1:
PASS | stable task 42 has **Step 2:
PASS | stable task 42 has **Step 3:
PASS | stable task 42 has **Step 4:
PASS | stable task 42 has **Step 5:
PASS | stable task 42 has commit
PASS | stable task 42 has expected result
PASS | stable task 43 has **Files:**
PASS | stable task 43 has **Interfaces:**
PASS | stable task 43 has **Implementation requirements:**
PASS | stable task 43 has **Step 1:
PASS | stable task 43 has **Step 2:
PASS | stable task 43 has **Step 3:
PASS | stable task 43 has **Step 4:
PASS | stable task 43 has **Step 5:
PASS | stable task 43 has commit
PASS | stable task 43 has expected result
PASS | stable task 44 has **Files:**
PASS | stable task 44 has **Interfaces:**
PASS | stable task 44 has **Implementation requirements:**
PASS | stable task 44 has **Step 1:
PASS | stable task 44 has **Step 2:
PASS | stable task 44 has **Step 3:
PASS | stable task 44 has **Step 4:
PASS | stable task 44 has **Step 5:
PASS | stable task 44 has commit
PASS | stable task 44 has expected result
PASS | stable task 45 has **Files:**
PASS | stable task 45 has **Interfaces:**
PASS | stable task 45 has **Implementation requirements:**
PASS | stable task 45 has **Step 1:
PASS | stable task 45 has **Step 2:
PASS | stable task 45 has **Step 3:
PASS | stable task 45 has **Step 4:
PASS | stable task 45 has **Step 5:
PASS | stable task 45 has commit
PASS | stable task 45 has expected result
PASS | stable task 46 has **Files:**
PASS | stable task 46 has **Interfaces:**
PASS | stable task 46 has **Implementation requirements:**
PASS | stable task 46 has **Step 1:
PASS | stable task 46 has **Step 2:
PASS | stable task 46 has **Step 3:
PASS | stable task 46 has **Step 4:
PASS | stable task 46 has **Step 5:
PASS | stable task 46 has commit
PASS | stable task 46 has expected result
PASS | stable task 47 has **Files:**
PASS | stable task 47 has **Interfaces:**
PASS | stable task 47 has **Implementation requirements:**
PASS | stable task 47 has **Step 1:
PASS | stable task 47 has **Step 2:
PASS | stable task 47 has **Step 3:
PASS | stable task 47 has **Step 4:
PASS | stable task 47 has **Step 5:
PASS | stable task 47 has commit
PASS | stable task 47 has expected result
PASS | stable task 48 has **Files:**
PASS | stable task 48 has **Interfaces:**
PASS | stable task 48 has **Implementation requirements:**
PASS | stable task 48 has **Step 1:
PASS | stable task 48 has **Step 2:
PASS | stable task 48 has **Step 3:
PASS | stable task 48 has **Step 4:
PASS | stable task 48 has **Step 5:
PASS | stable task 48 has commit
PASS | stable task 48 has expected result
PASS | stable task 49 has **Files:**
PASS | stable task 49 has **Interfaces:**
PASS | stable task 49 has **Implementation requirements:**
PASS | stable task 49 has **Step 1:
PASS | stable task 49 has **Step 2:
PASS | stable task 49 has **Step 3:
PASS | stable task 49 has **Step 4:
PASS | stable task 49 has **Step 5:
PASS | stable task 49 has commit
PASS | stable task 49 has expected result
PASS | stable task 50 has **Files:**
PASS | stable task 50 has **Interfaces:**
PASS | stable task 50 has **Implementation requirements:**
PASS | stable task 50 has **Step 1:
PASS | stable task 50 has **Step 2:
PASS | stable task 50 has **Step 3:
PASS | stable task 50 has **Step 4:
PASS | stable task 50 has **Step 5:
PASS | stable task 50 has commit
PASS | stable task 50 has expected result
PASS | advanced task count | 15
PASS | advanced task sequence | [1, 2, 3]...[13, 14, 15]
PASS | advanced task 1 has **Files:**
PASS | advanced task 1 has **Interfaces:**
PASS | advanced task 1 has **Implementation requirements:**
PASS | advanced task 1 has **Step 1:
PASS | advanced task 1 has **Step 2:
PASS | advanced task 1 has **Step 3:
PASS | advanced task 1 has **Step 4:
PASS | advanced task 1 has **Step 5:
PASS | advanced task 1 has commit
PASS | advanced task 1 has expected result
PASS | advanced task 2 has **Files:**
PASS | advanced task 2 has **Interfaces:**
PASS | advanced task 2 has **Implementation requirements:**
PASS | advanced task 2 has **Step 1:
PASS | advanced task 2 has **Step 2:
PASS | advanced task 2 has **Step 3:
PASS | advanced task 2 has **Step 4:
PASS | advanced task 2 has **Step 5:
PASS | advanced task 2 has commit
PASS | advanced task 2 has expected result
PASS | advanced task 3 has **Files:**
PASS | advanced task 3 has **Interfaces:**
PASS | advanced task 3 has **Implementation requirements:**
PASS | advanced task 3 has **Step 1:
PASS | advanced task 3 has **Step 2:
PASS | advanced task 3 has **Step 3:
PASS | advanced task 3 has **Step 4:
PASS | advanced task 3 has **Step 5:
PASS | advanced task 3 has commit
PASS | advanced task 3 has expected result
PASS | advanced task 4 has **Files:**
PASS | advanced task 4 has **Interfaces:**
PASS | advanced task 4 has **Implementation requirements:**
PASS | advanced task 4 has **Step 1:
PASS | advanced task 4 has **Step 2:
PASS | advanced task 4 has **Step 3:
PASS | advanced task 4 has **Step 4:
PASS | advanced task 4 has **Step 5:
PASS | advanced task 4 has commit
PASS | advanced task 4 has expected result
PASS | advanced task 5 has **Files:**
PASS | advanced task 5 has **Interfaces:**
PASS | advanced task 5 has **Implementation requirements:**
PASS | advanced task 5 has **Step 1:
PASS | advanced task 5 has **Step 2:
PASS | advanced task 5 has **Step 3:
PASS | advanced task 5 has **Step 4:
PASS | advanced task 5 has **Step 5:
PASS | advanced task 5 has commit
PASS | advanced task 5 has expected result
PASS | advanced task 6 has **Files:**
PASS | advanced task 6 has **Interfaces:**
PASS | advanced task 6 has **Implementation requirements:**
PASS | advanced task 6 has **Step 1:
PASS | advanced task 6 has **Step 2:
PASS | advanced task 6 has **Step 3:
PASS | advanced task 6 has **Step 4:
PASS | advanced task 6 has **Step 5:
PASS | advanced task 6 has commit
PASS | advanced task 6 has expected result
PASS | advanced task 7 has **Files:**
PASS | advanced task 7 has **Interfaces:**
PASS | advanced task 7 has **Implementation requirements:**
PASS | advanced task 7 has **Step 1:
PASS | advanced task 7 has **Step 2:
PASS | advanced task 7 has **Step 3:
PASS | advanced task 7 has **Step 4:
PASS | advanced task 7 has **Step 5:
PASS | advanced task 7 has commit
PASS | advanced task 7 has expected result
PASS | advanced task 8 has **Files:**
PASS | advanced task 8 has **Interfaces:**
PASS | advanced task 8 has **Implementation requirements:**
PASS | advanced task 8 has **Step 1:
PASS | advanced task 8 has **Step 2:
PASS | advanced task 8 has **Step 3:
PASS | advanced task 8 has **Step 4:
PASS | advanced task 8 has **Step 5:
PASS | advanced task 8 has commit
PASS | advanced task 8 has expected result
PASS | advanced task 9 has **Files:**
PASS | advanced task 9 has **Interfaces:**
PASS | advanced task 9 has **Implementation requirements:**
PASS | advanced task 9 has **Step 1:
PASS | advanced task 9 has **Step 2:
PASS | advanced task 9 has **Step 3:
PASS | advanced task 9 has **Step 4:
PASS | advanced task 9 has **Step 5:
PASS | advanced task 9 has commit
PASS | advanced task 9 has expected result
PASS | advanced task 10 has **Files:**
PASS | advanced task 10 has **Interfaces:**
PASS | advanced task 10 has **Implementation requirements:**
PASS | advanced task 10 has **Step 1:
PASS | advanced task 10 has **Step 2:
PASS | advanced task 10 has **Step 3:
PASS | advanced task 10 has **Step 4:
PASS | advanced task 10 has **Step 5:
PASS | advanced task 10 has commit
PASS | advanced task 10 has expected result
PASS | advanced task 11 has **Files:**
PASS | advanced task 11 has **Interfaces:**
PASS | advanced task 11 has **Implementation requirements:**
PASS | advanced task 11 has **Step 1:
PASS | advanced task 11 has **Step 2:
PASS | advanced task 11 has **Step 3:
PASS | advanced task 11 has **Step 4:
PASS | advanced task 11 has **Step 5:
PASS | advanced task 11 has commit
PASS | advanced task 11 has expected result
PASS | advanced task 12 has **Files:**
PASS | advanced task 12 has **Interfaces:**
PASS | advanced task 12 has **Implementation requirements:**
PASS | advanced task 12 has **Step 1:
PASS | advanced task 12 has **Step 2:
PASS | advanced task 12 has **Step 3:
PASS | advanced task 12 has **Step 4:
PASS | advanced task 12 has **Step 5:
PASS | advanced task 12 has commit
PASS | advanced task 12 has expected result
PASS | advanced task 13 has **Files:**
PASS | advanced task 13 has **Interfaces:**
PASS | advanced task 13 has **Implementation requirements:**
PASS | advanced task 13 has **Step 1:
PASS | advanced task 13 has **Step 2:
PASS | advanced task 13 has **Step 3:
PASS | advanced task 13 has **Step 4:
PASS | advanced task 13 has **Step 5:
PASS | advanced task 13 has commit
PASS | advanced task 13 has expected result
PASS | advanced task 14 has **Files:**
PASS | advanced task 14 has **Interfaces:**
PASS | advanced task 14 has **Implementation requirements:**
PASS | advanced task 14 has **Step 1:
PASS | advanced task 14 has **Step 2:
PASS | advanced task 14 has **Step 3:
PASS | advanced task 14 has **Step 4:
PASS | advanced task 14 has **Step 5:
PASS | advanced task 14 has commit
PASS | advanced task 14 has expected result
PASS | advanced task 15 has **Files:**
PASS | advanced task 15 has **Interfaces:**
PASS | advanced task 15 has **Implementation requirements:**
PASS | advanced task 15 has **Step 1:
PASS | advanced task 15 has **Step 2:
PASS | advanced task 15 has **Step 3:
PASS | advanced task 15 has **Step 4:
PASS | advanced task 15 has **Step 5:
PASS | advanced task 15 has commit
PASS | advanced task 15 has expected result
PASS | 2026-08-11-mongodb-document-persistence-platform-design.md code fences balanced | 132
PASS | 2026-08-11-mongodb-document-persistence-platform-design.md no TODO markers
PASS | 2026-08-11-mongodb-document-persistence-platform-design.md no wildcard create paths
PASS | 2026-08-11-mongodb-document-persistence-platform-implementation-plan.md code fences balanced | 504
PASS | 2026-08-11-mongodb-document-persistence-platform-implementation-plan.md no TODO markers
PASS | 2026-08-11-mongodb-document-persistence-platform-implementation-plan.md no wildcard create paths
PASS | 2026-08-11-mongodb-advanced-capabilities-expansion-plan.md code fences balanced | 150
PASS | 2026-08-11-mongodb-advanced-capabilities-expansion-plan.md no TODO markers
PASS | 2026-08-11-mongodb-advanced-capabilities-expansion-plan.md no wildcard create paths
PASS | stable no duplicate create paths
PASS | advanced no duplicate create paths
PASS | stable and advanced create paths do not collide
PASS | no real generic repository declaration
PASS | no public arbitrary run command
PASS | stable starter excludes advanced
PASS | unknown commit body retry forbidden
PASS | mongo seven and eight matrix
PASS | advanced actual topology gate
SUMMARY | total=687 pass=687 fail=0
```
## 검증 한계
현재 검증은 설계서와 구현 계획서의 정적 구조·일관성 검사다. 실제 Backend Skeleton 저장소가 제공되지 않았으므로 Gradle configuration, compile, Spring Context, MongoDB Replica Set, failover, sharded cluster, Atlas/KMS, performance와 Git commit은 실행하지 않았다.
@@ -0,0 +1,65 @@
> **보존 안내** — 이 파일은 저장소 루트 `notification-superpowers-package/` 에 있던 납품 패키지의 README다.
> 2026-08-15 문서 정리에서 설계서·계획서는 `docs/superpowers/specs/` 와 `docs/superpowers/plans/` 로 통합했고,
> 실행 불가 상태였던 `validate_notification_docs.py` 와 `MANIFEST.sha256` 은 제거했다.
> 아래 본문은 납품 시점의 기록이므로 제거된 파일을 가리키는 문장은 더 이상 유효하지 않다.
# Notification Delivery Platform Superpowers Package
이 패키지는 Backend Skeleton의 `notification` 기술 모듈을 구현하기 위한 설계서와 TDD 구현 계획서다.
## 파일
```text
docs/superpowers/specs/2026-08-10-notification-platform-design.md
docs/superpowers/plans/2026-08-10-notification-platform-implementation-plan.md
VALIDATION.md
validate_notification_docs.py
MANIFEST.sha256
```
## 핵심 계약
```text
NotificationRequest
→ RecipientDelivery
→ DeliveryAttempt
→ ProviderEvent append-only ledger
→ channel-specific projection
→ SubmissionOutcome / DeliveryOutcome / EvidenceLevel
```
- `submit()` 성공은 durable acceptance만 뜻한다.
- Provider acceptance와 delivery/read evidence를 분리한다.
- 결과를 확정할 수 없으면 `AMBIGUOUS`로 보존한다.
- ambiguous attempt의 자동 retry와 cross-channel fallback은 기본 차단한다.
- FCM은 FID를 primary target으로, registration token을 legacy compatibility로 둔다.
- Callback은 signature 검증 후 원장에 append하고 중복·역순·누락을 처리한다.
- Contact Point는 AES-256-GCM 암호화와 HMAC-SHA-256 equality fingerprint를 사용한다.
## 구현 기준 가정
실제 Backend Skeleton 저장소가 입력되지 않았기 때문에 다음 가정을 문서에 명시했다.
```text
Java 21
Gradle Kotlin DSL
Spring Framework 6.2 common line + Spring 7.0 compatibility job
PostgreSQL 16
JPA + Flyway
root package: io.backend.skeleton.notification
module root: modules/notification
```
실제 저장소에서는 dependency catalog와 package/file path를 기존 규칙에 맞게 매핑하되 공개 계약과 신뢰성 의미론은 유지한다.
## 실행
1. 설계서를 검토한다.
2. 계획서 Task 1부터 순서대로 실행한다.
3. 각 Task에서 failing test → red 확인 → 최소 구현 → green 확인 → commit 순서를 지킨다.
4. Task마다 specification review와 code-quality review를 분리한다.
5. 마지막 release gate에서 contract, chaos, security, performance, compatibility job을 모두 실행한다.
## 검증 범위
`VALIDATION.md`는 문서 구조, Task 연속성, 파일 경로 중복, 미확정 표현, 핵심 계약, ZIP CRC를 검증한 결과다. 실제 Gradle compile과 Provider integration은 Backend Skeleton 저장소에서 계획서의 명령을 실행해야 한다.
@@ -0,0 +1,590 @@
# 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 명령을 실제 저장소에서 실행해야 한다.
+48
View File
@@ -0,0 +1,48 @@
> **보존 안내** — 이 파일은 저장소 루트 `redis-superpowers-package/` 에 있던 납품 패키지의 README다.
> 2026-08-15 문서 정리에서 설계서·계획서는 `docs/superpowers/specs/` 와 `docs/superpowers/plans/` 로 통합했고,
> 이 패키지에는 검증 스크립트가 없었다.
> 아래 본문은 납품 시점의 기록이므로 제거된 파일을 가리키는 문장은 더 이상 유효하지 않다.
# Redis Wrapper 및 Typed API 설계 패키지
이 패키지는 Spring 기반 Backend Skeleton에서 Redis 자료구조와 명령을 폭넓게 제공하기 위한 설계서와 구현 계획서다.
## 문서
- `docs/superpowers/specs/2026-08-07-redis-wrapper-typed-api-design.md`
- 범위와 비지원 범위
- Redis 버전·배포 모드
- 모듈과 의존 규칙
- 자료구조별 동기·Reactive Typed API
- R1~R4 명령 노출 정책
- permit·budget·Raw Gateway·Admin Plane
- namespace·직렬화·TTL·timeout·retry·오류·관측성·ACL
- Standalone·Sentinel·Cluster
- 테스트·CI·완료 정의
- `docs/superpowers/plans/2026-08-07-redis-wrapper-typed-api-implementation-plan.md`
- 27개 구현 작업
- 작업별 생성·수정 파일
- 작업 간 입력·출력 인터페이스
- 실패 테스트, 실행 명령, 최소 구현, 통과 검증, 커밋
- Redis 7.2·7.4·8.2·8.10 및 Sentinel·Cluster 테스트 작업
- `VALIDATION.md`
- 문서 구조와 계획 완전성에 대한 정적 검증 결과
## 핵심 결정
1. classic Redis 자료구조는 최대한 Typed API로 제공한다.
2. 고비용·Blocking·다중 키 명령은 permit와 `OperationBudget`을 요구한다.
3. Typed API에 아직 없는 R1·R2 명령은 승인형 Raw Gateway로 제공한다.
4. 운영 명령은 별도 Admin Plane, 파괴적 명령은 SDK 차단으로 분리한다.
5. command catalog는 Redis 공식 metadata에서 생성하고 조직 정책을 오버레이한다.
6. 동기와 Reactive API를 정식 지원하고 같은 내부 async primitive를 공유한다.
7. 일반·Blocking·Transaction·Pub/Sub·Admin 연결을 격리한다.
8. timeout 후 write는 자동 재시도하지 않고 실행 결과 불명을 표현한다.
## 적용 전제
현재 Backend Skeleton 저장소가 첨부되지 않아 경로와 Gradle 구조는 목표 구조로 확정했다. 실제 저장소에 적용할 때 기존 package naming, convention plugin, dependency management가 더 강한 기준을 이미 갖고 있다면 구조적 계약은 유지하면서 해당 규칙에 맞춘다.
입력 Markdown이 참조한 309행 Excel 워크북은 현재 작업 공간에 존재하지 않았다. 따라서 정확한 command matrix는 구현 과정에서 `COMMAND DOCS`, `COMMAND INFO`, `COMMAND GETKEYSANDFLAGS`를 읽어 재생성하고 정책 오버레이를 적용하도록 설계했다.
@@ -0,0 +1,38 @@
# 정적 검증 결과
- **결과:** PASS
- **검사 수:** 29
- **설계서 SHA-256:** `e742ea78f4f40c2f5ed65093a71d2c85c27da52b0761374030a5ca64143aea63`
- **계획서 SHA-256:** `6592a37373a79bc2ccf9434fc3516d8273d9f9369e392d5e4f3360a46d6398c0`
| 검사 | 결과 | 세부 |
|---|---|---|
| 설계서 파일 존재 | PASS | docs/superpowers/specs/2026-08-07-redis-wrapper-typed-api-design.md |
| 설계서 코드 펜스 균형 | PASS | fences=70 |
| 설계서 미확정 표식 없음 | PASS | none |
| 계획서 파일 존재 | PASS | docs/superpowers/plans/2026-08-07-redis-wrapper-typed-api-implementation-plan.md |
| 계획서 코드 펜스 균형 | PASS | fences=276 |
| 계획서 미확정 표식 없음 | PASS | none |
| 계획 작업 수 | PASS | 27 tasks |
| 모든 작업 Step 1 보유 | PASS | 27/27 |
| 모든 작업 Step 2 보유 | PASS | 27/27 |
| 모든 작업 Step 3 보유 | PASS | 27/27 |
| 모든 작업 Step 4 보유 | PASS | 27/27 |
| 모든 작업 Step 5 보유 | PASS | 27/27 |
| 모든 작업 **Files:** 보유 | PASS | 27/27 |
| 모든 작업 **Interfaces:** 보유 | PASS | 27/27 |
| 모든 작업 git commit -m 보유 | PASS | 27/27 |
| Create 경로 중복 없음 | PASS | none |
| Superpowers 계획 헤더 | PASS | required header present |
| 설계 입력 제약 명시 | PASS | missing workbook handled explicitly |
| Typed/Advanced/Raw/Admin 4단계 | PASS | four exposure tiers |
| classic 자료구조 범위 | PASS | all classic groups present |
| 동기·Reactive parity 계획 | PASS | API parity covered |
| permit 위조 검증 | PASS | provenance verification covered |
| 토폴로지 task 선행 등록 | PASS | test tasks available before contracts |
| 환경 파일 생명주기 일관성 | PASS | create once, extend twice |
| 잘못된 Persistent factory 없음 | PASS | constructor usage consistent |
| 공유 async primitive | PASS | sync/reactive executor share invocation |
| Raw 문자열 API 금지 | PASS | guardrail fixed |
| R4 차단 | PASS | blocked in plan and design |
| 완료 정의 존재 | PASS | definition and release task present |