# Milestone: 원격 실행 생명주기

## 위치

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

## 목표

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

## 상태

[완료]

## 구현 잠금

- 상태: 해제
- 결정 필요: 없음

## 범위

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

## 기능

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

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

- [x] [run-input] run request가 pipeline 실행 입력으로 변환되는 기준이 정의되어 있다. 완료 근거(2026-06-06): `agent-task/archive/2026/06/m-remote-run-lifecycle/02+01_step_log_stream/complete.log`의 Roadmap Completion PASS.
- [x] [step-log] step event와 log stream이 원격 소비자에게 전달되는 흐름이 정의되어 있다. 검증: OTO Server에서 요청한 빌드/배포 작업의 시작, 진행, 완료, 실패, 취소 상태를 추적할 수 있다. 완료 근거(2026-06-06): `agent-task/archive/2026/06/m-remote-run-lifecycle/02+01_step_log_stream/complete.log`의 Roadmap Completion PASS.
- [x] [artifact-event] artifact event의 메타데이터와 전달 책임이 정의되어 있다. 검증: 기존 YAML 파이프라인과 커맨드 확장 모델을 유지하면서 원격 제어가 가능하다. 완료 근거(2026-06-06): `agent-task/archive/2026/06/m-remote-run-lifecycle/03+01,02_artifact_event/complete.log`의 Roadmap Completion PASS.
- [x] [cancel-status-update] cancel, status, self-update 동작 기준이 정의되어 있다. 검증: self-update가 runner 안정성을 해치지 않도록 최소 실패 기준이 있다. 완료 근거(2026-06-06): `agent-task/archive/2026/06/m-remote-run-lifecycle/04+01,02_cancel_status_update/complete.log`의 Roadmap Completion PASS.

## 완료 리뷰

- 상태: 승인됨
- 요청일: 2026-06-06
- 완료 근거:
  - `run-input`, `step-log`: `agent-task/archive/2026/06/m-remote-run-lifecycle/02+01_step_log_stream/complete.log`
  - `artifact-event`: `agent-task/archive/2026/06/m-remote-run-lifecycle/03+01,02_artifact_event/complete.log`
  - `cancel-status-update`: `agent-task/archive/2026/06/m-remote-run-lifecycle/04+01,02_cancel_status_update/complete.log`
- 리뷰 필요:
  - [x] 사용자가 완료 결과를 확인했다
  - [x] archive 이동을 승인했다
- 리뷰 코멘트: 모든 기능 Task가 완료 로그의 Roadmap Completion evidence와 함께 PASS 상태로 동기화되었고, 사용자 요청에 따라 Milestone 완료 및 archive 이동을 승인했다.

## 범위 제외

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

## 작업 컨텍스트

- 관련 경로: `apps/runner/lib/oto/pipeline/**`, `apps/runner/lib/oto/commands/**`, `apps/runner/lib/oto/core/**`, `apps/runner/test/**`, `services/core/**`, `proto/oto/**`
- agent 메시지 프로토콜과 CLI 자동화 표면 정리 단계의 구조화 출력 기준을 먼저 확인한다.
- 표준선(선택): run request는 기존 YAML 파이프라인 입력으로 변환하고, 진행 상태는 기존 step event/log/result 표면을 우선 재사용한다. cancel/status/self-update는 OTO Server 정책이 정해지기 전까지 build/deploy runner의 최소 안전 동작으로만 정리한다.
- 선행 Milestone: agent 메시지 프로토콜
- 선행 Milestone 완료 근거(2026-06-06): `agent-roadmap/archive/phase/message-based-build-agent/milestones/agent-message-protocol.md`가 `[완료]`로 archive되었고, `message-contract` Epic의 모든 Task가 완료 리뷰 승인 상태로 정리되었다.
- 선행 Task: `control-plane-separation-migration`의 `oto-owns-cicd`
- pipeline, command, core 도메인 rule이 관련될 수 있다.
- 확인 완료(2026-06-06): 기능 Task 전체가 `m-remote-run-lifecycle` 완료 로그의 Roadmap Completion evidence와 동기화되었다.
