<!-- task=m-change-aware-test-routing/04_user_entrypoints_full_route plan=0 tag=UEP_FULL -->

# Plan - UEP_FULL

## 이 파일을 읽는 구현 에이전트에게

`CODE_REVIEW-local-G01.md`의 구현 에이전트 소유 섹션을 채우는 것이 구현의 마지막 단계다. 구현 후 실제 출력과 증빙을 남기고 active 파일을 유지한 채 리뷰 준비 상태를 보고한다. 사용자 결정, 사용자 소유 환경, scope 충돌이 구현을 막으면 사용자에게 직접 묻지 말고 `사용자 리뷰 요청` 섹션에 근거와 재개 조건을 기록한다. finalization, `complete.log`, archive 이동은 code-review 전용이다.

## 배경

`user-entrypoints` 에픽의 `full-test-route`는 `전체 테스트 해봐` 요청을 full functional 실행과 nightly pending 후보 보고로 안정적으로 연결해야 한다. 현재 사용자 요청 문구는 `SKILL.md`에 일부 반영되었지만, full route의 실행 전 보고, 실행 명령, 미실행 nightly 항목의 PASS 제외 문구를 같은 계약으로 닫는 후속 구현이 필요하다.

## 사용자 리뷰 요청 흐름

구현 중 blocker는 active review stub의 `사용자 리뷰 요청` 섹션에 기록한다. 구현 에이전트는 chat에서 직접 질문하거나 선택지를 제시하거나 `request_user_input`을 호출하지 않는다. code-review가 사용자 리뷰 요청의 타당성을 검증하고 실제 `USER_REVIEW.md` 작성 여부를 결정한다.

## Roadmap Targets

- Milestone: `agent-roadmap/milestones/change-aware-test-routing.md`
- Task ids:
  - `full-test-route`: `전체 테스트 해봐`는 functional full 5x5를 기본으로 실행하고, performance/stability full은 시간대에 따라 즉시 실행 또는 nightly pending으로 분리한다.
- Completion mode: check-on-pass

## 분석 결과

### 읽은 파일

- `agent-roadmap/current.md`
- `agent-roadmap/milestones/change-aware-test-routing.md`
- `agent-ops/rules/project/rules.md`
- `agent-ops/rules/common/rules-roadmap.md`
- `agent-ops/skills/common/router.md`
- `agent-ops/skills/common/plan/SKILL.md`
- `agent-test/local/rules.md`
- `agent-test/local/proto-socket-full-matrix.md`
- `agent-test/local/proto-socket-performance-baseline.md`
- `agent-ops/skills/project/run-proto-socket-test-matrix/SKILL.md`
- `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_full_test.sh`
- `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_test_by_change.sh`

### 테스트 환경 규칙

- test_env: `local`
- `agent-test/local/rules.md` 존재 및 읽음.
- 적용 profile: `agent-test/local/proto-socket-full-matrix.md`, `agent-test/local/proto-socket-performance-baseline.md`.
- 적용 명령: full 실행 기본은 `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all`, full route 계약 확인은 `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_full_test.sh --dry-run`.
- 문서 계약 확인은 `rg --sort path`로 수행한다. Markdown 파일에는 `bash -n`을 적용하지 않는다.

### 테스트 커버리지 공백

- 사용자 entrypoint 문장 인식과 실행 전 보고 계약을 직접 검증하는 test file은 없다.
- full route 변경은 `run_full_test.sh --dry-run` 출력과 deterministic `rg --sort path` 계약 확인으로 보완한다.
- 실제 long-running performance/stability full 실행은 이 plan 범위가 아니다. nightly pending 후보 표기와 PASS 제외 계약만 닫는다.

### 심볼 참조

- renamed/removed symbol: none.

### 분할 판단

- split decision policy를 평가했다.
- shared task group: `agent-task/m-change-aware-test-routing`.
- active subtask: `04_user_entrypoints_full_route`.
- predecessor: 없음. 디렉터리명이 `04_...`이므로 runtime dependency는 없다.
- `full-test-route`는 user-entrypoint 중 full 실행 계약만 다루며, `auto/speed/stability` shell/result contract와 독립적으로 리뷰 가능하다. 따라서 단일 split subtask로 둔다.

### 범위 결정 근거

- 이번 plan은 `full-test-route`만 완료 대상으로 삼는다.
- `auto-test-route`, `speed-test-route`, `stability-test-route`는 문구 일부 반영만 있었고 완료 검증이 부족하므로 이 plan의 Roadmap Targets에 넣지 않는다.
- `speed-test-shell`, `stability-test-shell`, `result-report-contract` 구현은 `skill-and-runner-contract` 에픽의 별도 후속 작업이다.
- 실제 성능 최적화, 야간 baseline 수집, 장시간 stress 실행은 이번 plan 범위에서 제외한다.

### 빌드 등급

- build: `local-G01`; review: `local-G01`.
- 문서와 얇은 runner 계약 정합화 중심이며, 검증은 dry-run과 deterministic search로 한정된다.

## 구현 체크리스트

- [ ] [UEP_FULL-1] `SKILL.md`의 `전체 테스트 해봐` 라우팅 설명을 `run_full_test.sh --dry-run` -> `run_full_test.sh` 흐름과 일치시킨다.
- [ ] [UEP_FULL-2] full route에서 nightly pending 항목이 미실행/PASS 아님으로 보고되는 문구를 `SKILL.md`, local test docs, runner 출력 계약 사이에서 일치시킨다.
- [ ] [UEP_FULL-3] `run_full_test.sh --dry-run`과 deterministic `rg --sort path`로 full route 계약을 검증하고 실제 stdout/stderr를 review stub에 남긴다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

### [UEP_FULL-1] Full route entrypoint wording

`문제`: `SKILL.md`에 사용자 요청 4분류 문구가 추가되었지만, `전체 테스트 해봐`가 full route dry-run 보고 후 본 실행으로 이어진다는 사용자-facing 계약이 아직 얇다.

`해결 방법`: `SKILL.md`의 `route-mode`/`route-command` 설명과 실행 절차에서 `full` 요청의 실행 전 보고와 본 실행 조건을 명확히 쓴다. 기존 `전체 테스트`, `전체 검증`, `테스트 매트릭스` 요청과 `전체 테스트 해봐`의 우선순위가 혼동되지 않게 표현을 정리한다.

`수정 파일 및 체크리스트`:

- [ ] `agent-ops/skills/project/run-proto-socket-test-matrix/SKILL.md`

`테스트 작성`: 별도 test file은 만들지 않는다. 이 항목은 skill 문서의 라우팅 계약 정합화다.

`중간 검증`:

```bash
rg --sort path -n "전체 테스트 해봐|route-mode|route-command|run_full_test.sh --dry-run" agent-ops/skills/project/run-proto-socket-test-matrix/SKILL.md
```

### [UEP_FULL-2] Nightly pending wording

`문제`: full route에서 performance/stability full은 실행하지 않은 nightly 후보인데, 문서와 runner 출력이 같은 용어로 PASS 제외를 말하지 않으면 결과 보고가 헷갈릴 수 있다.

`해결 방법`: `SKILL.md`와 local test profile 문서가 `nightly-pending`, `20:00 이후`, `미실행`, `PASS 아님`을 같은 의미로 설명하게 맞춘다. `run_full_test.sh` 출력 문구가 이미 충분하면 코드 변경 없이 문서만 정리한다.

`수정 파일 및 체크리스트`:

- [ ] `agent-ops/skills/project/run-proto-socket-test-matrix/SKILL.md`
- [ ] `agent-test/local/proto-socket-full-matrix.md`
- [ ] `agent-test/local/proto-socket-performance-baseline.md`
- [ ] `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_full_test.sh` (문구 불일치가 실제로 있을 때만)

`테스트 작성`: 별도 test file은 만들지 않는다. 문서/runner 계약은 deterministic search와 dry-run으로 검증한다.

`중간 검증`:

```bash
rg --sort path -n "nightly-pending|20:00|PASS 아님|미실행|performance-full|stability-full" agent-ops/skills/project/run-proto-socket-test-matrix agent-test/local
```

### [UEP_FULL-3] Full route dry-run evidence

`문제`: `full-test-route` 완료 근거는 실행 전 추천/미실행 항목 보고가 실제 출력에 남는지 확인해야 한다.

`해결 방법`: `run_full_test.sh --dry-run`을 실행해 classifier 출력, full functional 추천 여부, nightly pending 보고가 실제 stdout에 나타나는지 확인한다.

`수정 파일 및 체크리스트`:

- [ ] `CODE_REVIEW-local-G01.md`의 `검증 결과`에 실제 명령과 stdout/stderr를 기록한다.

`테스트 작성`: 신규 test file은 만들지 않는다.

`중간 검증`:

```bash
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_full_test.sh --dry-run
```

## 수정 파일 요약

| 파일 | 항목 |
|---|---|
| `agent-ops/skills/project/run-proto-socket-test-matrix/SKILL.md` | UEP_FULL-1, UEP_FULL-2 |
| `agent-test/local/proto-socket-full-matrix.md` | UEP_FULL-2 |
| `agent-test/local/proto-socket-performance-baseline.md` | UEP_FULL-2 |
| `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_full_test.sh` | UEP_FULL-2, 필요한 경우만 |
| `agent-task/m-change-aware-test-routing/04_user_entrypoints_full_route/CODE_REVIEW-local-G01.md` | UEP_FULL-3 |

## 최종 검증

```bash
bash -n agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_full_test.sh
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_full_test.sh --dry-run
rg --sort path -n "전체 테스트 해봐|route-mode|route-command|nightly-pending|performance-full|stability-full|20:00|PASS 아님|미실행" agent-ops/skills/project/run-proto-socket-test-matrix agent-test/local
```

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