--- kind: CONCEPT slug: domain-core-c01 title: 도메인 내용이 아니라 도메인 모델링 계약을 소유한다 topic: state-machines-and-ownership project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: concept:domain-core-c01 evidenceCapturedOn: 2026-09-01 assets: - key: domain-core-c01 file: ../../../final/evidence/rendered/domain-core-c01.svg - key: domain-core-c01-diagram file: ../../../final/assets/diagrams/domain-core-c01.svg evidence: - ../../../final/evidence/raw/domain-core-c01.txt source: - 원본 분석 절은 analysis/01-domain-core.md#L68 이다. module: domain-core --- # 도메인 내용이 아니라 도메인 모델링 계약을 소유한다 현재 `domain-core`에는 WorkLog 같은 실제 aggregate가 없다. 실제 샘플 aggregate/value object/event는 `sample-portfolio`에 있다. ## 본문 현재 `domain-core`에는 WorkLog 같은 실제 aggregate가 없다. 실제 샘플 aggregate/value object/event는 `sample-portfolio`에 있다. ## 이 모듈이 실제로 소유한 것 :::evidence key="domain-core-c01-diagram" alt="모듈 경계 안에 식별자 추상화와 모델링 표식 두 상자가 들어 있고 sample-portfolio 의 aggregate 가 경계 밖 점선 상자로 놓인 구조" caption="이 모듈이 실제로 소유한 것" zoom="false" ::: 이 모듈에 남은 production surface는 두 종류다 — **식별자 추상화**(`ResourceId`, `IdFactory`)와 **모델링 표식**(`@ValueObject`, `@AggregateRoot`, `@DomainEvent`). ## ResourceId 참조 위치 :::evidence key="domain-core-c01" alt="코드베이스에서 ResourceId 를 검색한 출력 2줄. 이 기록이 세는 참조가 그 출력에 그대로 보인다." caption="ResourceId 코드베이스 검색 — 2줄 · exit 0" zoom="true" ::: ## 정책이 허용하는 범위와 현재 내용의 차이 "business concepts, entities, value objects…"를 둘 수 있는 계층이라는 정책과 달리, 현재 snapshot의 실제 contents는 skeleton 전반에서 사용할 **domain-layer contract/marker**에 가깝다. 이는 현재 source에 대한 관찰이며, 향후 실제 production domain type이 이 module에 추가되지 않는다는 뜻은 아니다.