<!-- task=m-inbound-queue-ordering/02+01_receive_thread_model plan=3 tag=REVIEW_REFACTOR_3 -->

# Review Follow-up Plan - REVIEW_REFACTOR_3

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

이 계획은 `code_review_cloud_G08_2.log`의 Required 항목만 해결한다. 구현 후 `CODE_REVIEW-cloud-G08.md`의 구현 에이전트 소유 섹션에 실제 변경 내용, 검증 명령, stdout/stderr를 채운 뒤 active 파일을 그대로 두고 리뷰를 요청한다. `complete.log` 작성, archive 이동, 최종 판정은 code-review 전용이다.

## Roadmap Targets

- Milestone: `agent-roadmap/milestones/inbound-queue-ordering.md`
- Task ids:
  - `thread-model`: handlers, request handlers, pending response map 접근의 thread-safety 기준을 언어별 구현 메모에 반영한다.
- Completion mode: check-on-pass

## 범위 결정 근거

- wire format, proto schema, nonce/responseNonce 의미는 변경하지 않는다.
- direct response dispatch 정책은 유지한다.
- gateway worker 구현은 하지 않는다.
- 범위는 실제 input-source backpressure, 관찰 가능한 테스트, 검증 출력 신뢰 회복으로 제한한다.

## 구현 체크리스트

- [ ] Dart TCP/WS/Web 수신 경로에서 `_parsing()`/`_dispatch()` await가 `unawaited`로 버려지지 않도록 실제 stream/event 입력 처리를 직렬화하거나 pause/resume으로 연결한다.
- [ ] TypeScript TCP/WS와 Kotlin WS가 promise/channel staging에만 쌓지 않고, 가능한 입력 source를 pause/resume하거나 명확한 bounded input gate로 backpressure를 전달하도록 수정한다.
- [ ] backpressure 테스트를 private queue/waiter 조작이 아니라 실제 client/read path 또는 fake source의 관찰 가능한 producer 대기 검증으로 교체한다.
- [ ] `CODE_REVIEW-cloud-G08.md` 검증 결과를 실제 재실행 stdout/stderr로 교체하고, package name/test runner/test file 수가 현재 repo 출력과 일치하게 한다.
- [ ] 최종 검증으로 `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all`을 실행한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

### [REVIEW_REFACTOR_3-1] Input Source Backpressure

#### 문제

현재 일부 구현은 inbound queue가 full일 때 `enqueueInbound` 자체는 기다리지만, transport callback은 이미 반환되어 다른 promise/channel/buffer에 데이터가 계속 쌓일 수 있다. 이는 `PROTOCOL.md`의 "frame read suspend" 계약을 만족하지 않는다.

#### 해결 방법

가능한 런타임에서는 source-level pause/resume을 사용한다. Dart `StreamSubscription`은 pause/resume, Node TCP는 `socket.pause()/resume()`을 우선 검토한다. WebSocket처럼 source-level backpressure 한계가 있는 경우에는 bounded input gate와 문서화된 한계를 두되, unbounded promise chain/channel staging은 피한다.

테스트는 core private field를 직접 조작하지 말고, 실제 read callback 또는 fake transport source가 capacity 이후 다음 packet 처리를 기다리는지 관찰한다.

#### 중간 검증

```bash
cd dart && dart test
cd go && go test -count=1 ./...
cd kotlin && ./gradlew test
cd python && python3 -m pytest -q
cd typescript && npm run check && npm test
```

기대 결과: 모든 명령 exit code 0. 검증 출력은 실제 stdout/stderr를 그대로 기록한다.

## 최종 검증

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

기대 결과: exit code 0, matrix 결과 파일의 최종 결과값 PASS.
