JAM 설계 문서
JAM(JHL Architecture Metrics)은 바이브코딩(AI Agent 기반 코딩) 산출물의 품질을 빌드 없이, 오프라인에서, 정적 스캔만으로 진단하는 단일 실행파일 도구입니다.
문서 목차
| 구분 | 문서 | 내용 |
|---|---|---|
| Pages | 공개 홈 | 설치, 다운로드, 빠른 시작, jam-lite/full 요약 |
| Pages | 개요 | 명령, 산출물, 종료 코드 |
| Pages | 지표와 점수 | metrics v14.5.0 세부 지표 목적·산출식, CPLX/ARCH/RES 종합 점수, 설정 오버라이드 |
| Pages | Lite / Full | 외부 CLI orchestration, 부분 component, 실패 분류 |
| Pages | CI/CD | PR gate, full gate, dist release workflow |
| Pages | E2E 평가 | 언어별 샘플 코퍼스와 full 측정 요약 |
| Pages | 전체 Reference | 01~17 설계 문서와 Metrics Spec 변경 이력을 HTML로 열람 |
| Agents | AGENTS.md | Codex/Claude 공통 작업 규칙, 릴리즈 메타데이터 동기화, 검증 순서 |
설계 문서 목차
| # | 문서 | 내용 |
|---|---|---|
| 01 | 비전과 범위 | 문제 정의, 목표/비목표, 핵심 제약 조건, 사용자 시나리오 |
| 02 | 메트릭 카탈로그 | 측정할 모든 메트릭의 정의, 연구 근거(논문), 계산 방법, 임계값 |
| 03 | 점수 모델 | 메트릭 → 점수 → 등급 변환 체계, 가중치, 정규화 방식 |
| 04 | 아키텍처 | Go 기반 내부 구조, 파이프라인, 파서 전략, 패키지 설계 |
| 05 | 언어 지원 전략 | 언어별 파싱/분석 방식, 경량 렉서/Go AST 경로, 지원 우선순위 |
| 06 | 출력 명세 | report.md / detail.csv / JSON / SARIF / diff 출력 정의, 파일:라인 지목 규칙 |
| 07 | CLI와 설정 | 명령행 인터페이스, 설정 파일(jam.yaml), 제외 규칙 |
| 08 | 구현 로드맵 | 마일스톤, 단계별 산출물, 검증 전략 |
| 09 | 샘플 출력 | 가상 프로젝트 스캔 시 예상되는 콘솔/report.md/detail.csv/JSON 산출물 예시 |
| 10 | 커버리지와 한계 | ISO 25010/OWASP 매핑으로 본 측정 범위, 원리적 한계, 보완 도구 |
| 11 | Metrics 버전 관리 | CLI와 독립적인 Metrics Spec SemVer, 레지스트리, 산출물 기록 규칙 |
| 12 | JAM Lite / Full 지표 세트 | jam-lite와 jam-full의 경계, 외부 CLI orchestration, 합성 점수 |
| 13 | E2E 샘플 평가 리포트 | 지원 언어별 best/stress 샘플 스캔 결과, jam-lite 한계, jam-full 보완 후보 |
| 14 | JAM Full E2E 평가 리포트 | test-cli/security-cli를 붙인 full E2E 결과, toolchain 실패와 보안 보완 효과 |
| 15 | 실제 프로젝트 JAM Full 평가 리포트 | sepilotd, gitops-console, jpad-web 실측 결과, 오탐/과대평가 판단, 보강 내역 |
| 16 | 독립 보안 라벨 검증 | OWASP Benchmark 고정 라벨 기준 Java SEC precision/recall/FPR/F1, 재현 계약과 다음 개선 게이트 |
| 17 | 보안 판정과 감사 증거 | scanner 후보→귀속 가능한 취약점 판정, 정책 게이트, 통제-증거 SHA-256 인덱스와 준수 주장 경계 |
| 18 | AX·AI 생산성 지표 설계 (제안) | AI 산출물 품질 tell·코드 수명(churn)·에이전트 친화 준비도(AX)의 측정 가능 지표 후보와 캘리브레이션 로드맵 |
핵심 설계 결정 요약
- 언어: Go, 단일 정적 바이너리, Windows/Linux/macOS 지원
- 파싱/분석: Go는
go/ast/go/parser, 그 외 지원 언어는internal/lang경량 프론트엔드를 기본으로 사용한다. 타입 내부 구조/DIT/god type/함수 내 taint가 필요한 일부 지표는internal/treesitter임베드 WASM+wazero 경로를 사용한다. - 동작 방식: 빌드/실행 불가 환경 가정. 소스 텍스트 + 경량 구문 정보 + (선택) 모듈 메타파일(
go.mod,package.json등)만 사용 - 출력: jam-lite는
jam-report.md+jam-detail.csv+jam-run.json, 옵션으로 JSON/SARIF.jam diff는 런 매니페스트의 정책/범위/완전성을 검증한 뒤 CSV를 비교한다. jam-full은 추가로jam-full-report.md+jam-full.json및 외부 test/security 리포트를 생성한다. assurance는 점수와 독립된security-verdict.json과control-evidence.json을 생성하며 준수 주장은 항상 false다 - 점수 철학:
jam-lite는 정적 코드 건강도,jam-full은jam-lite+test-cli+security-cli합성 점수. 절대 점수가 아닌 진단 + 근거 제시가 목적 - E2E와 외적 타당화: v0.46.0 기준 언어별 샘플 코퍼스는 13-e2e-sample-evaluation.md와
../testdata/e2e-corpus.yaml에 exact score로 고정한다..github/workflows/e2e-corpus.yml이 4개 cache shard에서 실제 clone/scan과 score·integrity·provenance·산출물 계약을 검증한다. 이 16종은regressionpartition이다. 별도의 독립 보안 라벨 검증은 OWASP Benchmark 1,001개 지원 사례를validation으로 관리해 TP/FN/TN/FP와 precision/recall/FPR/F1을 측정한다 - 배포: GitHub Pages는
docs/정적 사이트를 배포하고,v*태그 릴리스는jhl-labs/dist의jam-v*공개 release에 OS/아키텍처별 바이너리와SHA256SUMS를 게시한다