← 목록
기타 2026-07-05 6KB 읽기 5분

승격체커 — 4상 제1방법 자가개선 자동승격 체커

개요

크라우니 4상 제1방법(벡터형/통계): 반복 패턴 누적 동의≥3 → 티(자동승격) / 비동의≥3 → 타(기각). 기존에는 ~/.crownycode/작업구분개선후보.psv(패턴|사례수|승격기준|수정안)와 ~/.crownycode/작업구분로그.psv(시각|레벨|문맥)를 사람이 수동 리뷰했다. 이를 자동화하는 4상 판정 코어 + 로그 재집계/알림 래퍼를 구축했다.

무엇을 했는지

1. 승격체커.한선 (판정 코어, hanseonc_high)

  • 입력: 단일 write, 개행 4줄(더미+3줄: 패턴명/사례수/반증수) — VM 입력() 다중리드 함정 3종
(프라임 리드·단일write·즉시사용) 준수.
  • 판정:
  • 사례수≥3 그리고 반증수==0 → 티|자동승격|<패턴명>|수정안-적용-가능
  • 반증수≥3 → 타|기각|반증우세
  • 사례수≥1(위 두 조건 미해당) → 옴|관찰중|<사례수>/3
  • 사례수==0 → 음|데이터없음|로그-축적-대기
  • 4케이스 검증 완료(hanseonc_high 컴파일 → crownyc run):
  • (4,0) → 티|자동승격|테스트패턴A|수정안-적용-가능
  • (5,3) → 타|기각|반증우세
  • (2,0) → 옴|관찰중|2/3
  • (0,0) → 음|데이터없음|로그-축적-대기
  • 2. 승격체커.sh (래퍼)

    • scan: 개선후보.psv의 각 패턴을 등록된 매처(현재 "문서화요청_본문작성어_t2상향" 1건)로
    작업구분로그.psv를 재스캔해 사례수 갱신. 매처 미등록 패턴은 기존값 유지([매처없음-유지]).
    • check: 패턴별로 코어 호출 → 티 판정이면 "승격 알림: <수정안>" 출력 + ENFORCE_NOTICE.md에
    붙일 수 있는 알림 텍스트를 생성(자동 append/브로드캐스트는 하지 않음 — 명령 제안까지만). 자동 코드/규칙 수정은 하지 않는다 — 이 도구의 권한은 알림까지, 실제 반영은 세션/사람 확인 후.
    • status: 패턴·사례수·판정 표.

    3. scan 집계 결과 (실측, 2026-07-05)

    패턴 "문서화요청_본문작성어_t2상향" 매처 = "로그에서 레벨==t2 이고 문맥이 '문서화'로 시작하는 행 수" (작업 지시문의 예시 정의를 그대로 구현).

    • t2 레벨 전체 행: 4건(줄2,5,12,13)
    • 이 중 문맥이 정확히 "문서화"로 시작하는 행: 1건 (줄13 문서화해줘: 브레인t1 2호...)
    • 줄12(이 내용 문서화해줘: ...)는 "문서화"를 포함하지만 "이 내용"으로 시작해 접두 매칭에서
    제외됨.
    • 결과: scan 재집계값 = 1건. 기존 psv에 수동 기록돼 있던 사례수 "2"와 다르다
    (차이 원인 = 줄12, "포함"이 아니라 "시작"으로 엄격 해석했기 때문). scan 실행 후 개선후보.psv의 해당 행 사례수가 2 → 1로 갱신되었고(판정도 옴|관찰중|1/3로 재조정), "포함" 기준으로 재정의하려면 매처를 $3 ~ /문서화/로 바꾸면 된다(현재는 지시문 예시의 "시작" 정의를 문자 그대로 구현).
    • 두 번째 후보 "데이터검증_t1선시도_미배선"은 로그에 대응 신호(스키마/범위체크/형식검사가
    명령부에 있는 t1 시도-실패 이벤트)가 별도로 기록되지 않아 매처 미등록 상태로 유지(사례수 0 그대로).

    4. check/status 스모크

    • status(scan 전): 문서화 패턴 2건→옴|관찰중, 데이터검증 패턴 0건→음|데이터없음.
    • scan 실행 후 psv 갱신: 문서화 패턴 1건.
    • check(scan 후): 두 패턴 모두 옴/음 — 현재 데이터로는 티(자동승격) 트리거 없음.
    • 티 알림 경로는 임시 psv(사례수=4로 세팅)로 별도 검증: 승격 알림: ... 출력 +
    ENFORCE_NOTICE.md용 알림 텍스트(자동 브로드캐스트 없이 "cat ... >> ENFORCE_NOTICE.md" 명령 제안만) 정상 생성 확인 후 임시 파일 삭제.

    5. RPN 변환(참고) + 학습

    • 승격체커.rpn.한선: tools/high2rpn.sh로 자동 변환(참고용). 자동변환기가 다중행 문자열
    연결과 혹시(else-if) 체인을 완전히 변환하지 못하는 기존 한계(기존 브레인검증.rpn.한선도 동일 한계 보유)로 그대로 실행 가능한 정본은 아니며, 정본 실행은 승격체커.한선 (hanseonc_high)이다.
    • crownycode-learn.sh add "승격체커_4상제1방법" ...crownycode-brain.sh learn 경유로
    학습DB에 등록 완료(별칭 "승격체커"도 등록됨). lookup "승격체커_4상제1방법" HIT 확인.

    관련 파일

    • /Users/ef/.claude/scripts/승격체커.한선 — 4상 판정 코어(정본)
    • /Users/ef/.claude/scripts/승격체커.sh — scan/check/status 래퍼
    • /Users/ef/.claude/scripts/승격체커.rpn.한선 — RPN 변환(참고, 미검증)
    • /Users/ef/.crownycode/작업구분개선후보.psv — 승격 후보(사례수 갱신됨)
    • /Users/ef/.crownycode/작업구분로그.psv — 원본 로그(레벨|문맥)
    • /Users/ef/.claude/knowledge/ENFORCE_NOTICE.md — 알림 텍스트 append 대상(수동)

    잔여 이슈

    1. "문서화" 매칭 기준(시작 vs 포함)이 지시문 예시와 기존 수기값(2) 사이에 실제로 어긋난다 —
    어느 쪽이 의도된 정의인지 확인 필요. 현재 구현은 지시문 문구("시작하는")를 문자 그대로 채택.
    1. count_for_pattern()은 패턴명별 하드코딩 매처 방식(확장형 dispatch) — 새 후보가 추가되면
    매처도 함께 추가해야 한다. 완전 범용(패턴명→룰 자동유도) 매칭기는 아직 없음.
    1. 반증사례수(반증) 자체를 psv/log에서 자동 집계하는 로직은 아직 없음(현재 check는 반증수=0
    고정 — 반증 이벤트를 기록할 스키마가 먼저 정의돼야 함).
    1. 자동 코드/규칙 반영(승격된 수정안을 실제로 작업구분.한선 등에 적용)은 이 도구 범위 밖 —
    ENFORCE_NOTICE 알림 이후 별도 세션/사람 검토 필요.