docs: ca-skeleton production capability feature 분해 설계 + stack 드리프트 정정
ca-tmpl 의 production capability platform 설계(platform 1,346줄 + redis 6,771 + httpclient 7,030 + fileserver 2,467)를 llm-wiki 거버넌스로 편입하는 분해 설계. 2-tier(기술 런타임 / 능력 계약) 모델로 신규 branch 18개를 확정하고, 기존 branch 8건의 주도권을 신규 branch 로 이전하는 절차를 고정. hub 드리프트 3건 중 2건을 코드 대조로 정정: - Spring Boot 3.5.14 → 4.0.0 (src/build.gradle:8), DEC-…-STACK-FRAMEWORK-001 revision 1 → 2 + WI 9행 pin 갱신 - ca-tmpl 경로를 desktop-server-git/clean-architecture-backend-template 로 정정 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
d19670975b
commit
7c4e8df248
@@ -22,7 +22,7 @@ semantic_surface_exclusions:
|
||||
> 이 문서는 도메인/비즈니스 로직을 제거한 Clean Architecture skeleton에서 기본 제공해야 하는 운영 실패/관측성/경계 검증 계약의 canonical SSOT입니다.
|
||||
> Phase A/B/C1/D1/D2 모두 2026-05-22 완료. 본 문서는 ca-tmpl 운영 계약의 canonical SSOT. Phase C2는 2026-05-27 `feature-skeleton-package-blueprint-contract` 범위에서 일부 진입: package/module blueprint와 architecture guardrail은 별도 ca-tmpl git repo에서 local verification 완료. 나머지 registry/generated constants/sample fixture/outbox/security 등 Phase C2 항목은 계속 pending.
|
||||
>
|
||||
> **경로 표기 규약**: 본 문서가 reference하는 `ca-tmpl/docs/...` 경로는 별도 git repo (`/home/donghyeon/workspace/ca-tmpl/`)의 `docs/` 디렉터리를 의미. registry yaml과 runbook stub은 운영 artifact라 LLM Wiki(`wiki/projects/`)에 두지 않고 ca-tmpl repo에 위치. 본 canonical contract 문서만 LLM Wiki에 잔존.
|
||||
> **경로 표기 규약**: 본 문서가 reference하는 `ca-tmpl/docs/...` 경로는 별도 git repo (`/home/donghyeon/workspace/desktop-server-git/clean-architecture-backend-template/`)의 `docs/` 디렉터리를 의미. **2026-07-28 정정** — 이전 표기 `/home/donghyeon/workspace/ca-tmpl/` 는 stale (저장소 이전). LLM Wiki 전역에는 옛 경로 참조가 남아 있으며 일괄 치환은 `wiki/log.md` 의 과거 실행 기록까지 바꾸므로 별도 정리 대상. registry yaml과 runbook stub은 운영 artifact라 LLM Wiki(`wiki/projects/`)에 두지 않고 ca-tmpl repo에 위치. 본 canonical contract 문서만 LLM Wiki에 잔존.
|
||||
>
|
||||
> 자세한 phase 진척과 closure는 §28 Review Remediation Ledger 참조.
|
||||
|
||||
@@ -976,11 +976,11 @@ promotion failure:
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-001` | `feature-operational-error-observability-foundation` | error·observability 6필드 contract와 contract test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-ERROR-ENVELOPE-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-002` | `feature-boundary-validation-mapping-contract` | boundary·mapping 6필드 contract와 negative fixture가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MAPPING-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-003` | `feature-log-management-contract` | log field·masking contract와 verification test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-ERROR-ENVELOPE-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-004` | `feature-env-driven-runtime-configuration` | env configuration 6필드 contract와 invalid-config test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-004` | `feature-env-driven-runtime-configuration` | env configuration 6필드 contract와 invalid-config test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@2` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-005` | `feature-repository-access-permission-contract` | repository access rule과 forbidden fixture가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-TRANSACTION-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-006` | `feature-persistence-failure-baseline` | persistence failure mapping과 integration test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-DATABASE-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-TESTCONTAINERS-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-007` | `feature-outbound-http-client-baseline` | timeout·retry·circuit-breaker contract test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-RESILIENCE-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-TESTCONTAINERS-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-008` | `feature-security-operational-baseline` | security failure·header contract와 negative test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-008` | `feature-security-operational-baseline` | security failure·header contract와 negative test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@2` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-009` | `feature-integration-adapter-templates` | optional adapter template가 core broker abstraction을 침범하지 않는다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-EVENT-BROKER-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-010` | `feature-contract-verification-test-suite` | release-blocking contract suite가 OpenAPI drift를 검출한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-OPENAPI-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-TEST-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-011` | `feature-api-contract-baseline` | /v1 API와 envelope/OpenAPI contract test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-API-VERSIONING-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-OPENAPI-001@1` | - | `planned` |
|
||||
@@ -992,9 +992,9 @@ promotion failure:
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-017` | `feature-migration-startup-contract` | Flyway 실패·진행 중 readiness가 healthy가 아님을 검증한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MIGRATION-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-MIGRATION-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-018` | `feature-architecture-enforcement-rules` | forbidden module/import fixture가 ArchUnit gate에서 실패한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-ARCHTEST-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-019` | `feature-metrics-alerting-contract` | metric key·cardinality·alert contract test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-ERROR-ENVELOPE-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-020` | `feature-secrets-config-source-contract` | secret source·classification·leakage negative test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-021` | `feature-management-actuator-security-contract` | management endpoint exposure·authorization test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-022` | `feature-tenant-context-policy` | tenant propagation·clear negative fixture가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-020` | `feature-secrets-config-source-contract` | secret source·classification·leakage negative test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@2` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-021` | `feature-management-actuator-security-contract` | management endpoint exposure·authorization test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@2` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-022` | `feature-tenant-context-policy` | tenant propagation·clear negative fixture가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@2` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-023` | `feature-file-resource-handling-contract` | file size·type·storage boundary test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-024` | `feature-cache-consistency-contract` | after-commit invalidation·stampede failure fixture가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-DATABASE-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-025` | `feature-background-job-async-contract` | duplicate scheduler/outbox execution 방지 test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-SCHEDULER-LOCK-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-EVENT-BROKER-001@1` | - | `planned` |
|
||||
@@ -1020,16 +1020,16 @@ promotion failure:
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-045` | `feature-streaming-response-contract` | 지원 protocol과 timeout·failure contract test가 고정된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-API-VERSIONING-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-RESILIENCE-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-046` | `feature-resource-identifier-contract` | ULID format·PostgreSQL uuid persistence·SecureRandom test가 통과한다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-DATABASE-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-RANDOM-001@1` | - | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-047` | `feature-application-query-bypass-contract` | query bypass의 허용 경계·mapping·transaction 영향과 검증 test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-TRANSACTION-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MAPPING-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-035`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-012`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-024`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-007`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-006` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-048` | `feature-authentication-authorization-contract` | authentication·authorization ownership, error mapping, forbidden dependency test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-ERROR-ENVELOPE-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-ARCHTEST-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-008`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-005`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-018`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-014`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-022`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-001` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-049` | `feature-cachestore-multi-backend-router` | cache backend 선택·fallback·failure routing과 contract test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-RESILIENCE-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-TEST-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-024` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-048` | `feature-authentication-authorization-contract` | authentication·authorization ownership, error mapping, forbidden dependency test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-ERROR-ENVELOPE-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@2`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-ARCHTEST-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-008`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-005`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-018`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-014`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-022`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-001` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-049` | `feature-cachestore-multi-backend-router` | cache backend 선택·fallback·failure routing과 contract test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-RESILIENCE-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@2`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-TEST-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-024` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-050` | `feature-database-connection-pool-contract` | connection pool 설정·lifecycle·metric·failure gate가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-DATABASE-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-RESILIENCE-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-004`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-006`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-035`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-019` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-051` | `feature-dependency-vulnerability-management-contract` | scanner·severity·suppression·update·license 정책과 CI failure gate가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-BUILD-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-028`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-030`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-029` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-052` | `feature-distributed-lock-contract` | lock provider·lease·transaction commit ordering과 failure test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-SCHEDULER-LOCK-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-TRANSACTION-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-DATABASE-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-004`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-025`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-024`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-017`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-018` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-053` | `feature-messaging-multibroker-router` | broker 선택·routing·fallback과 core transport-neutrality test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-EVENT-BROKER-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-038` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-054` | `feature-notification-provider-spi` | notification provider SPI·routing·failure contract와 test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-RESILIENCE-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-053`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-049` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-055` | `feature-persistence-auditing-contract` | persistence audit actor·time·mapping·transaction contract test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-TRANSACTION-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MAPPING-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-DATABASE-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-056`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-048`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-006`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-012`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-017` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-056` | `feature-runtime-context-propagation-contract` | runtime context capture·propagation·cleanup과 architecture/contract test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-LANGUAGE-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-TEST-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-ARCHTEST-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-002`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-001`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-025`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-027`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-022` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-057` | `feature-sample-portfolio-public-access` | sample public endpoint allowlist와 authenticated endpoint negative test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-TEST-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-048`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-021` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-056` | `feature-runtime-context-propagation-contract` | runtime context capture·propagation·cleanup과 architecture/contract test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-LANGUAGE-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@2`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-TEST-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-ARCHTEST-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-002`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-001`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-025`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-027`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-022` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-057` | `feature-sample-portfolio-public-access` | sample public endpoint allowlist와 authenticated endpoint negative test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-MODULE-LAYOUT-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001@2`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-TEST-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-048`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-021` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-058` | `feature-startup-failure-log-suppression` | suppressible startup failure 조건과 retained actionable error test가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-BOOTSTRAP-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-ERROR-ENVELOPE-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-001`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-017` | `planned` |
|
||||
| `WI-CA-SKELETON-OPERATIONAL-CONTRACT-059` | `feature-static-analysis-quality-contract` | static analysis 도구·threshold·CI failure mapping과 fixture가 명시된다 | `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-BUILD-001@1`, `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-TEST-001@1` | `WI-CA-SKELETON-OPERATIONAL-CONTRACT-028`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-029`, `WI-CA-SKELETON-OPERATIONAL-CONTRACT-018` | `planned` |
|
||||
|
||||
@@ -1219,7 +1219,7 @@ TODO는 작업 목록이 아니라 미완성 계약입니다. 각 TODO는 branch
|
||||
| `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-BOOTSTRAP-001` | 1 | `bootstrap` | 신규 환경의 default 진입 명령은 ./gradlew bootstrap이다 | `active` | [[raw/project-notes/ca-skeleton-operational-contract]] | §25 `bootstrap command` |
|
||||
| `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-TESTCONTAINERS-001` | 1 | `testcontainers` | Testcontainers는 persistence/outbound integration test에 사용하고 unit·architecture·contract test에서는 금지한다 | `active` | [[raw/project-notes/ca-skeleton-operational-contract]] | §25 `Testcontainers policy` |
|
||||
| `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-LANGUAGE-001` | 1 | `stack-language` | application language는 Java 21 LTS다 | `active` | [[raw/project-notes/ca-skeleton-operational-contract]] | §34 Stack Matrix `Language` |
|
||||
| `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001` | 1 | `stack-framework` | framework는 Spring Boot 3.5.14다 | `active` | [[raw/project-notes/ca-skeleton-operational-contract]] | §34 Stack Matrix `Framework` |
|
||||
| `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-FRAMEWORK-001` | 2 | `stack-framework` | framework는 Spring Boot 4.0.0다 | `active` | [[raw/project-notes/ca-skeleton-operational-contract]] | §34 Stack Matrix `Framework` + code fact `src/build.gradle:8` (2026-07-28 정정, rev1 은 `3.5.14` — stale) |
|
||||
| `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-ORM-001` | 1 | `stack-orm` | ORM은 Spring Boot transitive Hibernate ORM 6.5.x다 | `active` | [[raw/project-notes/ca-skeleton-operational-contract]] | §34 Stack Matrix `ORM` |
|
||||
| `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-JSON-001` | 1 | `stack-json` | JSON stack은 Spring Boot transitive Jackson 2.18.x다 | `active` | [[raw/project-notes/ca-skeleton-operational-contract]] | §34 Stack Matrix `JSON` |
|
||||
| `DEC-CA-SKELETON-OPERATIONAL-CONTRACT-STACK-DATABASE-001` | 1 | `stack-database` | database는 PostgreSQL 16 단일 stack이다 | `active` | [[raw/project-notes/ca-skeleton-operational-contract]] | §34 Stack Matrix `DB` |
|
||||
@@ -2409,7 +2409,7 @@ sequenceDiagram
|
||||
- [[raw/errors/webmvctest-slice-configprops-enum-placeholder-no-default-2026-06-20]]
|
||||
<!-- GENERATED: errors:end -->
|
||||
|
||||
> ca-skeleton (= ca-tmpl) 프로젝트에 묶이는 모든 raw 자료. ca-tmpl repo (`/home/donghyeon/workspace/ca-tmpl/`) 의 코드와 함께 본 LLM Wiki 의 자료들이 cluster 구성.
|
||||
> ca-skeleton (= ca-tmpl) 프로젝트에 묶이는 모든 raw 자료. ca-tmpl repo (`/home/donghyeon/workspace/desktop-server-git/clean-architecture-backend-template/`) 의 코드와 함께 본 LLM Wiki 의 자료들이 cluster 구성.
|
||||
|
||||
### 31.1 브랜치 (feature-* / develop-* / fix-* / chore-* / experiment-*)
|
||||
|
||||
@@ -2822,7 +2822,7 @@ sequenceDiagram
|
||||
|---|---|---|---|
|
||||
| **F1. Cross-branch SSOT 미확인** | branch 가 *다른 branch 결정 영역* (예: 모듈 경계, ArchUnit suite 소유) 을 자기 §구현 가이드에 결정 | CLAUDE.md §11 *"본 branch 결정 범위 밖 cell 작성 금지"* + §15.5 **R3 OUT_OF_BRANCH_SCOPE** | 본 §구현 가이드 의 각 cell 이 sibling branch 의 결정 영역 (특히 `feature-skeleton-package-blueprint-contract` 의 모듈 경계, `feature-boundary-validation-mapping-contract` 의 ArchUnit suite, `feature-tenant-context-policy` 의 tenant 모델) 을 침범하지 않는가? |
|
||||
| **F2. 본문 결정 ↔ §구현 가이드 self-inconsistency** | D-row 결정과 §구현 가이드 코드가 *서로 다른 패턴* 채택 (예: D5 본문 = static factory, §1/§2 = port + DI). **D-row 끼리도 self-inconsistency** (예: D2 charset = Crockford base32, I/L/O/U 제외 → 그러나 D19 fixture 값 `01HRGC7K2N4F6P8Q0R2S4T6U8V` 가 `U` 포함 → 자기 regex 통과 불가, 2026-06-01 self-catch) | §15.5 R1~R3 의 *암묵적 가정* — *근거 → 결정* 만 검사, *결정 → 구현* 미검사, *결정 → 결정* 도 미검사. wiki-workflow STOP self-check 12 도 동일 한계 | 각 D-row 결정의 *기술 선택* 이 §구현 가이드 코드 예시와 1:1 매칭되는가? (메커니즘 / 호출자 / 의존 방향 모두) **그리고 D-row 간 cross-reference 가 자기 자신의 charset/regex/format 통과하는가?** (예: charset 결정의 alphabet 이 fixture 값을 actually 통과) |
|
||||
| **F3. 실제 코드 cross-check 부재** | spec 이 현재 코드에 *존재하지 않는* 의존성 (예: tenant 컬럼, ArchUnit rule 의 검사 대상 패키지) 을 가정 | 명시적 룰 없음 — *코드 cross-check 게이트 부재* | 본 branch §구현 가이드 의 *전제 사실* (테이블 / 컬럼 / 모듈 / 패키지) 이 `/home/donghyeon/workspace/ca-tmpl` 의 실제 코드에 존재하는가? 없으면 *마이그레이션 대상* 임을 본문에 명시했는가? |
|
||||
| **F3. 실제 코드 cross-check 부재** | spec 이 현재 코드에 *존재하지 않는* 의존성 (예: tenant 컬럼, ArchUnit rule 의 검사 대상 패키지) 을 가정 | 명시적 룰 없음 — *코드 cross-check 게이트 부재* | 본 branch §구현 가이드 의 *전제 사실* (테이블 / 컬럼 / 모듈 / 패키지) 이 `/home/donghyeon/workspace/desktop-server-git/clean-architecture-backend-template` 의 실제 코드에 존재하는가? 없으면 *마이그레이션 대상* 임을 본문에 명시했는가? |
|
||||
| **F4. 위임 / 작성 모호** | branch 가 *결정 SSOT* 임을 명시했으나 §구현 가이드에 실제 작성 코드 잔존 (R3 부분 적용) | §15.5 R3 의 *부분 적용* | §구현 가이드 의 코드 skeleton 이 *reference (실제 호스팅 = sibling)* 인지 *실제 작성 (본 branch host)* 인지 본문에 명시했는가? reference 라면 sibling cite 와 *코드 위치 = sibling* 한 줄 추가했는가? |
|
||||
|
||||
위 4개 self-check 는 `/lint` 가 자동 catch 하지 못하는 정성적 영역 — branch 작성 / Sources 추가 / Decision 추가 / §구현 가이드 작성 시점에 *명시적으로* 검토.
|
||||
@@ -2844,7 +2844,7 @@ ca-skeleton 은 *단일 stack 커밋* 을 채택합니다. 다중 DB / 다중
|
||||
| Layer | 선택 | 버전 | 비고 |
|
||||
|---|---|---|---|
|
||||
| Language | Java | 21 LTS | `java.util.UUID` v7 native 미지원 — ULID 선택 근거 (resource-identifier branch D1) |
|
||||
| Framework | Spring Boot | 3.5.14 | starter web / data-jpa / validation 사용 |
|
||||
| Framework | Spring Boot | 4.0.0 | starter web / data-jpa / validation 사용. **2026-07-28 정정** — 이전 표기 `3.5.14` 는 stale. 근거: ca-tmpl `src/build.gradle:8` `id 'org.springframework.boot' version '4.0.0' apply false`. `DEC-…-STACK-FRAMEWORK-001@2` |
|
||||
| ORM | Hibernate ORM | 6.5.x (Spring Boot transitive) | `@JdbcTypeCode(SqlTypes.UUID)` native UUID |
|
||||
| JSON | Jackson | 2.18.x (Spring Boot transitive) | custom serializer for value objects |
|
||||
| DB | PostgreSQL | 16 | `uuid` native column type (16-byte binary). MySQL / Oracle / SQL Server *out of scope* |
|
||||
@@ -2883,7 +2883,7 @@ ca-skeleton 은 *단일 stack 커밋* 을 채택합니다. 다중 DB / 다중
|
||||
|
||||
- **DB**: MySQL / Oracle / MariaDB / SQL Server — PostgreSQL 16 단일
|
||||
- **Language**: Kotlin / Scala / Groovy (응용 코드) — Java 21 단일 (Gradle Groovy DSL 은 빌드 도구 한정)
|
||||
- **Framework**: Micronaut / Quarkus / Helidon — Spring Boot 3.5.14 단일
|
||||
- **Framework**: Micronaut / Quarkus / Helidon — Spring Boot 4.0.0 단일
|
||||
- **Build tool**: Maven / Bazel — Gradle Groovy DSL 단일
|
||||
- **Test framework**: TestNG / Spock — JUnit 5 단일
|
||||
|
||||
|
||||
Reference in New Issue
Block a user