--- kind: CASE slug: grpc-core-api-f01 title: 정책 목록의 가장 강한 성질을 이 저장소에서는 쓸 수 없다 topic: runtime-reachability-and-composition project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: case:grpc-core-api-f01 evidenceCapturedOn: 2026-09-01 assets: - key: grpc-core-api-f01 file: ../../../final/evidence/rendered/grpc-core-api-f01.svg evidence: - ../../../final/evidence/raw/grpc-core-api-f01.txt source: - 원본 분석 절은 final/document.md#a20-grpc-core-api#L140 이다. module: grpc-core-api priority: P3 --- # 정책 목록의 가장 강한 성질을 이 저장소에서는 쓸 수 없다 withDescriptorMethods 를 부르는 곳은 이 리프의 테스트 두 줄뿐이다. GrpcMethodPolicyCatalog.builder() 를 부르는 곳은 저장소 전체에서 전부 테스트다. ## 문제 withDescriptorMethods 를 부르는 곳은 이 리프의 테스트 두 줄뿐이다. GrpcMethodPolicyCatalog.builder() 를 부르는 곳은 저장소 전체에서 전부 테스트다. ## 결론 그리고 그중 어느 것도 서술자 집합을 선언하지 않는다(위 두 줄 제외). 자바독이 그 상태를 미리 서술한다 — 서술자가 없으면 "the catalog is materially weaker … there is nothing to compare a policy's method name against." 그리고 서술자가 없는 이유는 옆 리프에 있다. grpc-codegen 이 서술자 산출물을 정의하지만 저장소에 protobuf 플러그인이 없어 protoc 이 돌지 않는다. 즉 이름 변경을 잡는 성질은 코드 생성 레인이 켜지기 전까지 성립할 수 없다. 기록하는 이유는 이것이 이 클래스가 존재하는 첫 번째 이유로 적혀 있기 때문이다. 수정은 코드 생성 레인이 생길 때 그 서술자를 목록 조립에 연결하는 것이고, 그때까지는 자바독이 그 조건을 명시하는 편이 낫다. ## 검증 환경 OpenJDK : 21.0.12 java -version 으로 확인 Gradle : 9.0.0 src/gradle/wrapper/gradle-wrapper.properties 의 distributionUrl 로 확인 확인 방식 : withDescriptorMethods 와 builder() 호출처 전수 검색으로 production 호출 유무 확인 소스 수정 : x ## 재현 조건 원문은 final/document.md#a20-grpc-core-api#L140 에 있다. ## 본문 `withDescriptorMethods` 를 부르는 곳은 이 리프의 테스트 두 줄뿐이다. ``` grpc-core-api/src/test/.../GrpcMethodPolicyCatalogTest.java:145 grpc-core-api/src/test/.../GrpcMethodPolicyCatalogTest.java:175 ``` `GrpcMethodPolicyCatalog.builder()` 를 부르는 곳은 저장소 전체에서 전부 테스트이고, 그중 어느 것도 서술자 집합을 선언하지 않는다(위 두 줄 제외). ## withDescriptorMethods 를 부르는 곳 :::evidence key="grpc-core-api-f01" alt="분석 문서 final/document.md#a20-grpc-core-api 에서 이 기록의 근거 절을 그대로 잘라낸 15줄. 코드베이스를 측정한 것이 아니라 원본 판정이 무엇을 적었는지를 보여 준다." caption="final/document.md#a20-grpc-core-api 발췌 — 15줄" zoom="true" ::: ## 자바독이 그 상태를 미리 서술한다 서술자가 없으면 "the catalog is materially weaker … there is nothing to compare a policy's method name against." ## 서술자가 없는 이유는 옆 리프에 있다 `grpc-codegen` 이 서술자 산출물을 정의하지만 저장소에 protobuf 플러그인이 없어 `protoc` 이 돌지 않는다. 즉 이름 변경을 잡는 성질은 코드 생성 레인이 켜지기 전까지 성립할 수 없다. ## 기록하는 이유 이것이 이 클래스가 존재하는 첫 번째 이유로 적혀 있다. 수정은 코드 생성 레인이 생길 때 그 서술자를 목록 조립에 연결하는 것이고, 그때까지는 자바독이 그 조건을 명시하는 편이 낫다. P3. ## 확인하지 못한 것 서술자 대조 경로를 실제 스키마로 돌려 보지 않았다. 저장소에 컴파일된 서술자가 없다.