<!-- task=m-performance-hotspot-optimization/08_ts_ws_1mb_payload plan=2 tag=REVIEW_REVIEW_PERF_TS_PAYLOAD -->

# TypeScript WS 1MB Payload Evidence Follow-up Plan

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

이 작업은 이전 code review의 남은 Required 이슈만 좁게 해결한다. 구현 후 active `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 실제 변경 내용과 검증 출력으로 채워야 완료된다. 검증 명령을 실행하고 실제 stdout/stderr 또는 저장된 결과 파일 경로를 기록한 뒤 active 파일을 유지한 채 리뷰 준비를 보고한다. 최종 판정, log rename, `complete.log`, archive 이동은 code-review 스킬 전용이다.

구현 중 사용자만 결정할 수 있는 제품 선택, 사용자 소유 외부 환경, secret, 범위 충돌이 필요하면 review stub의 `사용자 리뷰 요청` 섹션에 정확한 결정, 증거, 실행한 명령/출력, 자동 후속 불가 이유, 재개 조건을 적고 중단한다. 구현 에이전트는 사용자에게 직접 질문하거나 선택지를 제시하거나 `request_user_input`을 호출하지 않는다. 후속 에이전트가 명령 재실행이나 산출물 수집으로 해소할 수 있는 검증 증거 공백은 사용자 리뷰 요청이 아니다.

## Roadmap Targets

- Milestone: `agent-roadmap/milestones/performance-hotspot-optimization.md`
- Task ids:
  - `ts-ws-1mb`: TypeScript WS 1MB payload 경로를 분석하고 p99 latency 또는 throughput을 개선한다.
- Completion mode: check-on-pass

## 이전 리뷰 요약

- Archived plan: `agent-task/m-performance-hotspot-optimization/08_ts_ws_1mb_payload/plan_cloud_G07_1.log`
- Archived review: `agent-task/m-performance-hotspot-optimization/08_ts_ws_1mb_payload/code_review_cloud_G07_1.log`
- Verdict: FAIL
- Required 이슈:
  - TypeScript WS `payload=1MB` 리뷰 재측정은 `32.8 rps / p99 233.621ms`였고, 이전 full 기준 `35.8 rps / p99 217.890ms` 대비 p99 또는 throughput 개선이 확인되지 않았다.
  - active review 문서에는 마지막 receive copy 제거 설명만 있고, 개선되지 않은 p99/throughput에 대한 코드/측정 근거 기반 잔여 병목 문서화가 없다.

## 구현 체크리스트

- [ ] TypeScript WS `payload=1MB` 완료 조건을 정합하게 만든다. 같은 host/runtime/profile 기준으로 p99 또는 throughput을 개선하거나, 개선되지 않으면 실제 result row 비교와 코드 근거가 있는 잔여 병목 후보를 `CODE_REVIEW-cloud-G07.md`에 명확히 문서화한다.
- [ ] 문서에는 최소한 이전 full 기준 row, 새 targeted full row, stability counters, p99/throughput 개선 여부, memory 변화가 포함되어야 하며, p99/throughput이 개선되지 않았으면 "개선되지 않음"을 명시한다.
- [ ] 잔여 병목을 문서화하는 경우 generic 추측을 피하고, TypeScript WS receive/send 경로에서 실제로 남아 있는 copy/scheduling/serialization 후보를 소스 파일과 연결해 적는다.
- [ ] `cd typescript && npm run check && npm test`를 실행한다.
- [ ] `git diff --check -- typescript/src/node_ws_client.ts typescript/test/ws.test.ts agent-task/m-performance-hotspot-optimization/08_ts_ws_1mb_payload/CODE_REVIEW-cloud-G07.md`를 실행한다.
- [ ] `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh --full --lang typescript --transport ws --profile payload`를 실행하고 TypeScript WS `payload=1MB` row의 throughput/p99/stability/memory를 기록한다.
- [ ] 코드 경로를 변경했다면 `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_performance.sh --quick`를 실행해 project performance quick smoke가 회귀 없이 기록되는지 확인한다. 코드 변경이 없으면 미실행 사유를 `검증 결과`에 명시한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

### [REVIEW_REVIEW_PERF_TS_PAYLOAD-1] 1MB 성능 완료 조건 정합성

#### 문제

이전 full 기준 `agent-test/runs/20260605-115943-proto-socket-performance-full.md`의 TypeScript WS `payload=1MB` row는 `35.8 rps / p99 217.890ms / Mem 273.1MB`였다. 리뷰 재측정 `agent-test/runs/20260605-235441-proto-socket-stress-full.md`의 같은 row는 `32.8 rps / p99 233.621ms / Mem 170.8MB`로, memory는 낮아졌지만 이 task의 p99 또는 throughput 개선 조건은 충족하지 못했다.

현재 `CODE_REVIEW` 문서는 receive path 마지막 copy 제거와 empty control frame 회귀 테스트를 설명하지만, p99/throughput이 개선되지 않은 사실과 남은 병목 후보를 실제 코드 경로와 연결해 설명하지 않는다. 따라서 plan-completeness와 roadmap completion evidence가 불충분하다.

#### 해결 방법

- 추가 최적화를 선택한다면 TypeScript WS 1MB 경로에 한정해 구현하고, 새 targeted full row가 이전 full 기준보다 p99 또는 throughput 중 하나 이상 개선되는지 기록한다.
- 추가 최적화를 선택하지 않거나 수치가 여전히 개선되지 않으면, active `CODE_REVIEW-cloud-G07.md`의 구현 에이전트 소유 섹션에 다음 내용을 구체적으로 적는다.
  - 이전 full 기준 row와 새 targeted full row의 throughput/p99/memory/stability 비교.
  - p99/throughput 개선 여부를 명시한다. 개선되지 않았으면 완료 근거가 "개선"이 아니라 "잔여 병목 문서화"임을 분명히 한다.
  - 남아 있는 병목 후보를 소스 근거와 연결한다. 예: client-to-server masked frame의 `unmask`/`maskPayload` copy, Node stream write scheduling, protobuf encode/decode, communicator request/response 처리 중 실제 코드에서 확인한 후보.
  - memory 개선만으로 p99/throughput 개선을 대체했다고 쓰지 않는다.
- review stub의 `검증 결과`에는 실제 stdout/stderr와 결과 파일 경로를 남긴다.

#### 중간 검증

```bash
git diff --check -- typescript/src/node_ws_client.ts typescript/test/ws.test.ts agent-task/m-performance-hotspot-optimization/08_ts_ws_1mb_payload/CODE_REVIEW-cloud-G07.md
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh --full --lang typescript --transport ws --profile payload
```

## 수정 파일 요약

| 파일 | 항목 |
|---|---|
| `typescript/src/node_ws_client.ts` | 선택 사항: 추가 최적화를 구현하는 경우 |
| `typescript/test/ws.test.ts` | 선택 사항: 추가 최적화에 회귀 테스트가 필요한 경우 |
| `agent-task/m-performance-hotspot-optimization/08_ts_ws_1mb_payload/CODE_REVIEW-cloud-G07.md` | REVIEW_REVIEW_PERF_TS_PAYLOAD-1 증거 및 잔여 병목 문서화 |

## 최종 검증

```bash
cd typescript && npm run check && npm test
```

기대 결과: 종료 코드 0, TypeScript typecheck PASS, Vitest PASS.

```bash
git diff --check -- typescript/src/node_ws_client.ts typescript/test/ws.test.ts agent-task/m-performance-hotspot-optimization/08_ts_ws_1mb_payload/CODE_REVIEW-cloud-G07.md
```

기대 결과: 종료 코드 0.

```bash
bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_stress.sh --full --lang typescript --transport ws --profile payload
```

기대 결과: 결과 기록 파일 생성, TypeScript WS payload rows PASS, `payload=1MB` row stability counters all 0, p99 또는 throughput 개선 여부와 남은 병목 문서화가 서로 일치.

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

기대 결과: 코드 경로를 변경했다면 performance quick 결과 기록 파일 생성 및 PASS. 코드 경로를 변경하지 않았다면 미실행 사유가 review stub에 명시되어야 한다.

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