# PLAN cloud G07 - m-change-aware-test-routing/02+01_risk_routing_rules

## 작업 목표

`01_change_classifier_core`의 분류 결과를 기반으로 protocol-relevant 변경, 언어 anchor 변경, docs-only 변경을 기능/속도/안정성 테스트 후보로 승격하는 규칙을 구현한다. 이번 작업은 `risk-escalation` task 완료를 목표로 하며, 실제 x5 실행 shell 구현은 후속 Epic에서 다룬다.

## Roadmap Targets

- Milestone: `agent-roadmap/milestones/change-aware-test-routing.md`
- Completed task ids:
  - `risk-escalation`

## 선행 조건

- `agent-task/m-change-aware-test-routing/01_change_classifier_core/complete.log`가 있어야 한다.
- 선행 작업의 classifier 출력 계약이 route, changed files, detected languages, detected domains, fallback reason을 제공해야 한다.

## 분석 결과

`risk-escalation`은 단순 path 분류가 아니라 테스트 범위 선택 정책이다. 이 정책은 사용자-facing shell 4개 중 `테스트 해봐`의 자동 판단에 가장 직접적으로 쓰이고, `속도 테스트 해봐`, `안정성 테스트 해봐`, `전체 테스트 해봐`에서는 명시 의도를 우선하되 위험도에 따라 범위를 넓히는 근거로 사용된다.

이번 작업은 첫 Epic의 마지막 task만 완료 대상으로 삼는다. `anchor-language-x5`, `auto-test-shell`, `speed-test-shell` 같은 후속 Epic task는 여기서 체크하지 않는다.

## 분할 판단

이 작업은 `01_change_classifier_core`에 의존한다. classifier 출력 계약 없이는 위험 승격 규칙을 검증할 수 없으므로 디렉터리 이름을 `02+01_risk_routing_rules`로 두었다.

## 구현 범위

- classifier 출력에서 domain/language를 읽어 위험도와 추천 검증 후보를 만든다.
- docs-only 변경은 기본적으로 테스트 생략 또는 문서 명령 정합성 확인 후보로 둔다.
- 언어 구현 변경은 해당 언어 anchor 후보를 만든다.
- server-only/client-only 추론이 불명확하면 both x5 후보로 보수 승격한다.
- proto/schema, codec, framing, communicator, packet/protobuf 변경은 wider/full functional 후보로 승격한다.
- transport, queue/gateway, worker/concurrency 변경은 functional both x5와 stability quick 후보를 만든다.
- performance harness, bench, payload/sustained/parallel 관련 변경은 performance quick 후보와 nightly heavy 후보를 만든다.
- test runner/test docs 변경은 해당 runner/profile의 self-check 또는 dry-run 후보를 만든다.
- 결과 출력에는 추천 테스트를 PASS로 단정하지 않고 `recommended`, `nightly-pending`, `skipped-candidate`처럼 상태를 구분한다.

## 제외 범위

- x5 방향별 실제 crosstest command 생성은 후속 `functional-routing`/runner contract 작업에서 다룬다.
- performance/stability shell entrypoint 구현은 후속 Epic에서 다룬다.
- 야간 작업 예약이나 실제 full benchmark 실행은 하지 않는다.

## 구현 체크리스트

- [ ] 선행 classifier 결과를 읽는 shell 함수 또는 command option을 구현한다.
- [ ] domain별 escalation table을 코드에 명시한다.
- [ ] 사용자 route가 `auto`, `speed`, `stability`, `full`일 때 명시 의도와 위험 승격이 충돌하지 않도록 우선순위를 정한다.
- [ ] protocol-relevant 변경이 smoke/docs-only로 축소되지 않도록 보수 규칙을 둔다.
- [ ] performance/stability 후보는 daytime quick과 nightly full/heavy를 구분한다.
- [ ] 추천 결과에 선택 이유를 남긴다.
- [ ] 실행하지 않은 nightly 후보를 PASS로 출력하지 않는다.

## 검증 계획

선행 작업 완료 후 실행한다.

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

추가 확인:

```bash
git diff --check -- agent-ops/skills/project/run-proto-socket-test-matrix/scripts
```

검증 기준:

- proto/schema 변경 후보가 wider/full functional로 승격된다.
- transport/communicator 변경 후보가 both x5와 stability quick 후보를 만든다.
- performance harness 변경 후보가 performance quick과 nightly pending을 구분한다.
- docs-only 변경은 full test로 과잉 승격하지 않는다.
- 출력에 선택 이유와 nightly pending 항목이 남는다.

## 완료 조건

- `risk-escalation` task의 검증 문구를 만족한다.
- 후속 Epic의 x5 command 생성과 4개 shell entrypoint 구현이 사용할 route recommendation 계약이 만들어진다.
- 구현 결과와 검증 결과가 `CODE_REVIEW-cloud-G07.md`에 기록된다.
