adapter-inbound-grpc module inventory / denominator revision=a24ece9cf797f7ea647e33bf846b115208ed1ba5 generatedAt=2026-08-30T08:12:13+00:00 === SOURCE SETS === $ git ls-files adapter/inbound/grpc | sed 's|adapter/inbound/grpc/||' | cut -d/ -f1-2 | sort | uniq -c | sort -rn 8 src/main 6 src/test 1 gradle.lockfile 1 build.gradle 1 README.md 1 CLAUDE.md exit=0 $ git ls-files adapter/inbound/grpc | wc -l 18 exit=0 === LOC === $ git ls-files 'adapter/inbound/grpc/src/main/**/*.java' | xargs wc -l | tail -1 602 total exit=0 $ git ls-files 'adapter/inbound/grpc/src/test/**/*.java' | xargs wc -l | tail -1 782 total exit=0 $ git ls-files adapter/inbound/grpc | grep -v '\.java$' adapter/inbound/grpc/CLAUDE.md adapter/inbound/grpc/README.md adapter/inbound/grpc/build.gradle adapter/inbound/grpc/gradle.lockfile exit=0 === MAIN PACKAGE TREE === $ git ls-files 'adapter/inbound/grpc/src/main/**/*.java' | sed 's|.*/grpc/||;s|/[^/]*$||' | sort | uniq -c | sort -rn 1 GrpcStatusMapper.java 1 GrpcServerRunner.java 1 GrpcServerProperties.java 1 GrpcServerConfig.java 1 GrpcExceptionHandlingInterceptor.java 1 GrpcAuthenticationPolicy.java 1 GrpcAuthenticationInterceptor.java 1 ApiErrorException.java exit=0 === TEST PACKAGE TREE === $ git ls-files 'adapter/inbound/grpc/src/test/**/*.java' | sed 's|.*/grpc/||;s|/[^/]*$||' | sort | uniq -c | sort -rn 1 GrpcStatusMapperTest.java 1 GrpcServerRunnerBootTest.java 1 GrpcSafeActivationTest.java 1 GrpcP1BoundaryWireTest.java 1 GrpcExceptionHandlingInterceptorTest.java 1 ApiErrorExceptionTest.java exit=0 === BUILD === $ cat adapter/inbound/grpc/build.gradle // Driving adapter: gRPC API (skeleton machinery, transport-only). // // A SmartLifecycle bean (GrpcServerRunner) owns the io.grpc Netty server, so this module depends on // NO third-party grpc-spring-boot starter (no Spring Boot version coupling). The skeleton compiles // NO protobuf: there is no `com.google.protobuf` plugin and no `.proto` here — health + reflection // come from grpc-services at runtime, and a future consuming feature owns its `.proto`/services. // // io.grpc:* / protobuf versions are NOT managed by the Spring Boot BOM, and this repo has no version // catalog, so the grpc-bom + protobuf-bom platforms are imported HERE (module scope) using the root // `ext.grpcVersion` / `ext.protobufVersion` SSOT — this keeps the strict-locking blast radius to // this module (the shared root dependencyManagement block stays io.grpc-free). dependencyManagement { imports { mavenBom "io.grpc:grpc-bom:${grpcVersion}" mavenBom "com.google.protobuf:protobuf-bom:${protobufVersion}" } } dependencies { implementation project(':shared-contract') implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.springframework.boot:spring-boot-starter-validation' // Keep the direct versions in the outgoing project metadata as well as importing the BOM. // Spring dependency-management constraints are local to this leaf and are not propagated to // a consumer's custom qualification source set. implementation "io.grpc:grpc-netty-shaded:${grpcVersion}" implementation "io.grpc:grpc-services:${grpcVersion}" // health + reflection annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' // The boot test directly builds generated health/reflection protobuf messages. grpc-services // does not expose protobuf-java on its compile API, so keep the narrower test-only declaration. testImplementation "io.grpc:grpc-protobuf:${grpcVersion}" // Wire qualification directly uses ClientCalls/ServerCalls/MetadataUtils without generated stubs. testImplementation "io.grpc:grpc-stub:${grpcVersion}" } registerStrictQualificationTest( name: 'grpcTransportQualificationTest', sourceSet: sourceSets.test, requiredClasses: [ 'dev.caskeleton.adapter.inbound.grpc.GrpcSafeActivationTest', 'dev.caskeleton.adapter.inbound.grpc.GrpcP1BoundaryWireTest' ], description: 'Runs exact no-skip gRPC conditional transport wire evidence.') exit=0