# evidence 268 — grpc-assembly-and-release-gate
# revision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916
# cwd: /shared/codebase/clean-architecture-backend-template
# command: bash /tmp/genf.sh
# ---- raw output ----
==== A. the assembly boundary: grpc-spring-boot-starter ====
-- files:
     src/grpc/grpc-spring-boot-starter/build.gradle
     src/grpc/grpc-spring-boot-starter/gradle.lockfile
     src/grpc/grpc-spring-boot-starter/src/main/java/dev/caskeleton/grpc/boot/GrpcPlatformAutoConfiguration.java
     src/grpc/grpc-spring-boot-starter/src/main/java/dev/caskeleton/grpc/boot/GrpcPlatformConfigurationException.java
     src/grpc/grpc-spring-boot-starter/src/main/java/dev/caskeleton/grpc/boot/GrpcPlatformProperties.java
     src/grpc/grpc-spring-boot-starter/src/main/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidator.java
     src/grpc/grpc-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
     src/grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java
-- AutoConfiguration.imports:
     dev.caskeleton.grpc.boot.GrpcPlatformAutoConfiguration
-- master gate:
     @Configuration(proxyBeanMethods = false)
     @ConditionalOnProperty(
         prefix = "ca-skeleton.grpc.platform",
         name = "enabled",
         havingValue = "true",
         matchIfMissing = false)
     @EnableConfigurationProperties(GrpcPlatformProperties.class)
     public class GrpcPlatformAutoConfiguration {
-- bean methods (count and names):
9
       public GrpcExecutorProfile grpcExecutorProfile(GrpcPlatformProperties properties) {
       public GrpcServerProfile grpcServerProfile(GrpcExecutorProfile executorProfile) {
       public GrpcAdmissionController grpcAdmissionController(GrpcExecutorProfile executorProfile) {
       public GrpcServiceHealthRegistry grpcServiceHealthRegistry() {
       public GrpcReflectionPolicy grpcReflectionPolicy(GrpcPlatformProperties properties) {
       public GrpcAdminExposurePolicy grpcAdminExposurePolicy() {
       public GrpcDrainPolicy grpcDrainPolicy() {
       public GrpcContextBinder grpcContextBinder() {
       public GrpcErrorMapper grpcErrorMapper() {
-- every reference to GrpcPlatformStartupValidator:
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:30:class GrpcPlatformStartupValidatorTest {
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:75:            GrpcPlatformStartupValidator.violations(
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:78:    GrpcPlatformStartupValidator.requireValid(
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:95:            GrpcPlatformStartupValidator.violations(
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:109:            GrpcPlatformStartupValidator.violations(
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:113:            GrpcPlatformStartupValidator.violations(
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:125:            GrpcPlatformStartupValidator.violations(
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:139:            GrpcPlatformStartupValidator.violations(
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:164:            GrpcPlatformStartupValidator.violations(
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:187:            GrpcPlatformStartupValidator.violations(
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:209:            GrpcPlatformStartupValidator.violations(
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:220:            GrpcPlatformStartupValidator.violations(
     grpc/grpc-spring-boot-starter/src/test/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidatorTest.java:235:                GrpcPlatformStartupValidator.requireValid(
     grpc/grpc-spring-boot-starter/src/main/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidator.java:29:public final class GrpcPlatformStartupValidator {
     grpc/grpc-spring-boot-starter/src/main/java/dev/caskeleton/grpc/boot/GrpcPlatformStartupValidator.java:31:  private GrpcPlatformStartupValidator() {}

==== B. release gate: who constructs the evidence it reads ====
-- GrpcReleaseEvidence construction sites:
     grpc/grpc-testkit/src/test/java/dev/caskeleton/grpc/release/GrpcStableReleaseGateTest.java:28:    return new GrpcReleaseEvidence(
     grpc/grpc-testkit/src/test/java/dev/caskeleton/grpc/release/GrpcStableReleaseGateTest.java:84:        new GrpcReleaseEvidence(
     grpc/grpc-testkit/src/test/java/dev/caskeleton/grpc/release/GrpcStableReleaseGateTest.java:103:        new GrpcReleaseEvidence(
     grpc/grpc-testkit/src/test/java/dev/caskeleton/grpc/release/GrpcStableReleaseGateTest.java:127:        new GrpcReleaseEvidence(
-- files referencing GrpcStableReleaseGate / GrpcCompatibilityMatrix:
     grpc/grpc-testkit/src/test/java/dev/caskeleton/grpc/release/GrpcStableReleaseGateTest.java
     grpc/grpc-testkit/src/main/java/dev/caskeleton/grpc/release/GrpcStableReleaseGate.java
     grpc/grpc-testkit/src/main/java/dev/caskeleton/grpc/release/GrpcCompatibilityMatrix.java
-- Gradle tasks registered anywhere under src/grpc*:
     (no output above == no verification task like messaging's verifyMessagingCertificationEvidence)
-- CI workflows naming grpc:
0
   of 28 workflow files
-- what ci-quality-gates.yml actually runs:
     50:        run: ./gradlew check verifyPublicPathSnapshot verifyDependencyLocks --warning-mode=fail --no-daemon --stacktrace
     58:        run: ./gradlew :adapter:inbound:graphql:graphqlStableTest --no-daemon --stacktrace
     61:        run: ./gradlew conditionalTransportQualification --no-daemon --stacktrace
     81:        run: ./gradlew :app-bootstrap:sampleOffTest verifyCleanArchitectureDependencies --no-daemon --stacktrace
     173:        run: ./gradlew quarantineTest --no-daemon

==== C. strict test lanes are never wired into check ====
217:    tasks.register(lane.name, Test) {
-- any 'check' dependsOn a lane:
   (no output above == lanes run only when named explicitly)
-- the four grpc lanes:
     15:    lane('grpcInProcessContractTest') {
     20:    lane('grpcNettyContractTest') {
     25:    lane('grpcFaultTest') {
     30:    lane('grpcPerformanceTest') {

==== D. compatibility matrix: code vs document ====
-- code:
       public static GrpcCompatibilityMatrix caSkeleton() {
         return new GrpcCompatibilityMatrix(
             Map.of(
                 "boot-managed-platform", Lane.CERTIFIED,
                 "proto3-explicit-optional", Lane.CERTIFIED,
                 "netty-shaded", Lane.CERTIFIED,
                 "netty-unshaded", Lane.COMPATIBILITY,
                 "upstream-grpc-java-override", Lane.COMPATIBILITY,
                 "protobuf-edition-2024", Lane.WATCH,
                 "protobuf-edition-2026", Lane.WATCH));
       }
-- document:
     ## Lanes
     
     | Lane | Grade | Failure blocks a release |
     | --- | --- | --- |
     | Boot-managed platform (Spring Boot 4.0.8 BOM) | Certified | Yes |
     | proto3 with explicit `optional` | Certified | Yes |
     | `grpc-netty-shaded` | Certified | Yes |
     | `grpc-netty` (unshaded) | Compatibility | No |
     | Upstream gRPC Java version override | Compatibility | No |
     | Protobuf Edition 2024 | Watch | No |
     | Protobuf Edition 2026 | Watch | No |
     
     ## Runtime baseline

==== E. types with no reference anywhere in the repository ====
   ReactiveGrpcClient                 totalRefs(incl. own file)=1
   ReactiveGrpcServerAdapter          totalRefs(incl. own file)=1
   GrpcDeadlineExceededException      totalRefs(incl. own file)=1
