--- kind: CONCEPT slug: messaging-schema-api-c04 title: 진화 검사 경로는 이 저장소에서 실행되지 않는다 topic: schema-and-wire-models project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: concept:messaging-schema-api-c04 evidenceCapturedOn: 2026-09-01 assets: - key: messaging-schema-api-c04 file: ../../../final/evidence/rendered/messaging-schema-api-c04.svg evidence: - ../../../final/evidence/raw/messaging-schema-api-c04.txt source: - 원본 분석 절은 analysis/messaging/messaging-schema-api.md#L255 이다. module: messaging-schema-api --- # 진화 검사 경로는 이 저장소에서 실행되지 않는다 1. 경계 있는 인코딩 — codec이 BoundedByteSink.of(maxBytes, code)를 만들고 → 포맷 라이브러리가 sink에 쓰고 → 한도를 넘는 write에서 MessageTooLargeException → 아니면 sink.toByteArray()로 EncodedMessage 조립 2. ## 관계 - **port 계약은 동시성 요구를 적는다** 같은 분석 리프에서 끌어낸 규칙이다. - **도달성 판정은 단어가 아니라 import로 확인한다** 같은 분석 리프에서 끌어낸 규칙이다. ## 본문 세 경로가 있다. 1. **경계 있는 인코딩** — codec이 `BoundedByteSink.of(maxBytes, code)`를 만들고 → 포맷 라이브러리가 sink에 쓰고 → 한도를 넘는 write에서 `MessageTooLargeException` → 아니면 `sink.toByteArray()`로 `EncodedMessage` 조립 2. **계약 조회** — `new MessageContractKey(type, version)` → registry lookup → 미스면 "타입 미등록" vs "버전 미등록" 구분 3. **진화 검사** — `registry.compatibilityOf(subject)` → `versionsToCheck` → (포맷별 게이트가 실제 비교) ## MessageTooLargeException 참조 위치 :::evidence key="messaging-schema-api-c04" alt="코드베이스에서 MessageTooLargeException 를 검색한 출력 13줄. 이 기록이 세는 참조가 그 출력에 그대로 보인다." caption="MessageTooLargeException 코드베이스 검색 — 13줄 · exit 0" zoom="true" ::: ## 셋째만 실행되지 않는다 3번은 이 저장소에서 실행되지 않는다(§12.1).