# Milestone: 원격 실행 생명주기

## 위치

- Roadmap: `agent-ops/roadmap/ROADMAP.md`
- Phase: `agent-ops/roadmap/phase/message-based-build-agent/PHASE.md`

## 목표

Edge가 OTO agent에 파이프라인 실행을 요청하고, agent가 실행 진행 상황과 산출물을 보고하며, 취소와 상태 조회, self-update까지 이어지는 원격 실행 생명주기를 완성한다.

## 상태

[계획]

## 구현 잠금

- 상태: 잠금
- 결정 필요: 아래 체크리스트
  - [ ] agent 메시지 프로토콜과 OTO agent 등록 흐름이 확정되었는가?
  - [ ] Edge scheduling policy, artifact transport, self-update 절차 중 OTO 책임 범위가 정해졌는가?
  - [ ] 원격 실행 생명주기를 generic remote shell agent가 아닌 build/deploy agent 범위로 유지하는 경계가 확정되었는가?

## 범위

- run request를 기존 YAML 파이프라인과 커맨드 확장 모델에 연결한다.
- step event, log stream, artifact event를 원격 실행 흐름에 연결한다.
- cancel, status, self-update의 최소 동작과 실패 기준을 정의한다.
- agent 모드가 기존 CLI 실행 모델을 원격 제어 가능한 실행 표면으로 노출하게 한다.

## 필수 기능

### Epic: [remote-lifecycle] 원격 실행 상태 전이

Edge의 run request가 기존 YAML 파이프라인 실행, 진행 보고, 취소, 상태 조회, self-update로 이어지는 생명주기를 묶는다.

- [ ] [run-input] run request가 pipeline 실행 입력으로 변환되는 기준이 정의되어 있다.
- [ ] [step-log] step event와 log stream이 원격 소비자에게 전달되는 흐름이 정의되어 있다.
- [ ] [artifact-event] artifact event의 메타데이터와 전달 책임이 정의되어 있다.
- [ ] [cancel-status-update] cancel, status, self-update 동작 기준이 정의되어 있다.

## 완료 기준

- [ ] Edge에서 요청한 빌드/배포 작업의 시작, 진행, 완료, 실패, 취소 상태를 추적할 수 있다.
- [ ] 기존 YAML 파이프라인과 커맨드 확장 모델을 유지하면서 원격 제어가 가능하다.
- [ ] self-update가 agent 안정성을 해치지 않도록 최소 실패 기준이 있다.

## 완료 리뷰

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

## 범위 제외

- YAML 파이프라인 언어를 새 DSL로 교체하지 않는다.
- generic remote shell agent로 확장하지 않는다.
- Edge 서버의 전체 스케줄링 정책을 구현하지 않는다.

## 작업 컨텍스트

- 관련 경로: `lib/oto/pipeline/**`, `lib/oto/commands/**`, `lib/oto/core/**`, `test/**`
- agent 메시지 프로토콜과 CLI 자동화 표면 정리 단계의 구조화 출력 기준을 먼저 확인한다.
- 표준선(선택): run request는 기존 YAML 파이프라인 입력으로 변환하고, 진행 상태는 기존 step event/log/result 표면을 우선 재사용한다. cancel/status/self-update는 Edge 정책이 정해지기 전까지 build/deploy agent의 최소 안전 동작으로만 정리한다.
- 선행 Milestone: agent 메시지 프로토콜
- pipeline, command, core 도메인 rule이 관련될 수 있다.
- 확인 필요: Edge scheduling policy, artifact transport, self-update 절차 중 OTO 책임 범위를 확정한다.
