# Complete - m-openai-compatible-raw-tunnel-sideband-passthrough/01_node_relay

## 완료 일시

2026-07-07

## 요약

Node provider raw tunnel relay의 `node-relay` 작업을 3회 리뷰 루프로 완료했다. 최종 판정은 PASS다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G07_0.log` | `code_review_local_G07_0.log` | FAIL | tunnel error/cancel ordered ERROR semantics와 duplicate Node ERROR 방지 테스트가 필요했다. |
| `plan_local_G07_1.log` | `code_review_local_G07_1.log` | FAIL | SDD S03 Gemma content/tool-call raw byte comparison fixture가 부족했다. |
| `plan_local_G04_2.log` | `code_review_local_G04_2.log` | PASS | Gemma content/tool-call SSE chunks fixture와 exact body byte comparison evidence를 추가했다. |

## 구현/정리 내용

- Node runtime에 provider raw tunnel adapter/sink 타입과 `ProviderTunnelFrame` 경로를 정리했다.
- Node transport/session과 node handler가 `ProviderTunnelRequest`를 처리하고 adapter-owned error frame을 중복 전송하지 않도록 검증했다.
- `openai_compat`와 `vllm` adapter가 provider HTTP status/header/body bytes를 ordered tunnel frames로 relay하는 경로를 검증했다.
- vLLM tunnel success coverage에 Qwen reasoning fixture와 Gemma content/tool-call fixture의 byte-identical body comparison evidence를 남겼다.

## 최종 검증

- `gofmt -l apps/node/internal/adapters/vllm/vllm_test.go` - PASS; 출력 없음.
- `git diff --check` - PASS; 출력 없음.
- `go test -count=1 ./apps/node/internal/adapters/vllm -run 'TestVllmTunnelProvider'` - PASS; `ok  	iop/apps/node/internal/adapters/vllm	0.111s`.
- `go test -count=1 ./apps/node/internal/transport ./apps/node/internal/node ./apps/node/internal/adapters/openai_compat ./apps/node/internal/adapters/vllm` - PASS; transport, node, openai_compat, vllm packages 모두 통과.

## Roadmap Completion

- Milestone: `agent-roadmap/phase/routing-policy-model-orchestration/milestones/openai-compatible-raw-tunnel-sideband-passthrough.md`
- Milestone link: [Milestone 문서](agent-roadmap/phase/routing-policy-model-orchestration/milestones/openai-compatible-raw-tunnel-sideband-passthrough.md)
- Completed task ids:
  - `node-relay`: PASS; evidence=`agent-task/archive/2026/07/m-openai-compatible-raw-tunnel-sideband-passthrough/01_node_relay/plan_local_G07_0.log`, `agent-task/archive/2026/07/m-openai-compatible-raw-tunnel-sideband-passthrough/01_node_relay/code_review_local_G07_0.log`, `agent-task/archive/2026/07/m-openai-compatible-raw-tunnel-sideband-passthrough/01_node_relay/plan_local_G07_1.log`, `agent-task/archive/2026/07/m-openai-compatible-raw-tunnel-sideband-passthrough/01_node_relay/code_review_local_G07_1.log`, `agent-task/archive/2026/07/m-openai-compatible-raw-tunnel-sideband-passthrough/01_node_relay/plan_local_G04_2.log`, `agent-task/archive/2026/07/m-openai-compatible-raw-tunnel-sideband-passthrough/01_node_relay/code_review_local_G04_2.log`; verification=`go test -count=1 ./apps/node/internal/adapters/vllm -run 'TestVllmTunnelProvider'`, `go test -count=1 ./apps/node/internal/transport ./apps/node/internal/node ./apps/node/internal/adapters/openai_compat ./apps/node/internal/adapters/vllm`
- Not completed task ids: 없음

## 잔여 Nit

- 없음

## 후속 작업

- 없음
