<!-- task=m-high-performance-parallel-operations/05+04_slow_mix plan=0 tag=TEST -->

# Plan - TEST

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

`CODE_REVIEW-cloud-G08.md`의 구현 에이전트 소유 섹션을 실제 구현 내용, 검증 명령, stdout/stderr로 채우는 것이 구현의 마지막 단계다. `05+04_slow_mix`는 directory dependency상 `04+01_load_profile_scales`의 `complete.log`가 필요하다. 그 predecessor가 없으면 구현을 시작하지 말고 review stub의 `사용자 리뷰 요청` 또는 진행 상태에 근거를 남긴다. archive, `complete.log`, 최종 판정은 code-review 전용이다.

## 배경

`slow-mix`는 빠른 handler와 느린 handler가 섞인 운영형 부하에서 connection별 FIFO/nonce 독립성이 유지되는지 확인하는 새 load profile이다. 기존 `roundtrip`, `burst`, `sustained`, `parallel`, `payload`에는 느린 handler가 같은 connection을 지연시키는 계약과 다른 connection 격리를 동시에 검증하는 축이 없다. 이 계획은 scale 확장 작업 이후 새 `slow-mix` profile을 추가한다.

## 사용자 리뷰 요청 흐름

구현 중 blocker는 active `CODE_REVIEW-cloud-G08.md`의 `사용자 리뷰 요청` 섹션에 기록한다. code-review가 그 요청을 검증하고 실제 `USER_REVIEW.md` 작성 여부를 판단한다.

## Roadmap Targets

- Milestone: `agent-roadmap/milestones/high-performance-parallel-operations.md`
- Task ids:
  - `slow-mix`: 빠른 handler와 느린 handler가 섞인 혼합 부하 추가
- Completion mode: check-on-pass

## 분석 결과

### 읽은 파일

- `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-ops/skills/common/_templates/implementation-user-review-request-section.md`
- `agent-roadmap/current.md`
- `agent-roadmap/milestones/high-performance-parallel-operations.md`
- `agent-test/local/rules.md`
- `agent-test/local/proto-socket-full-matrix.md`
- `agent-test/local/typescript-smoke.md`
- `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh`
- `typescript/bench/stress.ts`
- `dart/bench/stress.dart`
- `go/bench/stress.go`
- `python/bench/stress.py`
- `kotlin/crosstest/stress.kt`
- `agent-task/archive/2026/06/m-high-performance-parallel-operations/01_lang_baseline/complete.log`

### 테스트 환경 규칙

`test_env=local`. `agent-test/local/rules.md`를 읽었고 project-wide/full-cycle은 `agent-test/local/proto-socket-full-matrix.md`, TypeScript 변경은 `agent-test/local/typescript-smoke.md`가 매칭된다. slow-mix 전용 test profile 문서는 없으므로 `run_stress.sh --profile slow-mix` focused run을 fallback verification source로 사용하고, 최종 full matrix로 protocol/API 회귀를 확인한다.

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

- `slow-mix`: 현재 `ALL_PROFILES`에는 slow-mix가 없고, runner usage에도 설명이 없다.
- 기존 `parallel`은 다중 connection 격리를 보지만 handler speed mix를 만들지 않는다.
- 기존 `burst`는 FIFO를 보지만 같은 connection slow handler 지연 계약과 다른 connection 독립성을 동시에 보지 않는다.

### 심볼 참조

renamed/removed symbol 없음. 새 profile name `slow-mix`는 runner usage와 언어별 `ALL_PROFILES`/runner map에 추가해야 한다.

### 분할 판단

split policy를 먼저 평가했다. shared task group은 `m-high-performance-parallel-operations`다. 이 plan은 `05+04_slow_mix`이며 predecessor `04`는 active/archived `complete.log`가 아직 없다. directory dependency에 따라 `04+01_load_profile_scales` PASS 이후 구현을 시작해야 한다. slow-mix는 새 profile 추가, handler behavior 설계, multi-connection verification이 포함되어 scale 조정 plan과 분리한다.

### 범위 결정 근거

wire format, proto schema, nonce 의미, gateway policy, Kotlin TCP/WS deferred bottleneck 수정은 제외한다. slow handler sleep/delay는 test harness 내부에만 둔다. public API는 변경하지 않는다.

### 빌드 등급

cloud-G08. 새 concurrency profile과 다중 언어 구현이 필요하고, handler 지연이 FIFO/nonce 결과에 미치는 영향을 review만으로 잡기 어렵다.

## 구현 체크리스트

- [ ] [TEST-1] `run_stress.sh` usage와 result contract에 `slow-mix` profile을 추가한다.
- [ ] [TEST-2] Dart/Go/Kotlin/Python/TypeScript harness에 `slow-mix` profile을 추가한다. 검증: 느린 handler가 같은 connection FIFO를 계약대로 지연시키되 다른 connection의 nonce/FIFO 상태를 오염시키지 않는다.
- [ ] [TEST-3] focused slow-mix stress, TypeScript smoke, 전체 matrix를 실행하고 결과 파일 경로를 review stub에 기록한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

## [TEST-1] Runner Profile Contract

### 문제

[run_stress.sh](/config/workspace/proto-socket/agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh:25)는 profile 목록에 `slow-mix`를 포함하지 않는다. 언어별 unknown profile은 optional SKIP처럼 기록될 수 있어, 새 profile 계약을 runner usage와 harness map에 명시해야 한다.

### 해결 방법

Before:

```bash
# agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh:25
  parallel   multi-connection FIFO / nonce isolation
  payload    payload size matrix request-response
```

After:

```bash
  parallel   multi-connection FIFO / nonce isolation
  slow-mix   mixed fast/slow handler load, same-connection delay and cross-connection isolation
  payload    payload size matrix request-response
```

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

- [ ] `run_stress.sh` usage에 `slow-mix` 설명을 추가한다.
- [ ] result record stability pass criteria는 유지한다.

### 테스트 작성

별도 shell test는 작성하지 않는다. `--help`와 focused stress run으로 검증한다.

### 중간 검증

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

기대: `slow-mix` 설명 포함.

## [TEST-2] Slow Mix Harness

### 문제

언어별 profile list와 runner map은 [TypeScript](/config/workspace/proto-socket/typescript/bench/stress.ts:53), [Dart](/config/workspace/proto-socket/dart/bench/stress.dart:21), [Go](/config/workspace/proto-socket/go/bench/stress.go:41), [Python](/config/workspace/proto-socket/python/bench/stress.py:34), [Kotlin](/config/workspace/proto-socket/kotlin/crosstest/stress.kt:44)에 `slow-mix`를 포함하지 않는다. 기존 `parallel`은 [TypeScript](/config/workspace/proto-socket/typescript/bench/stress.ts:535) 기준 모든 handler가 같은 echo latency를 갖는다.

### 해결 방법

Before:

```ts
// typescript/bench/stress.ts:53
const ALL_PROFILES = ["roundtrip", "burst", "sustained", "parallel", "payload", "gateway"] as const;
```

After:

```ts
const ALL_PROFILES = ["roundtrip", "burst", "sustained", "parallel", "slow-mix", "payload", "gateway"] as const;
```

각 언어에 `profileSlowMix`를 추가한다. 권장 shape:

- quick: 4 clients, perClient 20, slowEvery 5, slowDelay 50ms.
- full: 16 clients, perClient 200, slowEvery 10, slowDelay 100ms.
- 같은 connection에서는 response latency가 느린 request 뒤에 FIFO 계약대로 지연될 수 있음을 허용한다.
- 다른 connection의 nonce/type/FIFO counters는 오염되지 않아야 한다.
- row axis는 `clients=<n>,slowEvery=<n>,delayMs=<n>`처럼 재현 가능한 값으로 둔다.

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

- [ ] `typescript/bench/stress.ts`에 `slow-mix` profile과 runner를 추가한다.
- [ ] `dart/bench/stress.dart`에 `slow-mix` profile과 runner를 추가한다.
- [ ] `go/bench/stress.go`에 `slow-mix` profile과 runner를 추가한다.
- [ ] `python/bench/stress.py`에 `slow-mix` profile과 runner를 추가한다.
- [ ] `kotlin/crosstest/stress.kt`에 `slow-mix` profile과 runner를 추가하고 기존 deferred bottleneck 정책을 보존한다.

### 테스트 작성

별도 unit test는 작성하지 않는다. 새 profile의 focused stress row가 regression artifact다.

### 중간 검증

```bash
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh --quick --profile slow-mix --lang typescript --transport tcp
```

기대: TypeScript slow-mix row PASS, stability counters 0.

## [TEST-3] Verification

### 문제

새 profile은 parser/runner integration이 깨지기 쉽다. focused run과 기존 TypeScript smoke, full matrix가 필요하다.

### 해결 방법

focused slow-mix run으로 새 profile row를 확인하고, TypeScript smoke와 full matrix로 기존 protocol/API 동작을 확인한다.

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

- [ ] focused slow-mix quick run 결과 파일을 기록한다.
- [ ] TypeScript smoke를 실행한다.
- [ ] full matrix를 실행한다.

### 테스트 작성

추가 test file 없음.

### 중간 검증

```bash
git diff --check
```

기대: 출력 없음.

## 의존 관계 및 구현 순서

1. `05+04_slow_mix`는 runtime dependency상 `04+01_load_profile_scales`의 `complete.log`가 있어야 시작한다.
2. predecessor가 없으면 구현하지 말고 active review stub에 상태를 기록한다.
3. TEST-1 runner contract, TEST-2 언어별 harness, TEST-3 검증 순서로 진행한다.

## 수정 파일 요약

| 파일 | 항목 |
|---|---|
| `agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh` | TEST-1, TEST-3 |
| `typescript/bench/stress.ts` | TEST-2 |
| `dart/bench/stress.dart` | TEST-2 |
| `go/bench/stress.go` | TEST-2 |
| `python/bench/stress.py` | TEST-2 |
| `kotlin/crosstest/stress.kt` | TEST-2 |

## 최종 검증

```bash
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh --quick --profile slow-mix --lang typescript --transport tcp
cd typescript && npm run check && npm test
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh --quick --profile slow-mix --lang dart,go,python,typescript --transport tcp
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all
git diff --check
```

기대: focused slow-mix PASS, TypeScript smoke PASS, multi-language quick TCP PASS 또는 explicit required SKIP for known deferred Kotlin limits, full matrix PASS, whitespace 오류 없음.

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