# OTO 로드맵

## 전체 목표

OTO는 YAML 기반 빌드/배포 파이프라인을 실행하는 Dart CLI에서 출발해, Jenkins 내부 실행 도구에 머물지 않고 Edge에 직접 연결되는 가벼운 build/deploy agent로 확장한다.
기존 CLI, YAML 파이프라인, 커맨드 확장 모델은 유지하면서 외부 자동화와 원격 제어가 다루기 쉬운 실행 표면을 만든다.

## Phase 흐름

- CLI 자동화 표면 정리: Jenkins, 파일 실행, 스케줄러로 동작하는 현재 CLI 표면을 장기 호환 경계로 정리하고, command catalog, YAML validation, 실행 결과, step event를 외부 자동화용 계약으로 확장한다.
- Edge 직접 연결 기반 `oto-agent`: OTO가 iop Edge와 proto-socket 기반 outbound 통신을 할 수 있는 최소 연결 계약을 먼저 정리하고, 그 위에서 bootstrap 설치/등록 경험을 정의한다.
- 메시지 기반 빌드 에이전트: `oto agent` 또는 `oto daemon` 모드에서 Edge와 proto-socket 기반 양방향 메시지 통신을 사용하며, OTO를 build/deploy 전용 domain agent로 노출한다.

## Milestone 목록

### Edge 직접 연결 기반 `oto-agent`

- [`oto-agent` 등록 흐름](milestones/oto-agent-registration.md) - 상태: 진행 중; 목표: `oto-agent` 설치 후 Edge 직접 outbound 등록 흐름을 구현 가능한 단위로 정리한다.

### 메시지 기반 빌드 에이전트

- [agent 메시지 프로토콜](milestones/agent-message-protocol.md) - 상태: 계획; 목표: agent register, capabilities, run request 등 기본 메시지 프로토콜을 정의한다.
- [원격 실행 생명주기](milestones/remote-run-lifecycle.md) - 상태: 계획; 목표: 원격 실행, 로그, artifact, cancel, status, self-update 생명주기를 완성한다.

## 아카이브 Milestone 요약

- CLI 자동화 기준선 정리 - 상태: 완료; 아카이브일: 2026-05-24; 요약: 현재 CLI 실행 모드와 핵심 호환 경계를 장기 기준선으로 정리했다.; 핵심 산출물/근거: README와 CLI 실행 모드 구현이 `-j`, `-f`, `scheduler`, 단일 바이너리 배포 기준을 같은 경계로 설명한다.; 후속 영향: 구조화된 자동화 표면, Jenkins 호환 경계 정리
- 구조화된 자동화 표면 - 상태: 완료; 아카이브일: 2026-05-24; 요약: command catalog, YAML validation, 실행 결과, step event를 외부 자동화용 출력 계약으로 정리했다.; 핵심 산출물/근거: `oto catalog`, `oto validate --json`, `BuildResult.toJson`, `CommandExe --json`, step event snapshot 검증.; 후속 영향: 메시지 기반 빌드 에이전트
- Jenkins 호환 경계 정리 - 상태: 완료; 아카이브일: 2026-05-24; 요약: Jenkins 호환 실행 경로와 Jenkins 없는 file/scheduler 실행 경계를 분리했다.; 핵심 산출물/근거: Jenkins env 수집 책임 분리, file/scheduler 실행 검증, README 및 샘플 경계 문서화, `dart analyze`, `dart test` 통과.; 후속 영향: Edge 직접 연결 기반 `oto-agent`
- OTO-iop proto-socket 통신 기반 - 상태: 완료; 아카이브일: 2026-05-24; 요약: OTO가 iop Edge에 직접 연결하기 위한 proto-socket transport, register handshake, session, smoke 기준을 정리하고 검증했다.; 핵심 산출물/근거: `../proto-socket/dart` path dependency, iop Edge register handshake smoke, `dart analyze`, `dart test` 통과.; 후속 영향: Edge bootstrap 계약, `oto-agent` 등록 흐름, agent 메시지 프로토콜
- Edge bootstrap 계약 - 상태: 완료; 아카이브일: 2026-05-25; 요약: Jenkins node 연결식 UX를 Linux 대상 OTO bootstrap script 설치/등록 계약으로 정리했다.; 핵심 산출물/근거: `assets/script/shell/oto_agent_bootstrap.sh`, `test/oto_agent_bootstrap_script_test.dart`, `~/.oto/agent/config.yaml` 생성, release asset 다운로드, background 실행/pid/log 기준.; 후속 영향: `oto-agent` 등록 흐름

## 로딩 정책

- 일반 작업에서는 `agent-ops/roadmap/ROADMAP.md`를 매번 읽지 않는다.
- 기능 추가, 구조 변경, 스킬 추가/수정, 문서 구조 변경 작업을 수행할 때는 `agent-ops/roadmap/current.md`를 먼저 읽는다.
- `current.md`는 현재 작업 위치가 아니라 활성 Milestone 후보 목록이다.
- `current.md`에는 개인별 현재 작업 위치나 완료 상태를 기록하지 않는다.
- `current.md`의 활성 Milestone은 `agent-ops/roadmap/milestones/` 하위 문서만 가리키며, `agent-ops/roadmap/archive/**`는 포함하지 않는다.
- 요청 내용, 현재 브랜치, 변경 파일, 관련 코드 경로를 보고 가장 관련 있는 활성 Milestone 문서를 같은 세션에서 1회 읽는다.
- 활성 Milestone 둘 이상에 걸치면 필요한 Milestone 문서를 모두 읽고 작업 범위를 좁힌다.
- 활성 Milestone 밖의 작업이면 이 문서의 Milestone 목록을 확인하고 사용자에게 진행 또는 전환 여부를 확인한다.
- 이 문서는 로드맵 생성/갱신, Phase 전환, Milestone 추가/수정 요청이 있을 때만 읽는다.
- 상세 작업과 완료 기준은 각 Milestone 문서의 체크리스트로 관리한다.
- 완료 또는 폐기되어 아카이브된 Milestone은 이 문서의 `아카이브 Milestone 요약`에 당시 요약만 남기고, 아카이브 문서 링크나 상세 경로는 남기지 않는다.
- 상세 문서가 있는 `agent-ops/roadmap/archive/**`는 사용자가 명시적으로 요청한 경우에만 읽는다.
- 아카이브된 Milestone 문서는 최신 템플릿이나 스킬 규약에 맞춰 재포맷하지 않는다.
- 선택된 Milestone의 `구현 잠금` 섹션이 없거나 상태가 `잠금`이면 코드 구현, `agent-task` 구현 계획 생성, 세부 API/파일 구조 확정을 시작하기 전에 현재 요청에 직접 영향을 주는 `결정 필요` 항목만 확인한다.
- 현재 요청과 직접 관련 없는 미정 항목은 잠금 상태로 남겨도 되며, 기존 구조/도메인 rule/플랫폼 관례로 정할 수 있는 작업은 표준선으로 기록하고 진행할 수 있다.
- Milestone 전체에서 사용자만 결정할 항목이 더 이상 없고 에이전트가 표준선에 따라 실행하면 되는 상태라면 `구현 잠금` 상태를 `해제`로 둔다.
