> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# 커버리지

> 여러분 데이터셋이 Agent가 실제로 보는 걸 대표하나요?

케이스 두 개만 시험하는 데이터셋은 아무리 허술한 수정도 다 통과시킵니다. **커버리지**는 데이터셋이 프로덕션 트래픽과 얼마나 잘 맞는지를 재는 잣대입니다.

## 커버리지 뷰

Datasets → **Coverage** 탭입니다. 두 그림을 보여줍니다.

* **데이터셋에 있는 것** 기능(의도, 태그, 엔티티, 난이도)에 걸친 예시 분포.
* **프로덕션에 있는 것** 실제 트레이스에서 뽑은 같은 분포.

나란히 놓습니다. 둘 사이 벌어진 곳이 커버리지 구멍입니다.

## 자동으로 잡는 차원

Nora가 데이터셋과 프로덕션 트레이스를 (임베딩으로) 주제 클러스터로 묶은 뒤 양쪽 밀도를 보여줍니다. 흔한 모습은 이렇습니다.

* **적게 담긴 클러스터** 프로덕션은 "환불" 이 트래픽의 30% 인데 데이터셋은 5%. 환불 예시를 더합니다.
* **많이 담긴 클러스터** 데이터셋은 "인사" 가 20% 인데 프로덕션은 1%. 가지치거나 다시 가중합니다.
* **빠진 클러스터** 프로덕션은 "결제 분쟁" 이 10% 인데 데이터셋은 0. 완전한 구멍입니다.

## 차원 더하기

여러분만의 차원으로도 덮을 수 있습니다.

* **Difficulty** 쉬운 것으로 씨를 뿌렸다면 어려운 케이스가 적게 담겼을 수 있습니다.
* **Language** 프로덕션의 30% 가 한국어인데 데이터셋은 전부 영어.
* **User tier** enterprise 사용자가 free 사용자와 다르게 동작하는지 시험.

**Dataset settings → Coverage dimensions**에서 여러분 차원을 정합니다.

## 구멍 메우기

커버리지 뷰가 더할 트레이스를 콕 짚어 줍니다.

* 데이터셋에 적게 담긴 프로덕션 클러스터를 찾습니다.
* 클러스터마다 대표 트레이스를 고릅니다.
* 한 번 눌러 씨 뿌릴 **Add to dataset**를 줍니다.

이 제안은 골라 담습니다. 실패보다 질 좋은 트레이스(성공, 잘 짜인, 인용 있는)를 선호하죠. 균형을 위해, 회귀 커버리지는 실패한 것을 따로 더합니다.

## 커버리지 비율

한 숫자로도 봅니다. **커버리지 비율** = 1 − (데이터셋이 설명하는 프로덕션 엔트로피)입니다. 1.0은 완벽한 커버리지, 0.5는 프로덕션 다양성의 절반을 담음, 0.0은 데이터셋이 프로덕션을 전혀 대표하지 못함을 뜻합니다.

프로덕션 품질 게이트에 쓰는 데이터셋은 0.7을 넘기는 걸 목표로 하세요. 0.5 아래면 시뮬레이션이 주는 숫자가 거의 의미 없습니다.

## 커버리지가 상관없을 때

일부러 좁게 만든 데이터셋은 커버리지가 필요 없습니다.

* **회귀 스위트** 모든 프로덕션이 아니라 *고친 패턴*만 덮으면 됩니다. 커버리지가 일부러 낮습니다.
* **기능 집중 테스트** "환불 플로우" 테스트가 "로그인 플로우" 를 덮을 필요는 없습니다.

이런 데이터셋에는 `narrow` 태그를 달아 커버리지 경고를 끕니다.

## 시간에 따른 커버리지

트렌드 차트는 최근 몇 달의 커버리지 비율을 보여줍니다. 평평하거나 올라야 정상입니다. 커버리지가 내려간다면 프로덕션은 흘러가는데 데이터셋은 그대로라는 뜻입니다. 새로 채울 때입니다.

## 자동 커버리지 갱신

**Coverage refresh**를 켜면 Nora가 커버리지 구멍을 보고 매주 새 프로덕션 트레이스를 자동으로 샘플링합니다. 더해진 예시는 주석용 `needs review`로 표시됩니다. 커버리지는 채워지되 기대 출력은 여러분이 정합니다.

프로덕션이 빠르게 바뀌는 오래된 Flow 라면, 손으로 큐레이션하는 것보다 낫습니다.
