Harness Engineering

Claude Code
Harness System

Loopy-Era 자가개선 인프라의 실제 구현 상태. 실수에서 규칙이 태어나고, 규칙이 스스로 강해지며, 효과가 자동으로 검증된다.

7
Pipeline Skills
41
Hook Files
36
HARD Checks
10
Hook Events
왜 이 시스템인가
일반적 AI 코딩 도구

규칙은 사람이 미리 작성한다. AI가 실수하면 사람이 고친다. 같은 실수가 반복되어도 시스템은 변하지 않는다. 매 세션이 처음부터 시작된다.

Loopy-Era 하네스

실수에서 규칙이 자동 생성된다. SOFT 규칙이 2회 재발하면 HARD로 승격된다. 개선이 유효한지 자동 검증하고 실패하면 rollback한다. 시스템이 스스로 강해진다.

Karpathy의 Loopy Era — AI가 자기 자신을 반복적으로 개선하는 루프. self-improve가 scaffold를 수정하면, loopy-era-eval이 HARD 비율을 재측정하고, 개선이면 keep, 악화면 discard. 이것이 autoresearch 철학과 결합한 자가개선 폐루프.
자가개선 폐루프
fix: commit 실수 발생 trigger.sh 신호 감지 → pending /self-improve scaffold 수정 /loopy-era-eval HARD 비율 측정 keep? keep results.tsv 수렴까지 반복 discard git checkout 수정 rollback 다시 시도 HARD Enforcement Layer qa-gate (exit 2) · scaffold-violation · code-quality · no-env · no-localstorage · 41 hooks L1 관측 L2 신호변환 L5 자동수정 L6 폐루프

fix: 커밋 → 신호 감지 → scaffold 수정 → HARD 비율 측정 → keep/discard. 이것이 반복되며 시스템이 수렴한다.

하네스 종합 진단
#차원점수비율상태
D1파이프라인 완성도6/6100%
D2크로스 Phase 통합9/9100%
D3HARD 강제 깊이10/10100%
D4자가개선 속도6/6100%
D5수렴 성숙도5/5100%
종합36/36100%S
L1 ~ L6 충족 분석
L1
관측 가능성 충족
10개 hook 이벤트(PreToolUse, PostToolUse, UserPromptSubmit, Stop, SubagentStop, TaskCompleted, Notification, PreCompact, PostToolUseFailure, PostCompact), 41개 hook 파일. feedback-detector, error-tracker, fix-commit-detector가 세션과 실패를 자동 기록.
L2
신호 변환 충족
self-improve-trigger.sh(Stop hook)가 fix: 커밋, bug-fixer retry, recurrence 등 5종 신호를 감지하여 ~/.claude/pending/self-improve-{project}.json으로 변환. 다음 세션의 UserPromptSubmit에서 self-improve-check.sh가 pending을 감지하여 자동 실행.
L3
프로젝트 경계 부분 충족
pending 파일에 project_name이 포함되어 프로젝트별 분리는 동작. 다만 명시적 project_key 격리 로직이 문서에 약함. self-improve가 다른 프로젝트의 pending을 처리하는 것을 방지하는 scoping은 Python 스크립트에서 os.getcwd() 기반으로 처리.
L4
규칙 차단 충족
qa-gate-before-push.sh가 exit 2로 push를 HARD 차단 (13건의 exit code). scaffold-violation-check.sh, code-quality-check.sh, no-localstorage.sh, no-env-commit.sh 등 10개 이상의 HARD gate. bash -n 구문 검증도 통과.
L5
자동 수정 충족
/self-improve 스킬이 10개 Phase(1.1~1.10)로 구성. scaffold/rules 자동 수정, SOFT→HARD 자동 승격, Cross-Project 규칙 승격, L6 폐루프 acceptance 검증 포함.
L6
폐루프 practical L6
self-improve Phase 1.8에서 scaffold 수정 후 loopy-era-eval HARD 비율 재측정 → 하락 시 rollback. 감지→수정→acceptance→ack 폐루프가 닫혀 있음. wrapper 기반이므로 practical L6.
하네스 파이프라인
1init_project/init-project (320줄)OK
2qa_scenario_gen/qa-scenario-gen (779줄)OK
3self_improve_triggerself-improve-trigger.sh (139줄)OK
4self_improve_worker/self-improve Phase 1.1~1.10OK
5verify_initial/loopy-era-eval (36 HARD checks)OK
6cross_review이중 모델 크로스 리뷰OK
7team_plan/team Phase 0 (+init-project 연동)OK
8team_execute/team Phase 1~3 (구현 위임)OK
9qa_cycle/qa-cycle (700줄, 3도구 교차검증)OK
10qa_fix_retryqa-cycle 자동 수정 (최대 5라운드)OK
11inject_findings리뷰 findings → pending 주입OK
12si_worker_findingsfindings 기반 자동 수정OK
13verify_final/loopy-era-eval (+bash -n 런타임)OK
14final_review최종 크로스 리뷰OK
15closeout텔레그램 알림 + git pushOK
15
Pipeline Steps
7
Skills
스킬 파이프라인 흐름
DESIGN & BUILD /init-project 프로젝트 프로파일링 320줄 · CLAUDE.md + skills 생성 CLAUDE.md /team 오케스트레이션 114줄 · Phase 0~5 + init 연동 구현물 /qa-scenario-gen TC 계약 생성 779줄 · CLICK-CRUD + 커버리지 매트릭스 qa-test-plan.md QA & VERIFY /qa-cycle 자동 QA + 수정 루프 700줄 · 3도구 교차검증 · 5라운드 실패 패턴 SELF-IMPROVE /self-improve 자가개선 10 Phase 429줄 · scaffold · SOFT→HARD 수정 적용 EVALUATE & REPORT /loopy-era-eval HARD 비율 평가 루프 421줄 · 36 checks · keep/discard /harness-report 5차원 종합 진단 477줄 · D1~D5 · 등급 판정 keep → 수렴 / discard → rollback → 재시도 Total: 3,240줄 7 skills · 41 hooks · 10 events 36 HARD checks · practical L6 데이터 흐름 init → team → scenario → qa-cycle 실패 → self-improve → eval → report eval keep/discard → 수렴까지 반복 HARD Enforcement qa-gate-before-push.sh (exit 2) scaffold-violation-check.sh code-quality · no-env · no-ls
36개 HARD 체크리스트

모든 체크는 deterministic — grep count, 파일 존재, bash -n, 숫자 비교. LLM 판단 없음.

qa-cycle (5)
[HARD] ≥ 6개
TC_EVIDENCED gate
BUILD_EXIT 자동분류
console error 0건
DB 직접 쿼리
qa-scenario-gen (3)
exit 1 차단 gate
TC-CLICK- 패턴
__qaErrors 패턴
self-improve (3)
pending = 0
recurrence = 0
SOFT→HARD 규칙
autoresearch (6)
git reset discard
metric_parse
crash 복구
timeout kill
results.tsv
NEVER STOP
D2 크로스 Phase + L6 (9)
init→team
team→qa-scenario
scenario→qa-cycle
team→qa-cycle
cycle→improve
improve→scaffold
improve→eval (L6)
adv→pending
bash -n (런타임)
D5 수렴 (2) + D3 강제 (5) + D4 구조 방어 (3)
이력 ≥ 5줄
latest ≥ 90%
qa-gate exit 2
scaffold-violation
code-quality hook
no-env-commit
hook events ≥ 5
skip 금지
외부 증거 요구
행동 회귀 감지
36/36
HARD ratio
35
grep checks
1
runtime (bash -n)
0
SOFT patterns
체크리스트 진화 이력
17항목 → 원본 (qa-cycle + qa-scenario-gen + self-improve + autoresearch)
29항목 → +D2 크로스 Phase 통합 + D3 HARD 강제 깊이
32항목 → +구조 방어 체크 (skip금지/외부증거/행동회귀)
34항목 → +D5 수렴 체크 + 자기참조 제거
35항목 → +L6 폐루프 + findings 주입 (false convergence 해소)
36항목 → +bash -n 런타임 체크 (grep 천장 돌파)
false convergence 사건: 34개 체크가 100%였는데 L6 폐루프가 끊겨 있었음. self-improve → loopy-era-eval 역방향 참조를 안 체크해서 발생. "올바른 질문을 안 하면 100%가 거짓"이라는 교훈. D2 check 7, 8 추가로 해소.
구조적 한계
검증 가능 (현재)
  • 스킬 파일에 키워드 존재
  • hook 파일 존재 + bash 구문 유효
  • 파이프라인 연결 (A→B 참조)
  • results.tsv 이력/수렴
  • pending 처리 완료 여부
검증 불가 (grep 한계)
  • 스킬 지시가 실제로 따라지는지
  • hook이 올바른 시점에 실행되는지
  • agent-browser가 실제 실행되는지
  • 스킬 변경 후 행동 회귀 (behavior eval)
  • QA 결과가 자기 보고가 아닌지

핵심: grep 기반 메타-검증은 "문서에 적혀있다"만 증명하고 "실행된다"는 증명할 수 없다. 36개 체크 중 35개가 grep, 1개만 bash -n(런타임). 다음 단계는 런타임 검증 비율을 높이는 것.

측정일: 2026-04-05 | loopy-era-eval 36/36 = 100% | 5차원 harness-report 100%

데이터 출처: ~/.claude/skills/, ~/.claude/hooks/, ~/.claude/logs/