# Milestone: [update-01] Update Plane 안정 프로토콜

## 위치

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

## 목표

Edge/Node의 일반 운영 프로토콜이 바뀌어도 업데이트 파이프라인만은 지속적으로 동작하도록 최소 안정 계약을 정의한다.
hello/status, release manifest, update command, update event, recovery 판단에 필요한 필드만 장기 호환 레이어로 고정하고, 나머지 실행/운영 프로토콜은 최신 Control Plane 기준으로 수렴시키는 방향을 잡는다.

## 상태

[스케치]

## 승격 조건

- [ ] Edge와 Node가 보고해야 할 최소 self/peer 상태 필드를 확정한다.
- [ ] release manifest의 필수 필드와 서명/해시 검증 기준을 확정한다.
- [ ] update command와 update status/event의 상태 전이를 구현 가능한 수준으로 정리한다.
- [ ] 너무 오래된 updater protocol을 만났을 때의 manual/bootstrap fallback 기준을 정리한다.
- [ ] 후속 구현 Milestone과 SDD 필요 범위를 나눈다.

## 구현 잠금

- 상태: 잠금
- SDD: 필요
- SDD 문서: 없음 (작성 전)
- SDD 사유: 업데이트 프로토콜, manifest schema, 상태 전이, recovery 규칙이 proto/config/schema와 lifecycle 계약에 직접 닿는다.
- 잠금 해제 조건:
  - [ ] SDD 잠금이 해제되어 있다
  - [ ] SDD 사용자 리뷰가 없거나 승인/해결되었다
- 결정 필요:
  - [ ] 기본 release channel과 자동 적용/승인 적용의 제품 정책을 정한다.

## 범위

- Edge hello/status에 포함할 version, update_protocol_version, platform, capability, peer version 관찰 정보
- Node registration/status에 포함할 version, platform, update_protocol_version, connected peer version 정보
- release manifest의 component, version, protocol, platform, artifact URL, sha256/signature, compatibility 필드
- update command의 update id, target selector, desired version/channel, drain/restart policy
- update status/event의 accepted, downloading, verified, staged, draining, restarting, reconnected, completed, failed, rolled_back 상태
- recovery와 fallback에 필요한 최소 오류 코드와 manual intervention 기준

## 기능

### Epic: [protocol] 안정 업데이트 계약

업데이트를 가능하게 하는 최소 프로토콜을 일반 운영 프로토콜과 분리해 장기 호환 레이어로 정리한다.

- [ ] [status-fields] Edge/Node self 상태와 연결 peer 상태 캐시 필드 후보가 정리되어 있다.
- [ ] [manifest-schema] release manifest와 artifact 검증 필수 필드 후보가 정리되어 있다.
- [ ] [update-command] update command와 target selector, drain/restart policy 후보가 정리되어 있다.
- [ ] [update-events] update status/event 상태 전이와 실패 코드 후보가 정리되어 있다.
- [ ] [fallback] updater protocol 불일치와 artifact 검증 실패 시 fallback 기준이 정리되어 있다.

## 완료 리뷰

- 상태: 없음
- 요청일: 없음
- 완료 근거: 스케치 상태이므로 완료 근거 없음
- 리뷰 필요:
  - [ ] 사용자가 완료 결과를 확인했다
  - [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음

## 범위 제외

- 일반 RunRequest, provider status, CLI command, OpenAI-compatible/A2A 실행 프로토콜의 전체 호환성 보장
- 실제 proto/schema 구현과 generated code 갱신
- release artifact 저장소, 서명 인프라, UI 구현

## 작업 컨텍스트

- 관련 경로: `proto/iop/control.proto`, `proto/iop/runtime.proto`, `apps/control-plane/**`, `apps/edge/**`, `apps/node/**`, `packages/go/version/**`
- 표준선(선택): 업데이트 파이프라인 프로토콜만 안정 ABI로 보고, 나머지 운영 프로토콜은 최신 Control Plane과 Edge/Node 업데이트 수렴을 통해 따라간다.
- 선행 작업: 없음
- 후속 작업: Host-local Manager 기반 자체 업데이트, Edge/Node 롤아웃과 복구 정책
- 확인 필요: release channel 기본 정책, signature 방식, 최소 지원 updater protocol 범위
