Reference

15. 실제 프로젝트 JAM Full 평가 리포트

sepilotd, gitops-console, jpad-web 실측 결과, 오탐/과대평가 판단, 보강 내역

Source: docs/15-real-project-jam-full-evaluation.md

15. 실제 프로젝트 JAM Full 평가 리포트

평가일: 2026-06-14 · 도구: jam v0.24.0 개발 빌드 · 지표 세트: jam-full

이 문서는 사용자가 지정한 실제 프로젝트 3개를 수정하지 않고 /tmp/jam-real-sourcecov에 산출물을 생성해 측정한 결과다.

대상:

실행:

go build -o /tmp/jam-current ./cmd/jam
go build -o /tmp/test-cli-current ~/git/test-cli/cmd/test-cli
/tmp/security-cli-current tools install
PATH="$PWD/.security-cli/tools/trivy:$PWD/.security-cli/tools/grype:$PWD/.security-cli/tools/osv-scanner:$PWD/.security-cli/tools/gitleaks:$PWD/.security-cli/tools/syft:$PATH"

/tmp/jam-current full "$project" \
  --out "/tmp/jam-real-sourcecov/$(basename "$project")" \
  --test-cli /tmp/test-cli-current \
  --security-cli /tmp/security-cli-current \
  --full-timeout 600s

security-cli는 Trivy/Gitleaks/OSV-Scanner/Syft/Grype가 필요하다. 이번 실행은 대상 프로젝트를 수정하지 않고 jam repo의 .security-cli/tools에 설치한 scanner PATH만 주입했다.

1. 결과 요약

프로젝트exitFullLiteTestTest statusSecuritySecurity status핵심 판단
sepilotd156 D8750failed0failed100% coverage가 .md/.yml/.json 파일만 덮는 과대평가를 TEST-SOURCE-COV cap으로 보정. 보안은 critical/high/SCA/secret 다수.
gitops-console158 D9150failed0failed테스트 1건 실패, coverage tail 45점. 보안은 critical IaC, high SCA/secret 다수.
jpad-web161 D8440failed34failedcoverage-only report가 no_test_evidence로 분류됨. 보안은 IaC 중심 policy failure.

2. 개선 전 이상 측정

이번 실제 측정에서 확인한 이상 신호:

프로젝트이상 신호판단반영
sepilotd3 tests, 100% line coverage, coverage files 48 md + 1 yml + 1 jsonsmoke test가 문서/설정 coverage를 소스 coverage처럼 보이게 함TEST-SOURCE-COV 추가, 큰 coverable surface에서 source line 비율 20% 미만이면 test score 최대 50 및 quality failure
sepilotd3 tests over 7,075 coverable lines큰 코드 표면에 smoke test 3개가 과대평가됨TEST-DENSITY 추가, coverable lines 1K 이상에서 density 20점 미만이면 test score 최대 70 및 quality failure
jpad-web0 tests, 92.6% line coverage, test component OKcoverage-only evidence를 테스트 성공처럼 해석실행 테스트 0개면 no_test_evidence, 최대 40점
모든 대상명시 /tmp/security-cli-current 실행 시 scanner tool home 미발견JAM 문제가 아니라 외부 CLI tool home 전달 부족~/git/security-cli fallback에서 SECURITY_CLI_HOME 자동 설정
sepilotd, gitops-consolereport에 CVSS가 있어도 SEC-CVSS=not_assessedCVSS provider nested map 파싱 누락recursive CVSS score extraction 추가

3. 하위 지표 관찰

3.1 Test

프로젝트TEST-PASSLINEBRANCHEVIDENCETAILDENSITYSOURCESKIPDURATION판단
sepilotd100100n/a1001008 failed0 failed100100100% line coverage지만 coverable line 7,075줄 전부가 문서/설정 파일이다.
gitops-console99 failed747410045100100100100테스트 수와 branch coverage는 충분하지만 실패 1건과 coverage tail이 실제 품질 리스크.
jpad-web0 failed93n/a50 failed790 failed100n/an/a실행 테스트가 없으므로 coverage-only evidence를 production readiness로 인정하면 안 됨.

coverage 파일 구성:

프로젝트source coverage filesnon-source coverage files판단
sepilotd0 files / 0 lines50 files / 7,075 lines (md, yml, json)source coverage mix 0%, test score 최대 50
gitops-console65 .ts files / 13,921 lines0source coverage mix 100%
jpad-web55 .ts files / 6,527 lines0source coverage mix 100%

3.2 Security

프로젝트FindingsPolicy failSeverityCategoryCVSSCWE판단
sepilotd9337critical 3, high 34iac 15, sca 72, secret 6max 9.824 tags, 6 high-risk실제 게이트 실패로 보는 것이 타당. secret과 critical SCA는 오탐이어도 수동 triage 필요.
gitops-console10342critical 1, high 41iac 35, sca 62, secret 6max 10.059 tags, 15 high-riskpolicy failure와 CVSS/CWE가 일치해 강한 실패 신호.
jpad-web191high 1, medium 9, low 9iac 19n/an/aIaC rule 중심. ConfigMap with secrets는 실제 환경 변수/secret 분리 여부 확인 필요.

4. 오탐/과소탐 판단

오탐 후보:

과소탐/부족 후보:

5. 반영된 보강

6. 남은 후속 후보