{ "assetKey": "a-release-gate-with-no-evidence-producer", "kind": "terminal", "command": "E=grpc/grpc-testkit/src/main/java/dev/caskeleton/grpc/release/GrpcReleaseEvidence.java\nT=grpc/grpc-testkit/src/test/java/dev/caskeleton/grpc/release/GrpcStableReleaseGateTest.java\necho '# 게이트가 읽는 증거의 다섯 성분 — 전부 호출자가 넘긴다'\nsed -n '16,21p' $E\necho\necho '# 그 객체를 만드는 지점'\ngrep -rn 'new GrpcReleaseEvidence(' --include=*.java . | sed 's|.*/src/||'\necho\necho -n '# 그 테스트에 붙은 @Tag: '\ngrep -c '@Tag' $T\nD=$(mktemp)\n./gradlew check --dry-run --offline -q 2>/dev/null > $D\necho -n '# 그래서 check 그래프 안에 있다: '\ngrep -cE '^:grpc:grpc-testkit:test ' $D\necho '# 그 check 를 도는 워크플로'\ngrep -n 'gradlew check' ../.github/workflows/*.yml | sed 's|.*/\\.github|.github|'\necho\necho '# 등급 넷에 대응하는 증거 레인은 컨벤션이 등록해 둔다'\n./gradlew :grpc:grpc-testkit:tasks --group verification --offline -q 2>/dev/null | grep '^grpc[A-Z]' | cut -c1-60\necho -n '# 그중 check 그래프에 들어 있는 것: '\ngrep -cE 'grpcInProcess|grpcNetty|grpcFault|grpcPerformance' $D\necho -n '# 28개 워크플로 중 grpc 를 담은 것: '\ngrep -rli grpc ../.github/workflows/ | wc -l\necho\necho '# 대비 — messaging 은 레인이 파일을 쓰고 태스크가 양방향 대조하고 CI 가 돌린다'\ngrep -rn 'broker-certification-evidence' --include=*.java --include=*.gradle . | sed 's|.*/src/||' | head -3\nsed -n '82,84p' messaging/messaging-kafka/build.gradle\nsed -n '48,52p' ../.github/workflows/messaging-certification.yml\n", "cwd": "/shared/codebase/clean-architecture-backend-template/src", "exitCode": 0, "executedAt": "2026-09-02T01:56:34+00:00", "sourceRevision": "21234e38cdb9a926cbc92bb97a2aee2e4a7d2916", "raw": "evidence/raw/a-release-gate-with-no-evidence-producer.txt", "svg": "evidence/rendered/a-release-gate-with-no-evidence-producer.svg", "rawSha256": "7b08d9416494c8593a17c26b307380bee816c41bcaf2e5e1fd6110cf0d17d98e", "lines": 39, "redaction": "none — 출력에 자격증명이 없다" }