<!-- task=m-inbound-queue-ordering/07_python_gateway plan=3 tag=REVIEW_REVIEW_REVIEW_API -->

# Python Worker Gateway Close Race Test 후속 계획

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

이 계획은 `code_review_cloud_G08_2.log`의 Required 이슈만 해결한다. 코드 동작은 리뷰 중 강제 지연 재현에서 안전해진 것으로 확인되었으므로, 불필요한 구조 변경을 하지 말고 close race 회귀 테스트와 active review 체크리스트 정합성에 집중한다.

## 배경

`plan=2` 구현은 nested asyncio worker task를 제거해 강제 지연 재현을 통과했다. 그러나 테스트는 지연 조건을 직접 만들지 않아 이전 race를 회귀로 잡지 못하고, active review 체크리스트도 active plan과 맞지 않았다.

## 사용자 리뷰 요청 흐름

구현 중 user-only blocker가 있으면 active review stub의 `사용자 리뷰 요청` 섹션을 채운다. 이 작업은 repo 내부 테스트와 review artifact 정합성 문제이므로 사용자 리뷰 요청 대상이 아니다.

## Roadmap Targets

- Milestone: `agent-roadmap/milestones/inbound-queue-ordering.md`
- Task ids:
  - `python-gateway`: Python process/asyncio worker gateway 후보를 적용한다.
- Completion mode: check-on-pass

## 분석 결과

### 읽은 파일

- `agent-task/m-inbound-queue-ordering/07_python_gateway/plan_cloud_G08_2.log`
- `agent-task/m-inbound-queue-ordering/07_python_gateway/code_review_cloud_G08_2.log`
- `python/proto_socket/communicator.py`
- `python/test/test_communicator.py`

### 범위 결정 근거

- 수정 범위는 지연 close race 회귀 테스트와 active review 파일 작성이다.
- `python/proto_socket/communicator.py`는 새 실패가 발견될 때만 최소 수정한다.
- process parse failure, full queue backpressure, 전체 matrix, whitespace 검증은 이미 통과 근거가 있으므로 범위 밖으로 둔다.

### 빌드 등급

- build/review: `cloud-G08`. 이유: asyncio scheduler 지연을 다루는 테스트와 검증 신뢰 회복이 포함된다.

## 구현 체크리스트

- [ ] Python test에 asyncio gateway worker yield를 지연시키는 close race 회귀 검증을 추가하거나 기존 `test_gateway_close_lifecycle_in_flight`를 강화한다.
- [ ] 지연 조건에서도 close 후 `_inbound_queue.qsize() == 0`, `_receive_task.done() == True`, `_gateway_tasks` empty, listener 처리 결과가 기대와 일치함을 검증한다.
- [ ] active `CODE_REVIEW-cloud-G08.md`의 구현 항목별 완료 여부와 구현 체크리스트를 이 plan의 항목 텍스트/순서와 일치시킨다.
- [ ] 중간 검증으로 `cd python && python3 -m pytest -q test/test_communicator.py`를 실행한다.
- [ ] 최종 검증으로 `bash agent-ops/skills/project/run-proto-socket-test-matrix/scripts/run_matrix.sh --all`을 실행한다.
- [ ] `git diff --check`를 실행한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

### [REVIEW_REVIEW_REVIEW_API-1] delayed close race test and review sync

#### 문제

현재 close race 테스트는 worker completion 지연을 강제로 만들지 않아 이전 nested task race를 회귀로 잡기 어렵다. 또한 active review 체크리스트가 active plan과 불일치했다.

#### 해결 방법

- `monkeypatch` 또는 local hook으로 `proto_socket.communicator.asyncio.sleep(0)`을 지연시켜 close가 worker yield 중 호출되는 조건을 만든다.
- 이 조건에서 close 이후 queue/task 상태를 확인한다.
- active review checklist를 이 plan과 동일하게 작성한다.

#### 테스트 작성

- 기존 `test_gateway_close_lifecycle_in_flight`를 강화하거나 별도 테스트를 추가한다.

## 수정 파일 요약

| 파일 | 항목 |
|------|------|
| `python/test/test_communicator.py` | REVIEW_REVIEW_REVIEW_API-1 |
| `agent-task/m-inbound-queue-ordering/07_python_gateway/CODE_REVIEW-cloud-G08.md` | REVIEW_REVIEW_REVIEW_API-1 |

## 최종 검증

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

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