--- kind: CONCEPT slug: messaging-schema-json-c07 title: 이 리프에서 발견된 문제가 상위 리프의 타입을 만들어냈다 topic: state-machines-and-ownership project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: concept:messaging-schema-json-c07 evidenceCapturedOn: 2026-09-01 assets: - key: messaging-schema-json-c07 file: ../../../final/evidence/rendered/messaging-schema-json-c07.svg evidence: - ../../../final/evidence/raw/messaging-schema-json-c07.txt source: - 원본 분석 절은 analysis/messaging/messaging-schema-json.md#L396 이다. module: messaging-schema-json --- # 이 리프에서 발견된 문제가 상위 리프의 타입을 만들어냈다 `JsonContractRegistryTest` 클래스 javadoc이 이 codec에서 만난 두 결함을 남겼고, 둘 다 `messaging-schema-api`가 소유하는 타입으로 고쳐졌다. ## 관계 - **실패 코드는 운영자의 다음 행동이 갈리는 지점마다 나눈다** 같은 분석 리프에서 끌어낸 규칙이다. ## 본문 `JsonContractRegistryTest` 클래스 javadoc이 이 codec에서 만난 두 결함을 남겼다. > "Two defects met in this codec. The registry was keyed on message type alone, so a message labelled v999 was decoded with the v1 class and kept its v999 label — the compatibility gate and the audit record then both described a contract that was never registered. And the size limit was applied to the finished byte array, which reports an oversized payload rather than preventing one." ## JsonContractRegistryTest 참조 위치 :::evidence key="messaging-schema-json-c07" alt="코드베이스에서 JsonContractRegistryTest 를 검색한 출력 1줄. 이 기록이 세는 참조가 그 출력에 그대로 보인다." caption="JsonContractRegistryTest 코드베이스 검색 — 1줄 · exit 0" zoom="true" ::: ## 아래에서 발견된 문제가 위의 타입이 되었다 두 결함 다 `messaging-schema-api`가 소유하는 타입(`MessageContractKey`, `BoundedByteSink`)으로 고쳐졌다. 즉 **이 leaf에서 발견된 문제가 상위 leaf의 타입을 만들어냈다.** ## 같은 configuration이 담은 다른 이력 `MessagingCoreAutoConfiguration:420-427`의 주석은 이 codec이 아니라 publisher 조립 결함(MSG-INT-003)을 기록하는데, 같은 configuration 안에 있으므로 조립 이력의 맥락으로 참조할 가치가 있다 — "no configuration produced one … the starter did not depend on that leaf."