# Milestone: Multi-Edge 운영

## 위치

- Roadmap: [ROADMAP.md](../../../ROADMAP.md)
- Phase: 활성 `PHASE.md`는 없으며 과거 phase snapshot은 [archived PHASE.md](../../../archive/phase/control-plane-portal-ops/PHASE.md)에만 있다.
- SDD: 활성 문서 없음. 이 경계 정렬에서는 새 SDD를 만들지 않는다.

## 목표

여러 Edge group의 model/provider/device inference를 연결하고 운영하는 fleet-level 기능을 구축한다.
Control Plane은 Edge의 inference 실행·취소·상태·usage·lifecycle을 제어하기 쉽게 연결하는 레이어이며, Edge의 설정과 provider/device/model 실질 상태 원본은 Edge가 소유한다. Agent/Chronos 실행은 IOP fleet 책임이 아니다.

## 상태

[계획]

## 구현 잠금

- 상태: 해제
- 결정 필요: 없음 (아래 결정 기록)
  - [x] Multi-Edge 1차 범위를 observe-only로 둘지, fleet-wide 명령까지 포함할지 결정한다. 결정: 관찰은 Edge 연결/health 확인 수준으로 제한하고, 1차 범위는 multi-edge 운영이 실제 가능하도록 fleet-wide 명령과 제어를 포함한다.
  - [x] Control Plane과 Edge 사이의 상태 소유권과 aggregation 깊이를 결정한다. 결정: Edge 설정, IOP Node registry, provider/device/model 실행 상태의 원본은 Edge가 소유한다. Control Plane은 연결된 Edge를 제어하기 위한 연결/health, provider capability 요약, inference 명령 요청/결과, audit에 필요한 최소 운영 기록만 가진다. Edge는 다른 Control Plane으로 옮길 수 있어야 하며 Control Plane에 실질 데이터를 묶지 않는다.
  - [x] OTO/build-deploy domain agent 상태를 fleet 화면의 1차 범위에 포함할지 결정한다. 결정: 포함하지 않는다. Agent/CLI/workspace/tool/terminal/PTY/file/process/log/remote와 OTO/build-deploy 자동화는 Chronos Server/Chronos Node가 소유하며, IOP Control Plane·Edge·IOP Node에는 Chronos bridge/target/registry나 domain-agent status/command를 두지 않는다.

## 범위

- 여러 Edge group 등록/연결/health 표시
- Edge가 제공하는 model/provider/device capability와 운영 가능 상태 요약
- Edge 단위 inference 실행·취소·상태·usage·lifecycle 명령 결과와 event relay
- Edge 단위 provider command와 inference 제어
- provider/device/model 기준 fleet-wide 명령과 운영 리포트

## 기능

### Epic: [fleet-ops-boundary] Fleet Operations Boundary

IOP native fleet control과 Edge source-of-truth ownership 경계를 묶는다.

- [ ] [native-fleet] Multi-edge inference/provider 운영 명령과 이벤트 relay는 IOP native protocol을 기준으로 설계하며 Agent 명령은 포함하지 않는다.
- [ ] [edge-ownership] Edge는 설정, IOP Node registry, provider/device/model 실행 상태의 원본 소유권을 유지하고, Control Plane은 이동 가능한 inference 제어 attachment로만 동작한다.

### Epic: [fleet-observability] Fleet Observability

여러 Edge의 provider/device/model 상태와 inference 실행 이력을 구분해 관찰하는 capability를 묶는다.

- [ ] [edge-status-view] Control Plane은 여러 Edge 상태를 구분해 조회하고 표시할 수 있다. 검증: 두 개 이상의 Edge 상태가 구분되는 조회/표시 경로를 확인한다.
- [ ] [history-agent-state] 기존 Task ID는 추적 호환성을 위해 유지한다. Edge별 inference 요청/명령 결과와 provider/device/model status·usage·lifecycle summary가 운영 화면에서 구분되며 Agent 상태나 명령은 포함하지 않는다.

### Epic: [compat-routing] Compatibility Routing

OpenAI-compatible inference를 특정 Edge/provider adapter로 위임하고 Agent task routing을 IOP에서 제거하는 호환 경계를 묶는다.

- [ ] [openai-routing] OpenAI-compatible 표면은 특정 Edge/adapter로 라우팅되는 inference 호환 경로로 제한한다.
- [ ] [a2a-routing] 기존 Task ID는 추적 호환성을 위해 유지한다. A2A agent task routing/control surface를 IOP fleet에서 제거하고 Edge/IOP Node에 Agent 실행 경로가 남지 않음을 검증한다.

## 완료 리뷰

- 상태: 없음
- 요청일: 없음
- 완료 근거: 모든 기능 Task와 Task 안에 명시된 검증이 아직 충족되지 않았다.
- 리뷰 필요:
  - [ ] 사용자가 완료 결과를 확인했다
  - [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음

## 범위 제외

- Control Plane이 매 요청마다 Node를 직접 할당하는 중앙 스케줄러 역할
- Control Plane이 Edge 설정, IOP Node registry, provider/device/model 실행 상태의 실질 원본을 소유하는 구조
- Chronos Server/Chronos Node가 소유하는 Agent/CLI/workspace/tool/terminal/PTY/file/process/log/remote 기능과 OTO/build-deploy 자동화
- IOP↔Chronos bridge/target/registry 또는 domain-agent status/command surface
- A2A agent task routing을 IOP fleet에 유지하거나 OpenAI-compatible API를 multi-edge 운영 제어 기본 프로토콜로 사용하는 구조
- Edge federation 상세 설계를 근거 없이 선확정

## 작업 컨텍스트

- 관련 경로: `apps/control-plane`, `apps/client`, `apps/edge`, `README.md`
- 표준선(선택): Edge는 설정, provider/device/model 실행 상태, IOP Node registry의 원본 소유권을 유지하고, Control Plane은 연결/health 확인을 기반으로 inference와 provider fleet-wide 명령·제어를 조율한다. Control Plane 교체나 이전은 Edge 실질 데이터 이전을 요구하지 않아야 한다.
- 선행 작업: Control Plane과 Client, 정책/이력/감사
- 후속 작업: 없음
- 결정됨: Multi-Edge 1차 범위는 observe-only가 아니라 fleet-wide 운영 중심으로 둔다. 관찰은 Edge 접속/health 확인 수준으로 제한한다.
- 결정됨: Control Plane은 Edge 실질 데이터를 소유하지 않는 제어 레이어로 둔다. Aggregation은 제어에 필요한 연결/health, provider capability 요약, inference 명령 요청/결과, audit record 수준으로 제한한다.
- 결정됨: Agent/CLI/workspace/tool/terminal/remote와 OTO/build-deploy는 Chronos Server/Chronos Node 책임이다. IOP fleet에는 domain-agent나 Chronos 연결점을 두지 않는다.
