# CLI 자동화 기준선 정리

## 목표

현재 OTO CLI가 제공하는 실행 모드와 핵심 확장 경계를 장기 호환 기준선으로 정리한다.
같은 단계의 나머지 작업이 기존 `-j`, `-f`, `scheduler` 흐름을 깨지 않고 구조화 출력과 검증 기능을 추가할 수 있게 만든다.

## 단계

CLI 자동화 표면 정리

## 상태

완료

## 구현 잠금

- 상태: 해제
- 이유: 완료된 Milestone이며 완료 기준과 완료 근거가 문서화되어 있다. 후속 확장은 별도 Milestone에서 다룬다.
- 해제 근거: 완료된 Milestone으로 완료 근거가 `작업 컨텍스트`에 문서화되어 있다.
- 잠금 중 금지:
  - 해당 없음

## 범위

- 기존 `-j`, `-f`, `scheduler` 모드를 유지할 호환 표면으로 정리한다.
- YAML 파이프라인, 커맨드 확장, 단일 바이너리 배포 구조를 OTO의 핵심 경계로 유지한다.
- Jenkins는 현재 호환 실행 경로로 남기되, 이후 작업에서 제어면을 Jenkins 전용 환경 변수에 고정하지 않도록 기준을 세운다.
- 현재 코드와 문서에 흩어진 실행 모드 설명을 기준선으로 삼아, 이후 구조화 출력과 agent 확장 작업의 변경 허용 범위를 정리한다.

## 필수 기능

- [x] [cli-modes] CLI 실행 모드별 책임과 호환 기준이 문서화되어 있다.
- [x] [yaml-command] YAML 파이프라인과 커맨드 확장 모델이 핵심 경계로 명시되어 있다.
- [x] [binary-dist] 단일 바이너리 배포 구조가 장기 유지 대상인지 확인되어 있다.
- [x] [jenkins-boundary] Jenkins 전용 환경 변수 의존을 확장 지점과 분리할 기준이 정리되어 있다.

## 완료 기준

- [x] 새 기능을 추가할 때 어떤 CLI 동작을 깨면 안 되는지 빠르게 판단할 수 있다.
- [x] CLI 자동화 표면 정리 단계의 구조화 출력, YAML validation, Jenkins 의존성 완화 작업이 이 기준선을 참조해 진행될 수 있다.
- [x] README의 사용법 설명, CLI 구현, `agent-ops/roadmap/`의 상세 로드맵이 같은 실행 모드 경계를 가리킨다.

## 범위 제외

- `oto-agent` 프로세스나 Edge bootstrap 흐름을 구현하지 않는다.
- proto-socket 메시지 프로토콜을 설계하거나 구현하지 않는다.
- Jenkins 지원을 제거하지 않는다.

## 작업 컨텍스트

- 먼저 `README.md`, `agent-ops/rules/project/rules.md`, `lib/oto/application.dart`, `lib/cli/**`의 현재 실행 모드 설명을 확인한다.
- 코드 변경이 필요하면 관련 도메인 rule을 먼저 읽고, 변경 범위를 CLI 호환 경계 정리에 맞춘다.
- 완료 근거:
  - `README.md`의 `현재 상태`, `실행 모드`, `CLI 호환 기준선`, `Roadmap` 섹션이 CLI 실행 모드와 확장 경계를 같은 기준으로 설명한다.
  - `lib/oto/application.dart`의 `BuildType`과 실행 모드별 `DataComposer` 분기가 README의 실행 표면과 일치한다.
  - `lib/cli/commands/command_exe.dart`와 `lib/cli/commands/command_scheduler.dart`가 `-j`, `-f`, `scheduler` 호환 표면을 구현한다.
  - `README.md`의 설치 명령이 `dart compile exe bin/main.dart -o oto` 단일 바이너리 산출물을 장기 배포 기준으로 명시한다.
