# benchmark-rubric.yaml — 골든태스크 채점 루브릭 (리뷰 3주차 측정 항목) # ============================================================================= # 리뷰가 요구한 측정 항목을 그대로 dimension으로 둔다. 각 dimension은 0..1(또는 카운트). # 두 arm(plain Claude / harness)을 같은 과제로 실행 후 이 dimension으로 채점하고, # benchmark.py compare 가 arm 간 차이(delta)를 집계한다. delta>0 = 하네스 이득. # ============================================================================= benchmark-rubric: version: 1 arms: [plain, harness] # plain = 하네스 없이 Claude 단독 / harness = org-os 파이프라인 dimensions: first-pass-acceptance: type: bool # 1회차에 수용기준 전부 충족? direction: higher-better weight: 3 tests-pass-rate: type: ratio # 통과 테스트 / 전체 direction: higher-better weight: 3 requirements-met: type: ratio # 충족 수용기준 / 전체 수용기준 direction: higher-better weight: 3 unnecessary-change-lines: type: count # 과제와 무관하게 바꾼 diff 라인 direction: lower-better weight: 2 rework-count: type: count # 수용까지 재작업 횟수 direction: lower-better weight: 2 unsupported-claims: type: count # 근거 없이 단정한 주장 수(hallucination 대리지표) direction: lower-better weight: 2 escaped-defects: type: count # 수용 후 발견된 결함 direction: lower-better weight: 3 human-interventions: type: count # 사람이 손대야 했던 횟수 direction: lower-better weight: 1 tokens: type: count # 소비 토큰(비용) direction: lower-better weight: 1 latency-sec: type: count # 벽시계 시간 direction: lower-better weight: 1 task-score: type: ratio # 카테고리별 종합(코드/문서/디자인/결정) 0..1 direction: higher-better weight: 3 rules: - "채점은 acceptance-criteria 기반(주관 최소화). 애매하면 근거(diff/test 로그/산출물)를 첨부한다." - "arm 간 비교는 **같은 과제·같은 판정자**로. 판정자는 과제 실행자와 분리(감사 독립성)." - "delta = harness - plain (higher-better) / plain - harness (lower-better). 양수 = 하네스 이득." - "표본이 arm당 과제 1회 이상 있어야 비교에 포함(없으면 '미실행'으로 정직 표시)." decision-rule: > 카테고리에서 하네스가 plain 대비 종합 delta<=0 이면, 그 카테고리에 붙은 role/fan-out/framework는 비용만 늘리는 것이므로 제거/경량화 후보다(리뷰 최종 판단).