<!-- task=m-performance-hotspot-optimization/17+16_compat_matrix plan=0 tag=TEST -->

# Plan - TEST

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

이 작업은 `verify` Epic의 전체 compatibility matrix 검증이다. 디렉터리 이름의 `+16`은 `16_perf_regression` 완료 뒤 실행하라는 runtime dependency다. 16번 `complete.log`가 active 또는 archive 위치에 없으면 구현을 시작하지 말고 review stub의 `사용자 리뷰 요청`이 아니라 계획 대비 변경 사항에 predecessor missing을 기록한 뒤 멈춘다. 검증 명령을 실행한 뒤 `CODE_REVIEW-cloud-G07.md`의 구현 에이전트 소유 섹션에 실제 stdout/stderr 또는 저장된 결과 파일 경로를 채우고 active 파일을 그대로 둔 채 리뷰를 요청한다. 구현 중 사용자에게 직접 질문하거나 `USER_REVIEW.md`, `complete.log`, archive 로그를 만들지 않는다.

## 배경

현 Milestone의 마지막 확인은 전체 protocol compatibility matrix다. `perf-regression` full 비교와 동시에 실행하면 성능 측정 host 부하를 오염시킬 수 있어 16번 완료 뒤 실행한다. 이 작업은 Proto sync, 동일언어 테스트, Dart.io/Dart.web/Dart.web(WSS)를 포함한 전체 cross-language matrix를 PASS로 확인해 `compat-matrix` Task를 닫는다.

## 사용자 리뷰 요청 흐름

구현 중 차단은 active review stub의 `사용자 리뷰 요청` 섹션에 기록한다. 직접 사용자 프롬프트는 금지이며, code-review가 요청 타당성을 검증하고 실제 `USER_REVIEW.md` 작성을 소유한다. local Chrome이 없으면 runner의 remote Dart.web fallback을 사용하고, remote fallback 자체가 사용자 소유 환경 문제로 실패할 때만 exact command/output과 resume condition을 사용자 리뷰 요청 후보로 남긴다.

## Roadmap Targets

- Milestone: `agent-roadmap/milestones/performance-hotspot-optimization.md`
- Task ids:
  - `compat-matrix`: 개선 후 `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all`을 실행한다.
- Completion mode: check-on-pass

## 분석 결과

### 읽은 파일

- `agent-roadmap/current.md`
- `agent-roadmap/milestones/performance-hotspot-optimization.md`
- `agent-test/local/rules.md`
- `agent-test/local/proto-socket-full-matrix.md`
- `agent-test/local/proto-socket-performance-baseline.md`
- `agent-ops/rules/project/rules.md`
- `agent-ops/rules/common/rules-roadmap.md`

### 테스트 환경 규칙

`test_env=local`이다. 전체 호환성, 통신, release readiness 검증이므로 `agent-test/local/proto-socket-full-matrix.md`를 적용한다. 필수 명령은 `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all`이다. Dart.web과 Dart.web(WSS)는 필수 matrix 열이며, local Chrome이 없으면 runner가 `ssh toki@toki-labs.com` remote fallback과 WSS Chrome wrapper를 사용한다.

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

소스 변경은 없다. 이 작업의 coverage는 Proto sync, 동일언어 5개 언어, server-capable 5개 언어와 Dart.io/Dart.web/Dart.web(WSS)/Go/Kotlin/Python/TypeScript client 조합의 scenario PASS다. 성능 regression 수치는 이 작업에서 판단하지 않고 16번 `perf-regression`이 소유한다.

### 심볼 참조

none. renamed/removed symbol 없음.

### 분할 판단

split 정책을 평가했다. 이 작업은 `m-performance-hotspot-optimization` task group의 dependent subtask `17+16_compat_matrix`다. predecessor index `16`은 `16_perf_regression`이며, 현재 작성 시점에는 active plan/review가 있고 `complete.log`는 아직 없다. 구현 시작 전 `agent-task/m-performance-hotspot-optimization/16_perf_regression/complete.log` 또는 `agent-task/archive/*/*/m-performance-hotspot-optimization/16_perf_regression/complete.log`를 확인해야 한다. dependency 이유는 full performance regression과 full matrix를 동시에 실행하지 않기 위해서다.

### 범위 결정 근거

코드와 테스트 runner를 수정하지 않는다. 실패 행이 있으면 스크립트가 출력하는 재현 명령과 로그 tail을 기록하되, 실패 수정은 별도 follow-up plan으로 넘긴다. CI/CD runner 연결은 local 검증 완전성 기준이 아니므로 요구하지 않는다.

### 빌드 등급

`cloud-G07`: 전체 matrix는 다언어, Dart.web remote fallback, WSS wrapper, 장시간 terminal integration evidence가 중심이라 cloud review가 적합하다.

## 구현 체크리스트

- [ ] 16번 predecessor `complete.log`가 active 또는 archive 위치에 있는지 확인한다.
- [ ] full matrix 명령을 실행하고 결과 파일 경로, Proto sync, 동일언어, 언어 PASS matrix, 크로스테스트 상세 결과를 기록한다.
- [ ] FAIL/BLOCKED/SKIPPED 행이 있으면 재현 명령, 로그 tail, remote Dart.web fallback 여부, 차단 사유를 기록한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

## 의존 관계 및 구현 순서

이 subtask는 directory name `17+16_compat_matrix`에 따라 `16_perf_regression` 완료가 필요하다. 구현 시작 전 아래 중 하나를 확인한다.

- active predecessor: `agent-task/m-performance-hotspot-optimization/16_perf_regression/complete.log`
- archived predecessor: `agent-task/archive/*/*/m-performance-hotspot-optimization/16_perf_regression/complete.log`

### [TEST-1] Full Compatibility Matrix

문제: `agent-roadmap/milestones/performance-hotspot-optimization.md:109`의 `compat-matrix` Task가 미완료다. 개선 후 Proto sync, 동일언어, Dart.web/Dart.web(WSS), 전체 cross-language compatibility를 다시 확인해야 한다.

해결 방법: full matrix runner를 실행한다. 결과 파일에서 Proto sync, 동일언어, 언어 PASS matrix, 크로스테스트 상세를 발췌한다. 실패가 있으면 PASS로 기록하지 말고 실패 행과 재현 명령을 남긴다.

수정 파일 및 체크리스트:

- [ ] 소스 수정 없음.
- [ ] `CODE_REVIEW-cloud-G07.md`: 결과 파일 경로와 matrix PASS/FAIL 표를 기록.

테스트 작성: 작성하지 않는다. 이 작업은 전체 matrix 실행과 evidence 정리다.

중간 검증:

```bash
test -f agent-task/m-performance-hotspot-optimization/16_perf_regression/complete.log || find agent-task/archive -path '*/m-performance-hotspot-optimization/16_perf_regression/complete.log' -print -quit
```

## 수정 파일 요약

| 파일 | 항목 |
|---|---|
| 소스 수정 없음 | TEST-1 |
| `agent-test/runs/YYYYMMDD-HHMMSS-proto-socket-full-matrix.md` | TEST-1 |
| `CODE_REVIEW-cloud-G07.md` | TEST-1 |

## 최종 검증

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

기대 결과: 종료 코드 0, 최종 결과값 PASS, Proto sync PASS, 5개 동일언어 PASS, 언어 PASS 매트릭스에서 Dart.io/Dart.web/Dart.web(WSS)/Go/Kotlin/Python/TypeScript client 열이 모두 PASS, 크로스테스트 상세의 PASS scenarios가 Expected와 일치한다.

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