<!-- task=m-high-performance-parallel-operations/02+01_cross_baseline plan=2 tag=REVIEW_REVIEW_CROSS_BASELINE -->

# Plan - REVIEW_REVIEW_CROSS_BASELINE

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

이 계획은 `code_review_cloud_G08_1.log`의 Required 이슈만 해결한다. `CODE_REVIEW-cloud-G08.md`의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 사용자 결정이나 외부 환경 준비가 없으면 안전하게 진행할 수 없는 경우에만 `사용자 리뷰 요청`을 채우고 멈춘다.

## 배경

이전 follow-up은 concurrency별 실행 자체는 복구했지만, transport별 baseline 신뢰성을 아직 충족하지 못했다. 기본 `--profile cross`는 조용히 TCP만 실행하고, 명시적 `--transport ws`도 대부분의 비-Kotlin orchestrator에서 실제 filter가 적용되지 않아 ws row가 전체 tcp/ws/tls/wss command 결과로 작성된다.

## 사용자 리뷰 요청 흐름

user-only blocker는 review stub의 `사용자 리뷰 요청` 섹션에 기록한다. code-review가 검증하고 후속 상태를 만든다.

## Roadmap Targets

- Milestone: `agent-roadmap/milestones/high-performance-parallel-operations.md`
- Task ids:
  - `cross-baseline`: 지원 가능한 크로스 언어 request-response 병렬 baseline을 추가한다.
- Completion mode: check-on-pass

## 분석 결과

### 읽은 파일

- `agent-task/m-high-performance-parallel-operations/02+01_cross_baseline/code_review_cloud_G08_1.log`
- `agent-task/m-high-performance-parallel-operations/02+01_cross_baseline/plan_cloud_G08_1.log`
- `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh`
- `agent-test/runs/20260602-190745-proto-socket-stress-quick-cross.md`
- `agent-test/runs/20260602-192413-proto-socket-stress-quick-cross.md`
- 대표 non-filter orchestrators: `go/crosstest/go_python.go`, `python/crosstest/python_go.py`, `typescript/crosstest/typescript_go.ts`, `dart/crosstest/dart_go.dart`

### 실패 원인

- `run_stress.sh --quick --profile cross`가 기본 transport를 `tcp`로 바꿔 WS baseline을 생략한다.
- `PROTO_SOCKET_CROSSTEST_TRANSPORT=ws`를 넘겨도 여러 orchestrator가 이를 읽지 않아 선택 transport만 실행하지 않는다.
- `cross_transport_count`는 transport별 scenario label이 없는 전체 `PASS scenario=` 개수를 세므로, 선택 transport row의 근거가 transport-specific인지 보장하지 못한다.

### 범위 결정 근거

- 이번 후속은 transport별 cross baseline 신뢰성만 다룬다.
- concurrency env support, request window 증가는 이미 이전 follow-up에서 다룬 변경으로 유지할 수 있다.
- payload size matrix, gateway policy, protocol schema/API 변경은 범위 밖이다.

### 빌드 등급

- build=`cloud-G08`, review=`cloud-G08`. cross-language process orchestration과 benchmark evidence 신뢰성 회복 작업이다.

## 구현 체크리스트

- [x] `--profile cross` 기본 실행이 `tcp,ws`를 실행하거나, 실행하지 못하는 WS row를 `SKIPPED/BLOCKED`로 명시 기록하게 한다.
- [x] 모든 cross orchestrator 또는 runner 경로가 `PROTO_SOCKET_CROSSTEST_TRANSPORT`를 실제로 적용해 선택 transport만 실행하게 한다.
- [x] cross 결과 row의 pass count, latency/throughput, stability counter가 선택된 transport 실행의 실제 결과에서만 산출되게 한다.
- [x] `--quick --profile cross --lang go,python --transport ws` 결과에서 ws row가 tcp/tls/wss smoke가 아닌 WS-only 실행 근거를 갖는지 확인한다.
- [x] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

### [REVIEW_REVIEW_CROSS_BASELINE-1] transport별 실제 cross baseline 실행

#### 문제

기본 cross quick이 TCP만 실행하고, explicit WS 실행도 일부 orchestrator에서 전체 transport smoke 결과를 ws row로 기록한다. 이 상태에서는 transport별 cross baseline을 신뢰할 수 없다.

#### 해결 방법

- `run_stress.sh`의 cross 기본 transport 선택을 `tcp,ws` 계약으로 되돌리거나, 미실행 transport를 `SKIPPED/BLOCKED`로 기록한다.
- Dart/Go/Python/TypeScript 서버 orchestrator도 Kotlin 관련 orchestrator처럼 `PROTO_SOCKET_CROSSTEST_TRANSPORT`를 읽어 `tcp`, `ws`, `tls`, `wss` 중 선택된 축만 실행하게 한다.
- 단일 transport 실행에서 `Expected`와 `PASS scenarios`가 선택 transport의 scenario 수와 일치하도록 만든다.
- `cross_transport_count`가 전체 pass count를 transport pass count로 오해하지 않게 한다. 가능한 경우 transport-specific 실행 보장을 전제로 단일 command pass count를 쓰고, 그렇지 않으면 transport label을 기록/파싱한다.

#### 수정 파일 및 체크리스트

- [x] `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh`
- [x] Dart/Go/Python/TypeScript cross orchestrators
- [x] 결과 기록 schema/parser

#### 테스트 작성

- 작성: focused WS cross stress smoke.
- 작성: default cross quick regression.
- 작성: 전체 matrix regression.

#### 중간 검증

```bash
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh --quick --profile cross --lang go,python --transport ws
```

기대: Go -> Python, Python -> Go의 ws c1/c16/c64/c256 row가 WS-only 실행 결과에서 생성되고, PASS scenarios가 선택 transport 기대값과 일치한다. 결과 tail이나 summary에서 tcp/tls/wss가 ws row 근거로 섞이지 않는다.

## 의존 관계 및 구현 순서

- 기존 `01_lang_baseline` 완료 근거는 `agent-task/archive/2026/06/m-high-performance-parallel-operations/01_lang_baseline/complete.log`에서 확인되었다.

## 수정 파일 요약

| 파일 | 항목 |
|---|---|
| `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh` | REVIEW_REVIEW_CROSS_BASELINE-1 |
| Dart/Go/Python/TypeScript cross orchestrators | REVIEW_REVIEW_CROSS_BASELINE-1 |

## 최종 검증

```bash
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh --quick --profile cross --lang go,python --transport ws
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh --quick --profile cross
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all
git diff --check
```

기대: explicit WS smoke가 WS-only 근거로 PASS, default cross quick이 TCP/WS를 빠짐없이 실행하거나 미실행 transport를 명시적으로 기록, full matrix PASS, whitespace error 없음. 모든 코드 변경 완료 후 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다.
