# Milestone: Edge/Node 롤아웃과 복구 정책

## 위치

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

## 목표

Control Plane이 desired version/channel을 제공하면 Edge가 자신의 Node 그룹과 자기 자신을 어떤 순서로 업데이트하고, 실패 시 어떤 기준으로 재시도/rollback/manual intervention을 보고할지 정리한다.
Node 연결 단절, Edge 재시작, protocol mismatch, artifact 검증 실패 같은 상황에서도 최소 상태 캐시와 update event만으로 운영자가 현재 상태를 판단할 수 있게 한다.

## 상태

[스케치]

## 승격 조건

- [ ] Edge가 Node rolling update를 시작하기 전 drain/admission 정책을 확정한다.
- [ ] Node update와 Edge self-update의 순서와 compatibility 기준을 정한다.
- [ ] 업데이트 중 연결 단절과 재연결 성공 판정 기준을 정한다.
- [ ] rollback과 manual intervention 상태를 Control Plane에 보고하는 기준을 정한다.
- [ ] 후속 구현 Milestone과 SDD 필요 범위를 나눈다.

## 구현 잠금

- 상태: 잠금
- SDD: 필요
- SDD 문서: 없음 (작성 전)
- SDD 사유: Edge/Node update lifecycle, drain/restart/rollback 정책, 상태 캐시와 Control Plane 보고 계약이 필요하다.
- 잠금 해제 조건:
  - [ ] SDD 잠금이 해제되어 있다
  - [ ] SDD 사용자 리뷰가 없거나 승인/해결되었다
- 결정 필요:
  - [ ] 자동 롤아웃의 기본 허용 범위와 수동 승인 gate가 필요한 환경 기준을 정한다.

## 범위

- Edge가 Node별 desired version과 observed version을 비교해 update 필요 여부를 판단하는 정책
- Node rolling update 순서, concurrency, drain, in-flight run 처리 후보
- Edge self-update 시점과 Control Plane 재연결 후 성공 판정 기준
- update event/audit를 Control Plane과 frontend에서 보여줄 최소 상태
- 실패 시 retry, rollback, manual intervention, bootstrap fallback의 상태 분류

## 기능

### Epic: [rollout] 롤아웃과 복구 기준

Edge가 Node와 자기 자신의 업데이트를 조율하고 Control Plane에 관찰 가능한 상태를 보고하는 정책을 정리한다.

- [ ] [node-rollout] Node rolling update 순서, 동시성, drain/admission 기준 후보가 정리되어 있다.
- [ ] [edge-self] Edge self-update 시점과 Control Plane 재연결 성공 판정 후보가 정리되어 있다.
- [ ] [cache] Edge/Node local cache로 복구할 수 있는 상태와 버릴 수 있는 상태가 정리되어 있다.
- [ ] [failure] artifact 검증 실패, protocol mismatch, 재시작 실패, 재연결 실패의 recovery 상태가 정리되어 있다.
- [ ] [ops-view] Control Plane/frontend가 보여줄 update summary, event, audit view 후보가 정리되어 있다.

## 완료 리뷰

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

## 범위 제외

- 세부 UI 화면 구현
- 실제 update runner 구현과 OS별 installer 완성
- provider/model serving rollback, runtime output validation rollback 정책

## 작업 컨텍스트

- 관련 경로: `apps/control-plane/**`, `apps/edge/internal/controlplane/**`, `apps/edge/internal/service/**`, `apps/node/internal/transport/**`
- 표준선(선택): Control Plane은 desired state와 audit view를 제공하고, Edge는 Node 그룹 업데이트의 실행 주체가 되며, Node는 자기 update 적용을 manager/updater에 위임한다.
- 선행 작업: Update Plane 안정 프로토콜, Host-local Manager 기반 자체 업데이트
- 후속 작업: 실제 update command/proto/config 구현 Milestone
- 확인 필요: 자동 업데이트 기본값, 롤아웃 동시성, failure threshold, rollback retention
