4.6 KiB
4.6 KiB
title, source_type, status, tags, date, branches
| title | source_type | status | tags | date | branches | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-05-28 일일 노트 | daily-note | raw |
|
2026-05-28 |
|
2026-05-28
Layer:
raw/daily-notes/— 그날의 혼합 일일 기록. 그 자체는 wiki로 옮기지 않으며,/ingest가 promotable 항목만 추출해 다른 wiki 영역으로 보낸다. 원본은 raw에 영구 보관.
활성 브랜치
feature-skeleton-package-blueprint-contract 다음으로 이어서 개발할 브랜치는 feature-architecture-enforcement-rules다. 오늘은 Phase C2 전체 roadmap을 처리하지 않고, 방금 구현된 multi-module skeleton의 경계가 깨지지 않도록 architecture enforcement를 실제 코드와 테스트로 붙이는 데 집중한다.
feature-architecture-enforcement-rules(local-verified, not merged) — raw/branch-notes/feature-architecture-enforcement-rules
오늘의 계획
브랜치별 항목은 [branch-name] 프리픽스. 오늘 개발 범위는 아래 3개로 제한한다.
- [feature-architecture-enforcement-rules] ca-tmpl repo의 현재 module dependency graph를 확인하고, 허용/금지 dependency matrix를
domain-core,application-core,adapter-*,app-bootstrap,shared-contract,sample-ticket기준으로 확정한다. - [feature-architecture-enforcement-rules] Gradle dependency guardrail을 구현해서
domain-core -> Spring/adapter,application-core -> adapter-*, production module ->sample-ticket의존을 차단한다. - [feature-architecture-enforcement-rules] ArchUnit test를 추가해서 forbidden import/annotation 규칙을 검증하고, 최소한 architecture test와 관련 Gradle verification task를 로컬에서 실행한다.
한 일
- ca-tmpl
src/build.gradle의verifyCleanArchitectureDependencies를 보강해 declared module coverage와 forbidden project dependency 메시지를 강화했다. - ca-tmpl
CleanArchitectureTest에 application@Transactional금지, controller direct domain response 금지, mapper boundary, shared-contract package allowlist 규칙을 추가했다. - 임시 위반 코드로 신규 ArchUnit 규칙 실패를 확인한 뒤 제거했다.
- 임시
app-bootstrap -> sample-ticket의존으로 Gradle dependency verifier 실패를 확인한 뒤 제거했다. cd src && ./gradlew :app-bootstrap:test verifyCleanArchitectureDependencies,cd src && ./gradlew test를 실행해 로컬 검증을 마쳤다.
배운 점
wiki/concepts/로 promotable 후보
- multi-module Clean Architecture에서는 package 위치보다 module dependency direction이 1차 경계다.
sample-ticket은 template fixture/reference module로 유지하되, production module이 sample에 의존하지 못하도록 enforcement rule이 필요하다.
트러블슈팅
raw/errors/ 또는 wiki/projects/ 또는 관련 branch-note의 "마주친 문제" 섹션으로 promotable 후보
- Gradle wrapper가
~/.gradlelock 파일을 쓰려 하면서 sandbox 기본 실행에서는Read-only file system오류가 났다. 검증 명령은 승인된 escalated 실행으로 재수행했다. 상세: raw/errors/gradle-wrapper-readonly-cache-2026-05-28 - repo 내부
docs/superpowers/plans/2026-05-28-architecture-enforcement-rules.md는.gitignore의/docs규칙 때문에 git 변경 목록에 잡히지 않는다. 최종 wiki 기록은 raw/branch-notes/feature-architecture-enforcement-rules에 반영했다.
면접·포트폴리오로 옮길 만한 것
후보 표기만. daily-note에서
wiki/interview/또는wiki/portfolio/를 직접 만들지 않는다.
- Clean Architecture skeleton에서 module boundary를 문서가 아니라 Gradle/ArchUnit rule로 강제한 이유. 글감 raw note: raw/blog-topics/clean-architecture-boundary-enforcement-2026-05-28. 예상 질문 raw note: raw/interviews/clean-architecture-boundary-enforcement. 실제 로컬 검증 후
wiki/projects/ca-tmpl/clean-architecture-package-layout또는 별도 architecture enforcement canonical 문서로 승급 후보.
내일로 넘긴 것
- [feature-application-port-usecase-contract] architecture enforcement가 통과한 뒤
application/port/in,application/port/out, transaction runner, repository port 위치를 정리한다. - [feature-sample-removal-adoption-contract] architecture enforcement에 production module ->
sample-ticket금지 rule이 반영된 뒤 sample-off runtime isolation 구현 범위를 구체화한다.
잡담 / 회의 / 기타
- 오늘 daily-note는
feature-skeleton-package-blueprint-contract다음 개발 착수 범위를 제한하기 위한 계획이다.