# Milestone: [provider-02] Provider-Device-Model Qualification 리포트와 Lifecycle 관리

## 위치

- Roadmap: [ROADMAP.md](../../../ROADMAP.md)
- Phase: [PHASE.md](../PHASE.md)

## 목표

Provider Catalog와 로컬 디바이스 상태 기준선 뒤에, Ollama, vLLM, SGLang, Lemonade 같은 provider의 device/model 조합을 테스트하고 결과를 운영 리포트로 축적하는 제품 경계를 스케치한다.
provider별 모델 lifecycle capability 차이를 IOP가 어떻게 흡수하고, 여러 모델 후보를 각 디바이스/provider에서 측정한 결과와 공식 공개 benchmark를 함께 보여 production route 후보 판단에 사용할지 정리한다.

## 상태

[스케치]

## 승격 조건

- [ ] provider/device/model qualification report의 최소 스키마와 저장 책임을 결정한다.
- [ ] Ollama/Lemonade의 model API 관리와 vLLM/SGLang의 process/container lifecycle 관리 차이를 어떻게 추상화할지 결정한다.
- [ ] compatibility, performance, quality, resource, failure report 중 MVP에 포함할 항목을 결정한다.
- [ ] 여러 모델을 다운로드/적용해 벤치마킹할 대상 model set, provider/device matrix, 실행 비용/시간 상한을 결정한다.
- [ ] 공식 공개 benchmark를 어떤 source에서 수집/인용하고 최신성, 출처, 조건 차이를 어떻게 표시할지 결정한다.
- [ ] Control Plane, Edge-local CLI, Client 중 report 조회와 lifecycle 제어 표면을 어디에 둘지 결정한다.
- [ ] 현재 provider 확장 Phase의 vLLM/SGLang serving path 검증 결과를 seed evidence로 어떻게 연결할지 결정한다.

## 구현 잠금

- 상태: 잠금
- SDD: 필요
- SDD 경로: 없음 (작성 전)
- SDD 사유: provider lifecycle 제어, report schema, 저장 책임, 운영 UI/API 경계가 함께 걸리는 제품 설계 Milestone이다.
- 잠금 해제 조건: 아래 체크리스트
  - [ ] SDD 잠금이 해제되어 있다.
  - [ ] SDD 사용자 리뷰가 없거나 승인/해결되었다.
  - [ ] provider lifecycle 추상화와 report MVP 범위가 구현 계획을 만들 수 있을 만큼 확정되어 있다.
- 결정 필요: 아래 체크리스트
  - [ ] IOP가 provider별 모델 설치/삭제/load/unload 또는 container/process start/stop을 어느 수준까지 직접 제어할지 결정한다.
  - [ ] qualification report를 route recommendation에 바로 사용할지, 초기에는 관찰/리포트로만 둘지 결정한다.
  - [ ] 성능/품질 테스트가 자동 실행이어야 하는지, 사용자 승인 기반 수동 실행으로 시작할지 결정한다.
  - [ ] benchmark 대상 모델 다운로드와 provider 설정 변경을 이 Milestone에서 직접 수행할지, `Provider Runtime 설정과 모델 획득 오케스트레이션` Milestone의 선행 결과로 받을지 결정한다.
  - [ ] 공식 공개 benchmark를 웹에서 직접 수집할 때 허용 source, citation 방식, 갱신 주기, 측정 조건 차이 표시 기준을 결정한다.

## 범위

- provider/device/model 조합별 compatibility, performance, quality, resource, failure report의 최소 필드
- 여러 모델 후보를 각 device/provider에서 실행해 TTFT, tokens/sec, latency, concurrency, queue wait, resource usage를 측정하는 benchmark matrix
- benchmark 대상 모델의 download/apply/verify 흐름과 provider runtime 설정은 `Provider Runtime 설정과 모델 획득 오케스트레이션` Milestone과 연결한다.
- 공식 공개 benchmark 수치, 출처 URL, 측정 조건, 수집 시각, 로컬 측정값과의 비교 표시 기준
- Ollama, Lemonade, vLLM, SGLang의 model lifecycle capability 차이를 표현하는 공통 추상화
- vLLM/SGLang처럼 single-model serving process/container 중심인 provider와 Ollama/Lemonade처럼 model API가 있는 provider의 운영 차이
- provider 확장 Phase에서 나온 serving smoke/field evidence를 qualification seed report로 연결하는 기준
- 운영자가 provider/device/model 조합을 비교하고 production route 후보, experimental, blocked 같은 상태를 판단하는 MVP 표면

## 기능

### Epic: [qualification-report] Qualification Report and Evidence

qualification report schema, benchmark matrix, 공식 benchmark evidence의 산출물 경계를 묶는다.

- [ ] [report-schema] provider, device, model alias, checkpoint, served model, runtime version, launch/container args, endpoint, auth policy, test timestamp, result status, benchmark source/citation을 포함한 최소 report schema가 정리되어 있다.
- [ ] [model-matrix] 여러 모델 후보를 어떤 device/provider 조합에 다운로드/적용/측정할지 benchmark matrix와 실행 비용/시간 상한이 정리되어 있다.
- [ ] [official-bench] 공식 공개 benchmark source, URL/citation, 수집 시각, 측정 조건 차이, 로컬 측정값과의 비교/경고 표시 기준이 정리되어 있다.

### Epic: [qualification-suite] Qualification Test Suites

provider/device/model 조합의 compatibility, performance, quality 검증 경계를 묶는다.

- [ ] [compat-suite] `/v1/models`, non-streaming chat, streaming chat, usage/finish reason, timeout/error mapping 같은 compatibility test matrix가 정리되어 있다.
- [ ] [perf-suite] TTFT, tokens/sec, latency p50/p95, concurrency, queue wait, resource usage 후보와 필수/선택 구분이 모델별/디바이스별 비교 기준으로 정리되어 있다.
- [ ] [quality-suite] canonical prompt set, structured output, reasoning/content handling, tool/schema readiness 같은 quality/eval 후보와 MVP 제외 범위가 정리되어 있다.

### Epic: [qualification-lifecycle] Qualification Lifecycle and Operations

provider lifecycle 차이와 qualification report의 운영 표면 및 routing 활용 경계를 묶는다.

- [ ] [lifecycle-map] Ollama/Lemonade의 model API와 vLLM/SGLang의 process/container lifecycle을 IOP lifecycle action으로 매핑하는 후보가 정리되어 있다.
- [ ] [ops-surface] Control Plane, Client, Edge-local CLI에서 report 조회, 비교, lifecycle action을 어디까지 노출할지 후보가 정리되어 있다.
- [ ] [routing-use] report 결과를 route recommendation 또는 production readiness 상태로 사용할지 여부와 보류 기준이 정리되어 있다.

## 완료 리뷰

- 상태: 없음
- 요청일: 없음
- 완료 근거: 스케치 Milestone이며 기능 Task가 아직 충족되지 않았다.
- 리뷰 필요:
  - [ ] 사용자가 완료 결과를 확인했다
  - [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음

## 범위 제외

- 현재 provider 확장 Phase의 vLLM/SGLang adapter 구현 자체
- 개별 provider serving path의 최초 연결 검증
- provider runtime 설정과 모델 다운로드 자동화 구현 자체. 이 범위는 `Provider Runtime 설정과 모델 획득 오케스트레이션` Milestone에서 다룬다.
- cloud fallback 자동화와 cross-Edge/global balancing
- billing/chargeback, 조직 IAM, 장기 audit retention
- fully automated model marketplace

## 작업 컨텍스트

- 관련 경로: `apps/edge`, `apps/node`, `apps/control-plane`, `apps/client`, `packages/go/config`, `proto/iop`, `agent-test/local`
- 표준선(선택): provider serving path와 capacity/concurrency 검증은 `추론 서버 provider 확장` Phase에서 먼저 닫고, 이 Milestone은 그 결과를 운영 데이터와 lifecycle 제어 모델로 승격한다.
- 표준선(선택): OpenAI-compatible compatibility는 공통 test matrix로 보되, provider별 native lifecycle API는 capability 기반으로 optional 처리한다.
- 표준선(선택): 공식 공개 benchmark는 로컬 측정값을 대체하지 않고 참고 비교값으로만 표시하며, 출처 URL과 측정 조건 차이를 함께 보여준다.
- 선행 작업: Provider Catalog와 로컬 디바이스 상태 관리, vLLM/SGLang provider 서빙 경로 추가, Provider Runtime 설정과 모델 획득 오케스트레이션
- 후속 작업: route recommendation, cloud fallback, 품질 기반 routing/fallback 고도화
- 확인 필요: report schema, lifecycle 제어 범위, 자동/수동 테스트 실행 경계, benchmark 대상 모델과 provider/device matrix, 공식 benchmark source/citation 정책, 운영 표면
