# Complete - m-agent-readable-repository-refactor/05_http_provider_adapters

## 완료 일시

2026-07-17

## 요약

OpenAI-compatible/vLLM HTTP provider adapter의 동일 package 책임 분해와 회귀 보완을 3회 리뷰 루프로 완료했으며 최종 판정은 PASS다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G07_0.log` | `code_review_local_G07_0.log` | FAIL | 분해 과정에서 확인된 model fallback, typed tools, reasoning 검증, HTTP full-cycle 증거 공백을 후속 범위로 분리했다. |
| `plan_cloud_G07_1.log` | `code_review_cloud_G07_1.log` | FAIL | 기능 회귀는 복구했으나 reasoning 전체 이벤트 순서 assertion과 현재 소스에 일치하는 fresh 검증 증거가 필요했다. |
| `plan_local_G05_2.log` | `code_review_local_G05_2.log` | PASS | 두 reasoning alias case의 `start → reasoning_delta → delta → complete` 순서와 fresh package/Node/readability 검증을 확인했다. |

## 구현/정리 내용

- `openai_compat`와 `vllm` adapter를 config/request/stream/provider tunnel/probe 책임 파일로 분리하면서 기존 package/API 경계를 유지했다.
- OpenAI-compatible input model fallback, vLLM typed tools 전달, `reasoning_content` 우선 및 `reasoning` fallback 이벤트 변환을 회귀 테스트로 고정했다.
- vLLM tunnel 테스트를 별도 파일로 분리하고 reasoning 테스트가 start/reasoning/content/complete 전체 이벤트 수와 순서를 직접 검증하도록 보완했다.

## 최종 검증

- `GOCACHE=/tmp/iop-go-cache go test -count=1 ./apps/node/internal/adapters/vllm -run '^TestVllmExecuteStreamsReasoningDeltas$'` - PASS; `ok iop/apps/node/internal/adapters/vllm`.
- `GOCACHE=/tmp/iop-go-cache go test -count=1 ./apps/node/internal/adapters/openai_compat ./apps/node/internal/adapters/vllm` - PASS; 두 package 모두 통과.
- `GOCACHE=/tmp/iop-go-cache go test -count=1 ./apps/node/...` - PASS; 전체 Node package 회귀 통과.
- `gofmt -d apps/node/internal/adapters/vllm/vllm_test.go apps/node/internal/adapters/vllm/vllm_tunnel_test.go` - PASS; 출력 없음.
- `make readability-audit` - PASS; `RATCHET OK`, 411 files, 110283 LOC, 3278 functions, 180 violations.
- `git diff --check -- apps/node/internal/adapters/openai_compat apps/node/internal/adapters/vllm agent-task/m-agent-readable-repository-refactor/05_http_provider_adapters` - PASS; 출력 없음.
- `GOCACHE=/tmp/iop-go-cache IOP_VLLM_MODE=fake ./scripts/e2e-openai-vllm.sh` - BLOCKED; 이전 루프에서 non-streaming 요청에도 `stream=true`를 요구하는 fake fixture가 HTTP 400을 반환했으며 실제 provider tunnel 도달 증거와 원인은 `code_review_cloud_G07_1.log`에 보존했다.

## 잔여 Nit

- 없음

## 후속 작업

- fake vLLM fixture/E2E 정합성은 기존 sibling `08_e2e_scripts` 범위에서 다룬다.
