# Milestone: [provider-01] Provider Runtime 설정과 모델 획득 오케스트레이션

## 위치

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

## 목표

IOP가 provider routing 정책의 충분조건을 보장하기 위해 vLLM, vLLM-MLX, Lemonade 같은 provider runtime 설정과 모델 선정, 다운로드, 캐시, 검증, 적용 경계를 어디까지 소유할지 스케치한다.
model group의 context/capacity 계약을 실제 provider launch option, 모델 artifact, local cache 상태와 연결해 “설정된 capacity가 실제 runtime에서도 성립한다”는 운영 보증 모델을 장기 후속 작업으로 정리한다.

## 상태

[스케치]

## 승격 조건

- [ ] IOP가 provider runtime 설정을 관찰만 할지, launch profile 생성/수정/restart까지 담당할지 단계별 책임 경계를 결정한다.
- [ ] vLLM, vLLM-MLX, Lemonade의 runtime option을 공통 profile로 표현할 최소 필드와 provider별 extension 필드를 결정한다.
- [ ] 모델 후보 선정, artifact source, quantization variant, download/cache 경로, checksum/revision pinning, disk quota 정책을 결정한다.
- [ ] 모델 다운로드와 provider restart/apply가 사용자 승인 기반인지, 자동화 가능한 작업인지, 실패 시 rollback 기준은 무엇인지 결정한다.
- [ ] runtime 설정 검증을 `config check`, dry-run, health, `/v1/models`, context/capacity smoke 중 어디까지 요구할지 결정한다.
- [ ] long-context admission의 `context_window_tokens`, `total_context_tokens`, `long_context_capacity`와 provider runtime option을 어떻게 일관 검증할지 결정한다.

## 구현 잠금

- 상태: 잠금
- SDD: 필요
- SDD 문서: 없음 (작성 전)
- SDD 사유: provider runtime launch/restart, 모델 다운로드, artifact cache, rollback, 외부 provider 쓰기와 host 자원 변경을 포함하는 장기 설계 Milestone이다.
- 잠금 해제 조건: 아래 체크리스트
  - [ ] SDD 잠금이 해제되어 있다.
  - [ ] SDD 사용자 리뷰가 없거나 승인/해결되었다.
  - [ ] provider runtime 설정 책임과 모델 다운로드/적용 승인 경계가 구현 계획을 만들 수 있을 만큼 확정되어 있다.
- 결정 필요: 아래 체크리스트
  - [ ] IOP가 vLLM/vLLM-MLX process/container 기동 옵션을 직접 쓰고 재시작할 권한을 가질지 결정한다.
  - [ ] Lemonade처럼 별도 앱/API가 설정을 소유하는 provider를 IOP가 어디까지 제어할지 결정한다.
  - [ ] 모델 선정과 다운로드를 자동 추천/자동 실행/사용자 승인 실행 중 어떤 수준으로 시작할지 결정한다.
  - [ ] 모델 artifact cache, 삭제, downgrade, failed download cleanup의 소유자를 결정한다.

## 범위

- provider runtime profile: vLLM, vLLM-MLX, Lemonade의 launch/config option, env, cache dir, endpoint, auth, health, restart policy
- model acquisition profile: model alias, upstream repo/artifact, quantization variant, revision pin, checksum, expected served model, disk/cache path
- capacity contract enforcement: model group `context_window_tokens`, provider `capacity`, `total_context_tokens`, `long_context_capacity`와 runtime option 일관성 검증
- lifecycle action 후보: plan, dry-run, download, verify, apply, restart, rollback, cleanup
- status/report: runtime config verified/degraded/misconfigured, model downloaded/verified/loaded, capacity verified/unverified
- dev provider pool에서 vLLM, vLLM-MLX, Lemonade를 대상으로 장기적으로 적용할 운영 기준

## 기능

### Epic: [runtime-model-ops] Provider Runtime Contracts

provider runtime profile, provider별 제어 경계, capacity contract 검증을 IOP 운영 계약으로 정리한다.

- [ ] [runtime-profile] vLLM, vLLM-MLX, Lemonade의 runtime option을 공통 profile과 provider-specific extension으로 나누는 후보가 정리되어 있다.
- [ ] [provider-boundary] vLLM/vLLM-MLX처럼 IOP가 launch profile을 소유하기 쉬운 provider와 Lemonade처럼 외부 앱/API 설정이 섞인 provider의 제어 경계가 정리되어 있다.
- [ ] [contract-verify] `context_window_tokens`, `total_context_tokens`, `long_context_capacity`, runtime ctx/KV/max seq option의 일관성 검증 후보가 정리되어 있다.

### Epic: [model-acquisition] Model Acquisition

모델 후보 선정과 artifact 다운로드, cache, 검증의 산출물 경계를 묶는다.

- [ ] [model-candidate] model group별 모델 후보 선정 기준, quantization variant, upstream artifact, served model alias, revision pinning 기준이 정리되어 있다.
- [ ] [download-cache] 모델 다운로드, cache path, checksum/revision 검증, disk quota, 실패 cleanup, 삭제/보존 정책 후보가 정리되어 있다.

### Epic: [runtime-apply-ops] Safe Runtime Apply Operations

runtime 설정과 모델 변경의 적용, rollback, 운영 상태 및 안전 정책을 묶는다.

- [ ] [apply-lifecycle] runtime 설정 변경과 모델 교체를 dry-run, apply, restart, rollback 단계로 나누는 lifecycle 후보가 정리되어 있다.
- [ ] [safety-policy] 모델 다운로드/삭제/restart가 필요한 작업의 사용자 승인, 롤백, 장애 처리, credential/secret 노출 금지 기준이 정리되어 있다.
- [ ] [ops-status] runtime config, model artifact, provider health, capacity verification 상태를 운영자가 볼 수 있는 status/report 후보가 정리되어 있다.

## 완료 리뷰

- 상태: 없음
- 요청일: 없음
- 완료 근거: 스케치 Milestone이며 기능 Task가 아직 충족되지 않았다.
- 리뷰 필요:
  - [ ] 사용자가 provider runtime 설정 소유 범위를 검토했다.
  - [ ] 사용자가 모델 선정/다운로드 자동화 수준을 검토했다.
  - [ ] archive 이동을 승인했다.
- agent-ui 상태 반영: 해당 없음
- 리뷰 코멘트: 없음

## 범위 제외

- 현재 `Model Group Long-Context Admission` 계획 Milestone의 routing/admission 구현
- 당장 dev provider pool의 모델 교체, 다운로드, process restart 자동화 구현
- fully automated model marketplace
- cloud fallback, cross-Edge/global balancing, billing/chargeback
- 사용자 승인 없이 host disk를 크게 쓰거나 기존 모델 artifact를 삭제하는 동작

## 작업 컨텍스트

- 관련 경로: `apps/edge`, `apps/node`, `packages/go/config`, `configs/edge.yaml`, `agent-test/inventory-dev.yaml`, [edge-smoke.md](../../../../agent-test/dev/edge-smoke.md), [node-smoke.md](../../../../agent-test/dev/node-smoke.md)
- 표준선(선택): long-context admission은 routing 필요조건이며, provider runtime/model acquisition orchestration은 그 정책을 실제 runtime에서 만족하게 만드는 충분조건 후보이다.
- 표준선(선택): vLLM/vLLM-MLX는 launch profile과 health/capacity verification부터 시작하고, Lemonade는 앱/API 설정 소유권 경계를 먼저 확인한다.
- 표준선(선택): 모델 다운로드와 삭제는 disk/resource 영향이 크므로 초기에는 사용자 승인 기반 dry-run/apply 흐름을 우선한다.
- 선행 작업: Model Group Long-Context Admission, Provider Catalog와 로컬 디바이스 상태 관리
- 후속 작업: route recommendation, model marketplace, cross-Edge/cloud fallback 고도화
- 확인 필요: provider runtime 설정 소유권, 모델 다운로드 자동화 수준, cache/delete/rollback 정책, 사용자 승인 경계
