# Complete - m-model-group-mixed-provider-dispatch/04_custom_field_preservation

## 완료 일시

2026-07-12

## 요약

Provider-pool Chat custom field preservation 작업을 1회 리뷰 루프로 검토했고 최종 판정은 PASS다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G06_0.log` | `code_review_local_G06_0.log` | PASS | Chat provider-pool envelope-first decode, tunnel raw field preservation, normalized unknown-field drop policy가 구현 및 검증됨 |

## 구현/정리 내용

- Chat Completions provider-pool route가 strict unknown-field decode 전에 `model` routing envelope를 읽고 provider-pool 경로에서만 lenient request decode를 사용한다.
- Provider tunnel path가 raw request body의 unknown/Codex/provider-specific field를 model rewrite와 catalog generation policy 외에는 보존함을 regression test로 확인했다.
- Normalized provider path가 unknown provider-specific field를 `RunRequest.Input`에 임의 전파하지 않고 standard supported field만 반영함을 regression test로 확인했다.

## 최종 검증

- `GOCACHE=/tmp/iop-go-cache go test ./apps/edge/internal/openai -run 'ProviderPool.*Unknown|ProviderPoolRejectsResponseMode|MixedProviderPool' -count=1` - PASS; `ok iop/apps/edge/internal/openai 0.009s`
- `GOCACHE=/tmp/iop-go-cache go test ./apps/edge/internal/openai -run 'ProviderPoolTunnelPreservesUnknownFields|ProviderPoolNormalizedIgnoresUnknownFields' -count=1 -v` - PASS; `TestChatCompletionsProviderPoolTunnelPreservesUnknownFields`와 `TestChatCompletionsProviderPoolNormalizedIgnoresUnknownFields` 통과, `ok iop/apps/edge/internal/openai 0.008s`
- `GOCACHE=/tmp/iop-go-cache go test ./apps/edge/internal/openai -count=1` - PASS; `ok iop/apps/edge/internal/openai 6.781s`

## Roadmap Completion

- Milestone: `agent-roadmap/phase/routing-policy-model-orchestration/milestones/model-group-mixed-provider-dispatch.md`
- Milestone link: [Milestone 문서](agent-roadmap/phase/routing-policy-model-orchestration/milestones/model-group-mixed-provider-dispatch.md)
- Completed task ids:
  - `custom-field-preservation`: PASS; evidence=`agent-task/archive/2026/07/m-model-group-mixed-provider-dispatch/04_custom_field_preservation/plan_local_G06_0.log`, `agent-task/archive/2026/07/m-model-group-mixed-provider-dispatch/04_custom_field_preservation/code_review_local_G06_0.log`; verification=`GOCACHE=/tmp/iop-go-cache go test ./apps/edge/internal/openai -count=1`
- Not completed task ids: 없음

## 잔여 Nit

- 없음

## 후속 작업

- 없음
