Reference

JAM Metrics Spec 변경 이력

Metrics Spec SemVer 변경 이력과 구현/점수 영향 기록

Source: docs/metrics-changelog.md

JAM Metrics Spec 변경 이력

규칙: 11-metrics-versioning.md. 레지스트리 (internal/metrics/) 를 바꾸는 모든 PR 은 이 파일을 함께 갱신해야 한다.

v14.5.0 (2026-07-31)

MINOR — docs/18 P4 완결. 5개 지표 전부 info 캘리브레이션(감점 0) 또는 opt-in이라 16종 lite 코퍼스 점수·등급 불변.

v14.4.0 (2026-07-31)

MINOR — docs/18의 P2 구현. CPLX-06의 opt-in churn 인프라(churn.enabled + git 저장소, 미설정 시 무발화)를 공유하며 모두 info·점수 중립이라 16종 lite 코퍼스 점수·등급 불변(코퍼스는 churn 미설정).

v14.3.0 (2026-07-31)

MINOR — docs/18 AX·AI 생산성 설계의 P1 구현. 모두 점수 중립이라 16종 lite 코퍼스 점수·등급 불변.

v14.2.0 (2026-07-31)

MINOR — 커버리지 격차 4종을 전부 점수 중립 캘리브레이션으로 보강했다. 신규/확장 신호는 모두 info 등급(부채 0)이거나 점수 모집단 밖이며, 16종 lite 코퍼스 점수·등급 전부 불변이다. 가중치 있는 정식 승격(예: DEP 카테고리 신설)은 캘리브레이션 데이터 축적 후 별도 MAJOR로 다룬다.

v14.1.0 (2026-07-31)

MINOR — 신규 지표 2종(모두 점수 중립)과 판정 견고성 수리. 16종 lite 코퍼스 점수·등급 전부 불변: RES-04는 info 등급 캘리브레이션(감점 0), HYG-13은 테스트 파일 전용이라 v13 production 모집단 규칙상 항상 점수 밖이다.

v14.0.0 (2026-07-14)

MAJOR — jam-full의 test-cli/security-cli/spec-cli v0.2 계약을 계측 계약으로 승격했다. jam-lite 산식과 16종 lite 코퍼스 기준선은 변하지 않지만, report@2를 쓰는 full 테스트 점수와 불완전 보안 스캔의 판정이 달라지므로 v13 full 기준선과 직접 비교하지 않는다.

v13.0.0 (2026-07-14)

MAJOR — 점수의 측정 모집단과 분모를 명시적으로 정규화했다. 동일 소스를 다시 측정해도 v12 계열과 점수를 직접 비교할 수 없으며, v13 기준선을 새로 만들어야 한다.

v12.3.0 (2026-07-11)

레이어 정책을 import 그래프 edge에 검사. 위반 edge당 45분, confidence high. 규칙 미선언 시 미측정(기존 프로젝트 점수 불변). (docs/02 ARCH-09, docs/07 §3)

리포트(요구사항별 verified/failed/unverified)를 합성. failed는 quality gate. jam이 기능 적합성을 측정하는 것이 아니라 외부 결과를 합산함을 리포트에 "Functional (external)"로 명시. (docs/10 §1, docs/12 §3.2c)

v12.2.0 (2026-07-03)

MINOR — HYG-12 정적 검사기 억제(blanket static-check suppression) 1종 추가. 새 메트릭만 추가하고 산식/임계/가중치/캡은 불변이라 기존 지표 점수 불변. 외부 도구 없이 자체 구현한 라인 스캔이며 다언어 공통. 코퍼스 16종 점수 전부 불변(무범위 억제가 코퍼스에 0건이라 완전 dormant).

v12.1.0 (2026-07-03)

MINOR — 바이브코딩 위생 지표 4종 추가(HYG-08~11). 새 메트릭만 추가하고 산식/임계/가중치/캡은 바꾸지 않으므로 기존 지표 점수는 불변; 카테고리/종합 점수는 새 HYG finding이 얹히는 곳에서만 변할 수 있다. 모두 외부 도구/라이브러리 없이 자체 구현한 라인/토큰 스캔이며 빌드 없이 여러 언어에 공통 적용된다. 코퍼스 16종 점수 전부 불변(검증: best/stress 12종 로컬 클론 직접 스캔 — go-cleanhttp 100/A, ts-is 97/A, itsdangerous 98/A, hyperfine 92/A, stateless 92/A, gs-rest 100/A, fmt 95/A, linenoise 84/B, how2heap 94/A, rustlings 87/B, pygoat 79/C, nodegoat 79/C — 각 anchor와 정확히 일치; 나머지 4종은 SEC critical로 C 고정이라 HYG가 등급을 바꿀 수 없음).

v12.0.0 (2026-06-15)

MAJOR — CPLX 극단 복잡도 상한(docs/03 §2.10) 신규 점수 규칙. SEC(§2.6)·ARCH(§2.8)·SIZE(§2.9)에 이은 4번째 카테고리 ceiling. 코퍼스 16종 점수 불변; god component를 가진 실 프로젝트만 정정.

v11.1.0 (2026-06-15)

MINOR — findings 리뷰 후속 2건. 코퍼스 16종 점수 불변.

v11.0.0 (2026-06-14)

MAJOR — findings 리뷰에서 발견한 과탐(FP)/누락(FN)을 수정. best 프로젝트 2개의 등급이 FP 제거로 정정됨(ts-is B→A, itsdangerous 90→98/A). stress 앱은 실코드 취약점이 그대로 cap.

v10.1.0 (2026-06-14)

MINOR — 언어 커버리지 audit에서 발견한 분석 누락/과탐 2건을 discover 단계에서 수정. 점수 공식·임계·가중치·상한 불변, 코퍼스 16종 점수 불변.

v10.0.0 (2026-06-14)

MAJOR — god-type 극단 상한(docs/03 §2.9) 신규 점수 규칙. §2.8(ARCH 결합)과 동급. SIZE-04 god type을 점수에 반영하되, 오탐 없이.

v9.0.0 (2026-06-14)

MAJOR — ARCH 결합도 집중 상한(docs/03 §2.8) 신규 점수 규칙 추가(v7.0.0 SEC 상한·v8.0.0 집중 가드와 동급의 score-affecting 규칙). 더불어 리포트에 아키텍처 원시 신호를 노출.

v8.10.0 (2026-06-14)

MINOR — TypeScript/JavaScript용 함수 내(intra-procedural) taint 분석을 SEC-07(경로 조작, CWE-22)·SEC-08(SSRF, CWE-918)에 추가. 소스→싱크 데이터플로우(표준 SAST 기법). 코퍼스 16종 점수 불변.

v8.9.0 (2026-06-14)

MINOR — 타입 내부 지표를 C++·Rust로 확장. SIZE-04(God Type)은 두 언어 모두, ARCH-08(DIT)은 C++(Rust는 상속 없음 → N/A). 코퍼스 16종 점수 불변.

v8.8.0 (2026-06-14)

MINOR — 타입 내부 지표(SIZE-04 God Type, ARCH-08 DIT)를 C#으로 확장. C# 프로젝트만 신규 findings가 생기고, 비-C# 코퍼스 15종 점수는 불변.

v8.5.0 (2026-06-14)

MINOR — jam-full test scoring에 TEST-SOURCE-COV를 추가하고 test 하위 지표 가중치를 재조정했다. line coverage가 높아도 coverage file이 문서/설정/data뿐이면 테스트 근거로 인정하지 않는다.

v8.7.0 (2026-06-14)

MINOR — ARCH-08 깊은 상속(DIT, Chidamber & Kemerer 1994) 추가. import 그래프·응집도에 이어 아키텍처의 *상속* 차원을 측정한다. 코퍼스 점수 불변(실 프로젝트엔 깊은 내부 상속이 드물어 0건).

v8.6.0 (2026-06-14)

MINOR — SIZE-04(God Type)을 Java·Python으로 확장(Go·TypeScript에 이어). 메서드 ≥30 클래스를 tree-sitter로 잡는다. 코퍼스 점수 불변(Java/Python 샘플에 god-class 없음).

v8.4.0 (2026-06-14)

MINOR — SIZE-04(God Type)을 TypeScript로 확장. import 그래프 ARCH 메트릭과 LCOM4 응집도가 *못 잡는* 대형 TS 클래스(중앙 필드로 연결돼 LCOM상 응집적인 god-class)를 크기 기준으로 잡는다. tree-sitter 기반(v8.3.0 인프라 재사용). 코퍼스 16종 점수 불변(유일 TS 샘플 sindresorhus/is에 god-class 없음).

v8.3.0 (2026-06-14)

MINOR — ARCH-07(낮은 응집도 LCOM4)을 TypeScript로 일반화. v8.2.0의 go/ast 전용 구현을 언어 중립 평가기로 분리하고 tree-sitter 백엔드를 추가 — ARCH가 비-Go 언어에서도 "타입 내부 구조"를 본다. 새 finding 가능하나 코퍼스 16종 + gitops/sepilotd 점수·등급 전부 불변(보수적 게이트, 실 TS 클래스는 LCOM-응집적).

v8.2.0 (2026-06-14)

MINOR — ARCH가 import 그래프(물리적 결합) 한 관점만 보던 한계를 넘어, 타입 내부 구조를 보는 첫 메트릭 추가. 새 finding 가능하나 코퍼스 16종 + gitops/sepilotd 점수·등급 전부 불변(Go 전용 + 실 Go 코드 오탐 0).

v8.1.0 (2026-06-14)

MINOR — SEC 탐지 범위(recall) 확장. 대형 웹앱 측정에서 JAM이 룰 자체가 없어 못 보던 보안 클래스(SSRF·XSS·경로조작)를 실증 확인하고 메트릭을 추가. 새 finding이 생길 수 있으나 코퍼스 16종 점수·등급 전부 불변(정밀도 게이트; SEC recall finding은 이미 캡된 취약앱에만 떨어짐). v6.1.0과 동일 패턴.

v8.0.0 (2026-06-14)

MAJOR — SIG 모델 risk-profile 진단 + 벤치마크 도출 집중 가드 (docs/03 §2.7). 새 점수 규칙(가드)이 추가되므로 규약상 MAJOR. 단 현 코퍼스 16종 + gitops/sepilotd 점수·등급 전부 불변(가드 dormant — 밀도가 이미 포섭).

v7.0.0 (2026-06-13)

MAJOR — worst-case SEC 카테고리 상한 + 등급 캡 총점 클램프. 단일 치명 결함이 밀도 정규화에서 희석돼 "총점은 높은데 등급은 C" 가 되던 모순을 없앤다. 점수 모델 변경이므로 코퍼스 재핀.

v6.1.0 (2026-06-13)

MINOR — ARCH 카테고리에 두 메트릭 추가: 순환이 없어도 결합이 얽힌 아키텍처를 잡는다. 새 finding 이 생길 수 있으나 코퍼스 16종의 기존 점수는 불변(작은 그래프는 평가 안 함).

v6.0.0 (2026-06-12)

MAJOR — SEC-04(위험 역직렬화/동적 실행) 를 싱크 인자가 비리터럴일 때 critical 로 에스컬레이션. jam-lite 의 마지막 보안 미탐지 (recall) 공백을 메운다.

v5.0.0 (2026-06-12)

MAJOR — SEC-02(인젝션) 위반 레벨을 violation 에서 critical로 에스컬레이션. Java/C# SQL/명령 인젝션 탐지 추가. SEC critical 하드 캡 (최대 C) 으로 인해 취약한 앱은 등급이 하강한다.

v4.0.0 (2026-06-12)

MAJOR — 점수 보정. TDRMax 를 0.20 에서 0.10으로 낮춰 SQALE 희석 민감도를 2 배로 한다. 카테고리 점수 = 100 × (1 − TDR/TDRMax)인데, 0.20 에서는 dev-cost 의 20% 에 달하는 부채가 있어야 0 점이라 현실 부채 (TDR < 0.05) 가 거의 표시되지 않아 모든 프로젝트가 85–100 에 뭉쳤다. 0.10 에서는 실제 유지보수성 부채가 등급을 가른다.

v3.0.0 (2026-06-11)

MAJOR — 점수 모델 변경. 한 카테고리의 룰셋이 프로젝트의 어떤 언어도 평가하지 못하면, 그 카테고리에 공짜 100 점을 주지 않고 점수에서 제외한 뒤 가중치를 나머지 (평가 가능한) 카테고리로 재정규화한다. 측정하지 못한 차원이 총점을 떠받치던 왜곡을 제거한다.

v2.3.4 (2026-06-11)

PATCH — Rust 모듈 그래프에서 facade/re-export 패턴이 대형 순환 캡을 만들던 오탐을 줄였다. 카테고리 가중치와 등급 컷은 바꾸지 않는다.

v2.3.3 (2026-06-11)

PATCH — 실측 리포트에서 HYG 계열이 문서/테스트 예제와 UI copy 를 과도하게 세던 문제를 줄였다.

v2.3.2 (2026-06-11)

PATCH — 실측 리포트에서 DUP-01 이 테스트 코드와 3~5 라인짜리 조밀한 boilerplate 를 과도하게 violation 으로 만들던 문제를 줄였다. 카테고리 가중치와 점수 모델은 바꾸지 않는다.

v2.3.1 (2026-06-11)

PATCH — gitops-console, sepilotd, security-cli 실측 결과를 바탕으로 false positive 와 노이즈를 줄였다. 점수 산식·카테고리 가중치는 바꾸지 않지만 일부 finding 수와 severity 가 달라진다.

v2.3.0 (2026-06-11)

MINOR — 남아 있던 jam-lite registry 메트릭 (CPLX-04/05, ARCH-02, DUP-02) 을 구현 활성화. 점수 산식·가중치·기본 비용은 변경하지 않지만, 새 finding 이 추가되어 카테고리/종합 점수가 달라질 수 있다.

v2.2.0 (2026-06-11)

MINOR — HYG-04/HYG-05 구현 활성화. 점수 산식·가중치·기본 비용은 변경하지 않지만, 같은 코드에서 HYG finding 이 추가되어 HYG 카테고리와 종합 점수가 달라질 수 있다.

v2.1.0 (2026-06-11)

MINOR — 기존 메트릭에 C/C++ 제한 지원 언어 규칙 추가. 기본 임계값·가중치·산식 변경 없음.

v2.0.0 (2026-06-11)

MAJOR — 새 메트릭 HYG-07 과 하드 등급 캡이 추가되어 동일 코드의 등급이 달라질 수 있다.

v1.2.0 (2026-06-11)

MINOR — 기존 메트릭에 Java/C#/Rust 언어 규칙 추가 (11-metrics-versioning.md §2). 임계값·가중치·산식 변경 없음. 6 개 지원 언어 모두 coverage.

v1.1.1 (2026-06-11)

PATCH — 오탐 제거 (검출 정확화). 산식·임계값·가중치 변경 없음. 실프로젝트 3 종 (대형 TS 모노레포 포함) 캘리브레이션 결과 반영.

v1.1.0 (2026-06-10)

MINOR — 기존 메트릭에 언어 규칙 추가 (11-metrics-versioning.md §2). 임계값·가중치·산식 변경 없음.

v1.0.0 (2026-06-10)

최초 스펙. 02-metrics-catalog.md 의 29 개 메트릭 정의 전체를 수록.