Evaluation

E2E 평가

프로젝트 점수 회귀와 독립 보안 정답지 검증을 분리해 jam-lite와 jam-full의 측정 계약을 확인합니다.

평가 범위

언어별 best/stress 샘플 16개를 고정 SHA로 clone하고, Metrics v13 exact score와 integrity를 4개 cache shard에서 검증합니다. 현재 세트는 독립 validation이 아닌 partition=regression이며, jam-full 과거 평가는 test/security 보강 효과를 확인합니다. 별도 OWASP Java 세트는 partition=validation으로 TP/FN/TN/FP를 측정합니다.

Independent security validation

ScopePrecisionRecallFPRF1
OWASP CWE-78/89/327 micro, 1,001 cases52.84%67.05%66.81%59.10%

이 값은 프로젝트 등급과 다른 case-level 분류 기준선입니다. CWE-78/89는 recall이 높지만 FPR도 약 88%이고, CWE-327은 현재 Java 패턴 범위에서 recall 0%여서 다음 analyzer 개선 우선순위로 기록했습니다.

Lite regression gate

항목계약검증
매니페스트testdata/e2e-corpus.yaml v2profile, regression partition, SHA, exact score/grade, expected integrity
실행4개 cache shardclone → detached pinned SHA → jam scan --strict
산출물5종Markdown, 26열 CSV, result JSON v3, run manifest v2, SARIF 2.1.0
증적jam/e2e-summary@1profile/partition, production CLOC, coverage, finding/exclusion 수

Full E2E 요약 (과거 v0.10.6 평가)

항목결과해석
샘플 수16개Go, TS, JS, Python, Java, C#, Rust, C, C++ best/stress
jam-full.json16/16측정 결과 문서는 모든 샘플에서 생성
test/report.json6/16toolchain/프로젝트 테스트 증적이 있는 경우만 생성
security-report.json14/16Java 2개는 Maven Central 429로 측정 불가
exit 분포0: 3, 1: 11, 4: 2대부분은 품질 실패, Java SCA는 인프라 실패

검증된 보완 효과

  • 당시 metrics 기준으로 jam-lite A였던 보안 취약 샘플 일부가 jam-full security에서 D/F로 내려갔습니다.
  • test evidence가 없는 프로젝트는 exit 4가 아니라 quality failure(exit 1)로 분류되도록 보정했습니다.
  • medium/low-only 보안 finding은 policy failure와 점수 의미를 분리하기 위해 security score 하한을 조정했습니다.
  • partial full 모드로 test와 security를 독립 검증할 수 있게 했습니다.

남은 리스크

외부 네트워크

SCA 도구가 Maven Central 같은 원격 저장소 rate limit에 걸리면 security component가 infrastructure failure가 됩니다. CI에서는 캐시와 offline profile이 필요합니다.

테스트 증적

C/C++/C#/일부 JS 샘플은 test artifact 생성 경로가 프로젝트별로 달라 test-cli 설정 보강이 필요합니다. JAM은 이를 품질 실패로 기록합니다.