--- kind: CONCEPT slug: grpc-core-api-c01 title: 게이트가 인자를 받지 않고 집합을 돌려주는 이유 topic: identity-and-value-contracts project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: concept:grpc-core-api-c01 evidenceCapturedOn: 2026-09-01 assets: - key: grpc-core-api-c01 file: ../../../final/evidence/rendered/grpc-core-api-c01.svg evidence: - ../../../final/evidence/raw/grpc-core-api-c01.txt source: - 원본 분석 절은 analysis/grpc/grpc-core-api.md#L105 이다. module: grpc-core-api --- # 게이트가 인자를 받지 않고 집합을 돌려주는 이유 `GrpcStableModuleCatalog`이 Stable 12와 Advanced 6을 상수로 든다. 그 위의 `GrpcStableBuildInvariant`는 인자를 받지 않는 판정 메서드와, 첫 위반이 아니라 위반 집합을 돌려주는 반환 형태를 갖는다. 둘 다 이유가 코드에 적혀 있다. ## 본문 `GrpcStableModuleCatalog` 이 Stable 12 와 Advanced 6 을 상수로 든다. 그 위에 놓인 판정 메서드 `GrpcStableBuildInvariant.advancedDependencyAllowed()` 는 인자를 받지 않는다. > "the answer does not vary by module, by capability or by environment. A method that could return true for some input would be the seam through which 'just this one Advanced type in the starter' arrives." ## GrpcStableModuleCatalog 참조 위치 :::evidence key="grpc-core-api-c01" alt="코드베이스에서 GrpcStableModuleCatalog 를 검색한 출력 14줄. 이 기록이 세는 참조가 그 출력에 그대로 보인다." caption="GrpcStableModuleCatalog 코드베이스 검색 — 14줄 · exit 0" zoom="true" ::: ## 첫 위반이 아니라 위반 집합을 돌려준다 누출을 던지지 않고 집합으로 돌려주는 이유도 적혀 있다 — 첫 하나만 보고하는 게이트는 넷을 지우는 일을 네 번의 대화로 만든다.