[BE-02] common 공유 커널 순수성 규칙 (R4)

작업 내용 (설계 의도)

근거 TDD: ../TDD.md “FR-7 정적 검증 방법” R4 / ADR-002 / ADR-005

변경 사항

  • 공유 커널 domain.common어떤 도메인 패키지도 import하지 않음을 ArchUnit으로 강제한다(공유 커널 순수성).
  • 공유 커널이 특정 도메인에 의존하면 그 도메인 변경이 전 도메인에 전파되므로, common은 순수 공통 계약만 담아야 한다.
  • 신규 테스트 파일만 추가 — 프로덕션 코드 무변경. 베이스라인 위반 0건(common → 타 도메인 import 실측 0건).

위치

  • backend/src/test/kotlin/com/sportsapp/architecture/SharedKernelPurityRulesTest.kt (신규)
  • 기존 architecture/ 스타일(ArchUnit + @Test 규칙 홀더) 준수.

의존

  • 없음 (독립 — 새 파일만 생성)

다이어그램

처리 흐름

sequenceDiagram
    participant T as SharedKernelPurityRulesTest
    participant A as ArchUnit
    T->>A: noClasses().that().resideIn(domain.common)
    A-->>T: 타 도메인 import 0건 → PASS

클래스 의존

flowchart LR
    Test["SharedKernelPurityRulesTest"] --> ArchUnit["ArchUnit ClassFileImporter"]

테스트 케이스

  • domain.common이 booking·goods·ticketing 등 코어 도메인을 import하지 않으면 규칙이 통과한다 (베이스라인 0건)
  • domain.common이 notification·operator·mcp 등 지원/서브시스템 도메인을 import하지 않으면 규칙이 통과한다
  • (위반 시나리오) common이 domain.user를 import하면 규칙이 실패한다
  • common 하위(exceptions, security, storage) 전체가 규칙 스캔 대상에 포함된다 (엣지: 서브패키지 커버)