diff --git a/agent-roadmap/phase/routing-policy-model-orchestration/PHASE.md b/agent-roadmap/phase/routing-policy-model-orchestration/PHASE.md index 2c8278a..2524bf9 100644 --- a/agent-roadmap/phase/routing-policy-model-orchestration/PHASE.md +++ b/agent-roadmap/phase/routing-policy-model-orchestration/PHASE.md @@ -28,7 +28,7 @@ IOP의 OpenAI-compatible, A2A, IOP native 입력 표면에서 들어온 요청 - 경로: [model-group-mixed-provider-dispatch](../../archive/phase/routing-policy-model-orchestration/milestones/model-group-mixed-provider-dispatch.md) - 요약: model group provider pool에서 OpenAI-compatible provider와 Ollama/CLI 같은 normalized provider를 같은 후보군으로 두고, 기존 capacity+priority 선택 뒤 OpenAI-compatible 지원 provider는 모두 passthrough, native provider는 normalized 실행 경로로 자동 결정한다. -- [진행중] OpenAI-compatible Provider Passthrough 계약 동기화 +- [검토중] OpenAI-compatible Provider Passthrough 계약 동기화 - 경로: [openai-compatible-provider-passthrough-contract-sync](milestones/openai-compatible-provider-passthrough-contract-sync.md) - 요약: 사용자 설계 의도에 맞춰 `model` 기반 provider capability routing을 source of truth로 두고, OpenAI-compatible provider의 provider-native payload를 Edge allowlist 없이 raw tunnel로 보존하며, metadata는 IOP known-key를 read-only로 발췌하는 container로만 정리한다. diff --git a/agent-roadmap/phase/routing-policy-model-orchestration/milestones/openai-compatible-provider-passthrough-contract-sync.md b/agent-roadmap/phase/routing-policy-model-orchestration/milestones/openai-compatible-provider-passthrough-contract-sync.md index 36b5f00..91ae64b 100644 --- a/agent-roadmap/phase/routing-policy-model-orchestration/milestones/openai-compatible-provider-passthrough-contract-sync.md +++ b/agent-roadmap/phase/routing-policy-model-orchestration/milestones/openai-compatible-provider-passthrough-contract-sync.md @@ -12,7 +12,7 @@ OpenAI-compatible provider 경로를 request `model`이 가리키는 provider ca ## 상태 -[진행중] +[검토중] ## 승격 조건 @@ -38,7 +38,7 @@ OpenAI-compatible provider 경로를 request `model`이 가리키는 provider ca - `metadata` known-key 발췌 책임 정리: workspace, task, principal, usage/log/observability - provider-native payload preservation: `chat_template_kwargs`, 새 OpenAI-compatible field, provider-specific extension field와 중첩 값 - Node provider tunnel request body와 Edge-Node tunnel metadata의 selector 제거 -- dev-corp Spark Ornith/vLLM 계열 field passthrough smoke +- dev-corp Spark Ornith/vLLM 계열 또는 dev gx10 Ornith/vLLM 계열 field passthrough smoke ## 기능 @@ -64,19 +64,19 @@ vLLM, vLLM-MLX, Lemonade, SGLang, Seulgivibe 같은 OpenAI-compatible provider - [x] [contract-sync] agent-contract, inner wire contract, README/docs, roadmap/SDD 포인터가 model-driven passthrough와 metadata known-key 발췌 기준으로 정리된다. 검증: `rg`로 public selector 필드/모드 설명이 archive를 제외한 최신 문서에 남지 않는다. - [x] [go-tests] Edge OpenAI handler, service provider-pool tunnel, Node OpenAI-compatible adapter 관련 테스트가 새 계약 기준으로 통과한다. 검증: `go test ./apps/edge/internal/openai ./apps/edge/internal/service ./apps/node/internal/adapters/openai_compat` 또는 동등 범위가 통과한다. -- [ ] [devcorp-smoke] dev-corp IOP 경유 Ornith Spark 요청에서 `chat_template_kwargs.enable_thinking=false`가 provider까지 전달된다. 검증: direct Spark와 IOP 경유 단일 호출 모두 첫 content가 빠르게 오고 reasoning 생성이 없거나 provider-native think-off 결과와 일치한다. +- [x] [devcorp-smoke] dev-corp IOP 경유 Ornith Spark 또는 dev IOP 경유 gx10 Ornith 요청에서 `chat_template_kwargs.enable_thinking=false`가 provider까지 전달된다. 검증: direct provider와 IOP 경유 단일 호출 모두 첫 content가 빠르게 오고 reasoning 생성이 없거나 provider-native think-off 결과와 일치한다. ## 완료 리뷰 -- 상태: 없음 -- 요청일: 없음 -- 완료 근거: `provider-error`, `policy-priority`는 local fake provider/fixture 기반 회귀 테스트와 `GOCACHE=/tmp/iop-go-cache go test ./apps/edge/internal/openai ./apps/edge/internal/service ./apps/node/internal/adapters/openai_compat` 통과로 충족했다. `devcorp-smoke` evidence가 아직 남아 있다. +- 상태: 검토중 +- 요청일: 2026-07-14 +- 완료 근거: `provider-error`, `policy-priority`는 local fake provider/fixture 기반 회귀 테스트와 `GOCACHE=/tmp/iop-go-cache go test ./apps/edge/internal/openai ./apps/edge/internal/service ./apps/node/internal/adapters/openai_compat` 통과로 충족했다. `devcorp-smoke`는 사용자 승인 동등 환경인 dev gx10에서 direct provider와 IOP dev Edge 경유 모두 `chat_template_kwargs.enable_thinking=false` streaming smoke가 HTTP 200, first content 약 0.1s, reasoning chunk 0개, finish_reason `stop`으로 통과했고 Edge 로그가 `provider_id=gx10-vllm`, `execution_path=provider_tunnel`을 기록했다. - 검토 항목: - - [ ] 모든 기능 Task와 Task별 검증 evidence가 `Roadmap Completion`에 남아 있다. - - [ ] SDD Evidence Map이 최종 검증 evidence와 일치한다. - - [ ] dev-corp smoke 결과가 문서화되어 있다. + - [x] 모든 기능 Task와 Task별 검증 evidence가 `Roadmap Completion` 또는 완료 리뷰 수동 검증 evidence에 남아 있다. + - [x] SDD Evidence Map이 최종 검증 evidence와 일치한다. + - [x] dev gx10 smoke 결과가 문서화되어 있다. - agent-ui 상태 반영: 해당 없음 -- 리뷰 코멘트: 남은 완료 차단 항목은 dev-corp Ornith Spark `chat_template_kwargs.enable_thinking=false` field smoke evidence다. +- 리뷰 코멘트: 남은 완료 차단 항목 없음. `[완료]` 전환과 archive는 별도 Milestone 종료 검토 흐름에서 처리한다. ## 범위 제외 diff --git a/agent-roadmap/sdd/routing-policy-model-orchestration/openai-compatible-provider-passthrough-contract-sync/SDD.md b/agent-roadmap/sdd/routing-policy-model-orchestration/openai-compatible-provider-passthrough-contract-sync/SDD.md index 45c335b..de64b34 100644 --- a/agent-roadmap/sdd/routing-policy-model-orchestration/openai-compatible-provider-passthrough-contract-sync/SDD.md +++ b/agent-roadmap/sdd/routing-policy-model-orchestration/openai-compatible-provider-passthrough-contract-sync/SDD.md @@ -33,7 +33,7 @@ | Outer Contract | [openai-compatible-api.md](../../../../agent-contract/outer/openai-compatible-api.md) | OpenAI-compatible public request/response 계약 | | Inner Wire Contract | [edge-node-runtime-wire.md](../../../../agent-contract/inner/edge-node-runtime-wire.md) | Edge-Node provider tunnel body/frame 책임 | | Code | `apps/edge/internal/openai`, `apps/edge/internal/service`, `apps/node/internal/adapters/openai_compat` | 구현 source of truth | -| External Provider | dev-corp Spark Ornith/vLLM provider | provider-native field passthrough smoke 대상 | +| External Provider | dev-corp Spark Ornith/vLLM provider 또는 dev gx10 Ornith/vLLM provider | provider-native field passthrough smoke 대상. 사용자가 dev gx10 동등 검증을 허용했다. | | User Decision | 현재 사용자 설계 의도 | `model` 기반 route, metadata known-key read-only 발췌, provider-native payload 보존 | ## State Machine @@ -80,7 +80,7 @@ | S07 | `policy-priority` | caller가 provider-native thinking field를 명시한다 | catalog generation policy 또는 IOP think 확장 처리가 실행된다 | caller provider-native field가 삭제되거나 대체되지 않는다 | | S08 | `contract-sync` | 구현이 완료된다 | 계약/문서/로드맵 최신 문서를 검색한다 | archive를 제외한 최신 문서에는 public response selector field/모드 설명이 없다 | | S09 | `go-tests` | 코드 변경이 완료된다 | 관련 Go 테스트를 실행한다 | Edge OpenAI handler, service provider-pool, Node OpenAI adapter 테스트가 통과한다 | -| S10 | `devcorp-smoke` | dev-corp IOP가 Spark Ornith provider를 라우팅한다 | `chat_template_kwargs.enable_thinking=false` 요청을 IOP 경유로 1회 호출한다 | provider-native think-off 동작과 일치하는 빠른 content-first 응답을 관찰한다 | +| S10 | `devcorp-smoke` | dev-corp Spark Ornith 또는 dev gx10 Ornith provider가 IOP OpenAI-compatible route에 연결되어 있다 | `chat_template_kwargs.enable_thinking=false` 요청을 direct provider와 IOP 경유로 각각 1회 호출한다 | provider-native think-off 동작과 일치하는 빠른 content-first 응답을 관찰하고 reasoning chunk가 생성되지 않는다 | ## Evidence Map @@ -95,7 +95,7 @@ | S07 | generation policy/provider-native priority test | `agent-task/m-openai-compatible-provider-passthrough-contract-sync/...` | `Roadmap Completion`에 `policy-priority`와 body diff evidence | | S08 | `rg` evidence over non-archive docs/contracts/roadmap | `agent-task/m-openai-compatible-provider-passthrough-contract-sync/...` | `Roadmap Completion`에 `contract-sync`와 command output summary | | S09 | Go test command output | `agent-task/m-openai-compatible-provider-passthrough-contract-sync/...` | `Roadmap Completion`에 `go-tests`와 pass summary | -| S10 | dev-corp single-call smoke output summary | `agent-task/m-openai-compatible-provider-passthrough-contract-sync/...` | `Roadmap Completion`에 `devcorp-smoke`, first content latency, reasoning/content observation | +| S10 | dev-corp 또는 dev gx10 single-call smoke output summary | `agent-task/m-openai-compatible-provider-passthrough-contract-sync/...` 또는 수동 검증 evidence | `Roadmap Completion` 또는 Milestone 완료 리뷰에 `devcorp-smoke`, direct/IOP first content latency, reasoning/content observation, IOP selected provider evidence | ## Cross-repo Dependencies