# 평가 기준 ## 평가 원칙 교정 결과는 문자열 완전 일치만으로 평가하지 않는다. **탐지, 수정, 설명, 보존, 보류**를 분리해 평가한다. 정밀도를 재현율보다 우선하며, 중대한 의미 변형과 보호 구간 손상은 한 건도 허용하지 않는다. ## 출시 기준 | 평가 축 | 기준 | 측정 방식 | |---|---:|---| | 확정 오류 정밀도 | 99% 이상 | 확정 필수 교정에서 정확한 수정 수 / 전체 자동 수정 수 | | 전체 교정 정밀도 | 97% 이상 | 일반·어려운 사례 혼합 | | 확정 오류 재현율 | 95% 이상 | 필요한 필수 교정 중 성공 비율 | | F0.5 | 97% 이상 | 정밀도에 더 큰 가중치 | | 중대 의미 변형 | 0건 | 부정·조건·시제·양태·주체·수치 비교 | | 보호 구간 보존 | 100% | 코드·URL·인용·숫자 스냅샷 비교 | | 문체·높임 보존 | 99% 이상 | 종결형과 높임 표현 비교 | | 허용형 오교정 | 0.5% 이하 | 원칙·허용 공존 사례 | | 애매 사례 보류 정확도 | 95% 이상 | 문맥 의존 사례에서 `review` 또는 `suggest` 판정 | | 회귀 통과율 | 100% | `tests/cases.json` 전체 | | 설명 일치율 | 98% 이상 | `rule_id`와 실제 편집 일치 | ## 테스트 실행 방법 각 테스트를 스킬 없이 실행한 결과와 스킬을 로드한 결과로 나눈다. 1. 새 대화 또는 격리된 에이전트에서 스킬 없이 입력한다. 2. `expected_text`, `expected_action`, `rule_id`와 비교한다. 3. 같은 입력을 스킬과 함께 실행한다. 4. 새 오교정이 생기면 해당 사례를 회귀 세트에 추가한다. 5. 올바른 입력을 유지하는 음성 테스트를 양성 테스트와 같은 비중으로 관리한다. ## 판정 항목 테스트마다 다음을 기록한다. ```yaml case_id: G-001 actual_text: "..." actual_action: correct|keep|suggest|review actual_rule_id: "..." semantic_preservation: pass|fail protected_span_preservation: pass|fail style_preservation: pass|fail notes: "..." ``` ## 중대 실패 다음 중 하나라도 발생하면 전체 결과를 실패로 처리한다. - 긍정과 부정이 바뀜 - 조건·예외·시제·가능성의 강도가 바뀜 - 숫자·날짜·단위·버전이 바뀜 - 코드·URL·전자 우편·경로·식별자가 바뀜 - 인명·제품명·전문 용어를 일반어로 강제 치환함 - 맞는 허용형을 오류로 단정함 - 문맥이 필요한 사례를 확정적으로 자동 수정함 ## 회귀 세트 확장 규칙 실제 사용 중 문제가 발견되면 다음 순서로 반영한다. 1. 문제 입력과 잘못된 출력을 고정한다. 2. 기대 행동을 `correct`, `keep`, `suggest`, `review` 중 하나로 명시한다. 3. 스킬 수정 전 실패를 확인한다. 4. 최소한의 규칙만 보강한다. 5. 전체 테스트를 다시 실행한다.