<!-- task=m-change-aware-test-routing/01_dart_web_coverage plan=1 tag=RWD -->

# Plan: Dart.web/Dart.web(WSS) 필수 Coverage 반영

## 이 파일을 읽는 구현 에이전트에게
이 항목은 기능 라우팅 분류기의 `anchor-language-x5` 규칙을 우선 완료하고, Dart.web/Dart.web(WSS) 필수 커버리지를 놓치지 않도록 계획/검증 포인트를 정리합니다. 구현 중 사용한 실행 커맨드, 산출물, 판단 근거를 `CODE_REVIEW-local-G01.md`에 필수로 채워야 합니다. 실행 실패, 환경 블로커, 범위 충돌처럼 사용자가 결정해야 하는 항목이 생기면 구현은 중단하고 `사용자 리뷰 요청` 섹션에 증거와 회복 조건만 정확히 남겨야 합니다.

## 배경
현재 `run_test_by_change.sh`는 언어 변경 시 기본적으로 both-direction x5 후보를 권장하므로 server-only/client-only 변경이 있을 때도 세밀한 라우팅이 되지 않습니다.
`functional-routing` 에픽의 `anchor-language-x5`를 즉시 반영해야 하며, Dart.web/Dart.web(WSS) 커버리지는 별도 대형 개선 과제(아래 분리된 `full-functional-periodic`)와 충돌하지 않도록 라우팅 계약에서 구분해 둬야 합니다.

## 사용자 리뷰 요청 흐름
사용자 판단이 필요한 사항만 `CODE_REVIEW-local-G01.md`의 `사용자 리뷰 요청` 섹션에 기록합니다. 구현 단계에서 직접 사용자에게 선택지를 묻지 말고, 코드-리뷰 스킬이 최종 user-review 결정을 관리하도록 합니다.

## Roadmap Targets

- Milestone: `agent-roadmap/milestones/change-aware-test-routing.md`
- Task ids:
  - `dart-web-coverage`: Dart.web/Dart.web(WSS) 필수 coverage 유지 항목의 기능 라우팅 보완
- Completion mode: check-on-pass

## 분석 결과

### 읽은 파일
- `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh`
- `agent-roadmap/milestones/change-aware-test-routing.md`
- `agent-test/local/rules.md`

### 테스트 환경 규칙
- test_env: `local`
- `agent-test/local/rules.md` 존재 및 사용. `auto`/기능 라우팅은 `agent-test/local/proto-socket-full-matrix.md` 기반으로 판단.
- shell 실행 계약은 로컬 스크립트 자체 출력을 근거로 검증.

### 테스트 커버리지 공백
- 변경 자체는 분류기 출력 규칙 변경이므로 기존 테스트 행위별 커버리지를 대체하지 않음.
- 새 정책의 smoke는 `--dry-run` 결과를 수동 확인해야 함.

### 심볼 참조
- 심볼명/인터페이스 변경 없음.

### 분할 판단
- `anchor-language-x5`는 현재 스크립트 규칙 수정으로 즉시 처리 가능하고 범위가 제한됨.
- `full-functional-periodic`은 실행 정책(야간/주기 라우팅)과 연동돼 범위가 넓고 후속 shell 설계가 필요하므로 별도 plan으로 분리함.

### 범위 결정 근거
- 본 계획은 `run_test_by_change.sh`의 언어 방향 탐지 및 추천 문자열 조정에만 한정.
- `run_full_test.sh`, `run_speed_test.sh`, `run_stability_test.sh` 신규 작성 및 결과 기록 형식 변경은 별도 큰 작업으로 분리.

### 빌드 등급
- lane: local, GNN: 01
- 근거: shell 규칙 변경 범위가 작고, 결정 근거가 파일 출력으로 즉시 추적 가능.

## 구현 체크리스트

- [ ] [RWD-1] `run_test_by_change.sh`에 언어별 direction(map: server/client/both) 집계를 추가해 파일명 힌트 기반으로 방향 후보를 계산한다.
- [ ] [RWD-2] `functional routing` 출력에서 direction이 명확한 언어는 `functional-server-x5` 또는 `functional-client-x5`로 분기하고, 불명확 시 `functional-both-x5`를 기본값으로 유지한다.
- [ ] [RWD-3] 기존 `functional-both-x5` 처리 경로는 `transport/queue` 또는 명시 라우팅일 때 유지되며 중복 문자열이 없도록 검증한다.
- [ ] [RWD-4] 실행 명령: `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh --route auto --dry-run`에서 변경 언어/방향 조합별 추천 row 출력이 기대대로 나오는지 확인한다.
- [ ] CODE_REVIEW-local-G01.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

## 수정 파일 요약

| 파일 | 항목 |
|---|---|
| `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh` | 언어 direction 감지 + functional 추천 문자열 분기 추가 |

## 최종 검증

- `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh --route auto --dry-run`
- `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh --route auto --classify-only`
- 기대: server-only 변경 시 `functional-server-x5`, client-only 변경 시 `functional-client-x5`, 혼재 변경은 `functional-both-x5` 추천

모든 코드 변경 완료 후 반드시 `CODE_REVIEW-local-G01.md`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다.
