# Complete - m-codex-app-server-streaming-migration/04+03_stream_smoke

## 완료 일시

2026-06-12T23:42:10Z

## 요약

Codex app-server stream smoke follow-up을 2회 리뷰 루프로 완료했다. `thread/start` JSON-RPC params 계약을 수정하고 실제 `codex` profile smoke까지 통과했으며 최종 판정은 PASS.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_cloud_G07_0.log` | `code_review_cloud_G07_0.log` | FAIL | 실제 `codex app-server`의 `thread/start` 요청에서 `params` 필드 누락으로 real smoke 실패 |
| `plan_cloud_G07_1.log` | `code_review_cloud_G07_1.log` | PASS | `params` 직렬화 보장, 회귀 테스트 추가, mock 및 real `codex` smoke 검증 통과 |

## 구현/정리 내용

- `apps/node/internal/adapters/cli/codex_app_server.go`에서 app-server JSON-RPC request가 항상 `params` object를 포함하도록 보장했다.
- `codexAppServerInit`의 `thread/start` 호출을 빈 params object로 전송하고, `send()`가 nil params를 빈 map으로 정규화하도록 했다.
- `apps/node/internal/adapters/cli/codex_app_server_internal_test.go`에 `TestCodexAppServerInit_ThreadStartHasParams`를 추가해 `thread/start` params 누락 회귀를 방지했다.
- `scripts/e2e-smoke.sh`에서 `codex-app-server` profile을 persistent-style session 검증 대상으로 분리하고 `/sessions`의 `mode=codex-app-server` entry를 확인했다.

## 최종 검증

- `test -f agent-task/archive/2026/06/m-codex-app-server-streaming-migration/03+02_default_profile/complete.log && echo OK` - PASS; `OK`.
- `command -v codex` - PASS; `/config/.npm-global/bin/codex`.
- `go test ./apps/node/internal/adapters/cli -run 'TestCodexAppServer.*' -count=1` - PASS; `ok  	iop/apps/node/internal/adapters/cli	0.006s`.
- `go test ./apps/node/... ./apps/edge/... -count=1` - PASS; node/edge package suite completed successfully, including `apps/node/internal/adapters/cli` and `apps/edge/internal/transport`.
- `./scripts/e2e-smoke.sh` - PASS; mock profile completed foreground x2, background x1, `/sessions`, `/terminate-session`.
- `IOP_E2E_PROFILE=codex IOP_E2E_RUN_TIMEOUT=120 IOP_E2E_STATUS_TIMEOUT=120 ./scripts/e2e-smoke.sh` - PASS; real `codex` profile emitted three node messages, listed `mode=codex-app-server` sessions for `default` and `session2`, terminated `session2`, and reported `Real profile (codex) status: PASSED`.

## Roadmap Completion

- Milestone: `agent-roadmap/phase/automation-runtime-bridge/milestones/codex-app-server-streaming-migration.md`
- Completed task ids:
  - `stream-smoke`: PASS; evidence=`agent-task/archive/2026/06/m-codex-app-server-streaming-migration/04+03_stream_smoke/plan_cloud_G07_1.log`, `agent-task/archive/2026/06/m-codex-app-server-streaming-migration/04+03_stream_smoke/code_review_cloud_G07_1.log`; verification=`go test ./apps/node/internal/adapters/cli -run 'TestCodexAppServer.*' -count=1`, `go test ./apps/node/... ./apps/edge/... -count=1`, `./scripts/e2e-smoke.sh`, `IOP_E2E_PROFILE=codex IOP_E2E_RUN_TIMEOUT=120 IOP_E2E_STATUS_TIMEOUT=120 ./scripts/e2e-smoke.sh`
- Not completed task ids: 없음

## 잔여 Nit

- 없음

## 후속 작업

- 없음
