# PLAN cloud G07 - REVIEW_CHANGE_CLASSIFIER_CORE

## 작업 목표

`run_test_by_change.sh`의 docs-only 판정 계약을 바로잡는다. 이전 구현은 모든 Markdown 파일을 `docs` domain으로 분류하고 `docs` 외 domain이 없으면 `docs_only=yes`로 처리해, active `agent-task/*.md`, roadmap 운영 문서, 임의 Markdown만 바뀐 경우에도 후속 라우팅이 문서-only 변경으로 오판할 수 있다.

## Roadmap Targets

- Milestone: `agent-roadmap/milestones/change-aware-test-routing.md`
- Completed task ids:
  - `last-pass-point`
  - `diff-source`
  - `path-domain-map`

## 구현 지시

- 구현 중 사용자에게 직접 질문하지 않는다.
- 사용자 결정, 사용자 소유 외부 환경, 또는 범위 충돌 없이는 계속 진행한다.
- 정말 사용자 결정이 필요하면 active `CODE_REVIEW-cloud-G07.md`의 `사용자 리뷰 요청` 섹션을 근거와 함께 채우고 멈춘다.

## 분석 결과

리뷰 FAIL 근거:

- `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh:264`의 docs 분류가 모든 `*.md`/`*.txt`/`docs/*`에 적용된다.
- `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh:333`의 docs-only 계산은 `docs` 외 domain이 없다는 사실만 본다.
- 원 계획의 docs-only 계약은 `tracked docs/README/PORTING guide만 변경된 경우`다.

따라서 docs-only 후보를 human-facing tracked docs 경로로 제한하고, active task/roadmap 운영 문서와 임의 Markdown은 docs-only를 true로 만들지 않도록 분리해야 한다.

## 구현 범위

- 수정 파일: `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh`
- `README*`, `PORTING*`, `PROTOCOL*`, `VERSIONING*`, `docs/**` 같은 human-facing 문서만 docs-only 후보가 되도록 한다.
- `agent-task/**`, `agent-roadmap/**`, `.tmp/**`, 기타 임의 `*.md`/`*.txt`는 docs-only true 조건에서 제외한다.
- 제외 또는 별도 domain 처리 방식을 선택하되, 후속 라우팅이 docs-only로 테스트 범위를 축소하지 않게 한다.
- 기존 last PASS record 탐색, diff source 수집, route별 선택, archive 제외 규칙은 유지한다.

## 제외 범위

- risk escalation, anchor x5 선택, 실제 테스트 실행 shell 구현은 다루지 않는다.
- `run_matrix.sh`, `run_performance.sh`, `run_stress.sh`의 실행 의미를 변경하지 않는다.
- roadmap 문서 상태를 수정하지 않는다.

## 구현 체크리스트

- [ ] docs-only 후보 판정을 human-facing tracked docs 경로로 제한한다.
- [ ] `agent-task/**`, `agent-roadmap/**`, `.tmp/**`, 임의 Markdown이 docs-only true를 만들지 않도록 한다.
- [ ] `README.md` 같은 사람용 문서는 기존처럼 docs domain/docs-only 후보로 남긴다.
- [ ] `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh --classify-only` 결과가 변경 파일과 domain을 누락 없이 출력한다.
- [ ] `CODE_REVIEW-cloud-G07.md`에 실제 검증 출력과 완료 여부를 기록한다.

## 검증 계획

필수:

```bash
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh --classify-only
```

Focused edge:

```bash
bash -c 'source <(sed "$d" agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh); classify_file "README.md"; classify_file "agent-task/example/PLAN-cloud-G07.md"; classify_file "agent-roadmap/milestones/example.md"; classify_file ".tmp/example.md"'
```

기대:

- `README.md`는 human-facing docs로 남는다.
- `agent-task/...`, `agent-roadmap/...`, `.tmp/...`는 docs-only true를 만들 수 없는 domain 또는 제외 대상으로 분리된다.

보조:

```bash
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh --help
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh --route bad
git diff --check -- agent-ops/skills/project/run-proto-socket-test-matrix/scripts
```

## 완료 조건

- 리뷰에서 지적한 Required 문제가 해소된다.
- `last-pass-point`, `diff-source`, `path-domain-map`의 완료 주장을 다시 판단할 수 있을 만큼 검증 출력이 `CODE_REVIEW-cloud-G07.md`에 남는다.
