diff --git a/agent-ops/roadmap/ROADMAP.md b/agent-ops/roadmap/ROADMAP.md index ab91251..063ce7a 100644 --- a/agent-ops/roadmap/ROADMAP.md +++ b/agent-ops/roadmap/ROADMAP.md @@ -7,44 +7,39 @@ OTO는 YAML 기반 빌드/배포 파이프라인을 실행하는 Dart CLI에서 ## 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로 노출한다. +위에서 아래로 진행된 순서와 예정 흐름을 나타낸다. +완료된 Phase도 로드맵에서 제거하지 않고, archive의 Phase 문서로 연결한다. +검토중 또는 진행중 Phase는 계획 Phase보다 위에 두어, 아래로 갈수록 미래 계획에 가까워지게 정렬한다. -## 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` 등록 흐름 +- [완료] CLI 자동화 표면 정리 + - 경로: `agent-ops/roadmap/archive/phase/cli-automation-surface/PHASE.md` + - 요약: Jenkins, 파일 실행, 스케줄러로 동작하는 현재 CLI 표면을 장기 호환 경계와 외부 자동화 계약으로 정리했다. +- [진행중] Edge 직접 연결 기반 `oto-agent` + - 경로: `agent-ops/roadmap/phase/edge-direct-oto-agent/PHASE.md` + - 요약: OTO가 iop Edge와 proto-socket 기반 outbound 통신을 할 수 있는 최소 연결 계약과 bootstrap 설치/등록 경험을 정리한다. +- [계획] 메시지 기반 빌드 에이전트 + - 경로: `agent-ops/roadmap/phase/message-based-build-agent/PHASE.md` + - 요약: `oto agent` 또는 `oto daemon` 모드에서 Edge와 양방향 메시지 통신을 사용하며, OTO를 build/deploy 전용 domain agent로 노출한다. ## 로딩 정책 - 일반 작업에서는 `agent-ops/roadmap/ROADMAP.md`를 매번 읽지 않는다. - 기능 추가, 구조 변경, 스킬 추가/수정, 문서 구조 변경 작업을 수행할 때는 `agent-ops/roadmap/current.md`를 먼저 읽는다. -- `current.md`는 현재 작업 위치가 아니라 활성 Milestone 후보 목록이다. +- `current.md`는 현재 작업 위치가 아니라 활성 Phase와 활성 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 문서는 최신 템플릿이나 스킬 규약에 맞춰 재포맷하지 않는다. +- `current.md`의 활성 Phase는 `agent-ops/roadmap/phase//PHASE.md`를 가리킨다. +- `current.md`의 활성 Milestone은 `agent-ops/roadmap/phase//milestones/.md`를 가리킨다. +- `current.md`는 `agent-ops/roadmap/archive/**` 경로를 활성 항목으로 포함하지 않는다. +- 요청 내용, 현재 브랜치, 변경 파일, 관련 코드 경로를 보고 가장 관련 있는 활성 Phase와 Milestone 문서를 같은 세션에서 1회 읽는다. +- 활성 Phase 또는 Milestone 밖의 작업이면 이 문서의 Phase 흐름을 확인하고 사용자에게 진행 또는 전환 여부를 확인한다. +- 이 문서는 로드맵 생성/갱신, Phase 전환, Phase 추가/수정, 전체 구조 변경 요청이 있을 때만 읽는다. +- 상세 작업과 완료 기준은 각 Milestone 문서의 `필수 기능`, `완료 기준`으로 관리한다. +- 모든 필수 작업과 완료 기준이 충족된 Milestone은 먼저 `[검토중]`으로 두고, 사용자 완료 확인과 archive 승인을 받은 뒤 `[완료]`로 전환한다. +- 완료된 Phase는 `agent-ops/roadmap/archive/phase//PHASE.md`로 이동하고, 하위 Milestone도 같은 archive Phase scaffold 아래에 둔다. +- 진행중 Phase 안에서 완료된 Milestone은 활성 Phase 문서에 짧은 링크를 남기고, 상세 문서는 `agent-ops/roadmap/archive/phase//milestones/`로 이동한다. +- archive `PHASE.md`는 Phase 자체가 완료 또는 폐기될 때만 만들며, 진행중 Phase의 완료 Milestone만 archive된 경우 archive Phase 디렉터리에 `milestones/`만 있을 수 있다. +- `agent-ops/roadmap/archive/**`는 일반 작업에서 읽지 않는다. 과거 완료 내용, 완료 근거, 복원, 비교가 필요한 경우에만 `ROADMAP.md` 또는 `PHASE.md`의 archive 링크를 따라가서 읽는다. +- 아카이브된 Phase/Milestone 문서는 최신 템플릿이나 스킬 규약에 맞춰 재포맷하지 않는다. - 선택된 Milestone의 `구현 잠금` 섹션이 없거나 상태가 `잠금`이면 코드 구현, `agent-task` 구현 계획 생성, 세부 API/파일 구조 확정을 시작하기 전에 현재 요청에 직접 영향을 주는 `결정 필요` 항목만 확인한다. - 현재 요청과 직접 관련 없는 미정 항목은 잠금 상태로 남겨도 되며, 기존 구조/도메인 rule/플랫폼 관례로 정할 수 있는 작업은 표준선으로 기록하고 진행할 수 있다. - Milestone 전체에서 사용자만 결정할 항목이 더 이상 없고 에이전트가 표준선에 따라 실행하면 되는 상태라면 `구현 잠금` 상태를 `해제`로 둔다. diff --git a/agent-ops/roadmap/archive/phase/cli-automation-surface/PHASE.md b/agent-ops/roadmap/archive/phase/cli-automation-surface/PHASE.md new file mode 100644 index 0000000..4e23430 --- /dev/null +++ b/agent-ops/roadmap/archive/phase/cli-automation-surface/PHASE.md @@ -0,0 +1,30 @@ +# Phase: CLI 자동화 표면 정리 + +## 상태 + +[완료] + +## 목표 + +Jenkins, 파일 실행, 스케줄러로 동작하는 현재 CLI 표면을 장기 호환 경계로 정리했다. +command catalog, YAML validation, 실행 결과, step event를 외부 자동화가 소비할 수 있는 계약으로 확장했다. + +## Milestone 흐름 + +완료된 Milestone은 archive 경로를 가리키고, 검토중, 진행중, 계획 또는 보류 Milestone은 이 Phase 하위 `milestones/` 경로를 가리킨다. +완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. + +- [완료] CLI 자동화 기준선 정리 + - 경로: `agent-ops/roadmap/archive/phase/cli-automation-surface/milestones/cli-automation-baseline.md` + - 요약: 현재 CLI 실행 모드와 핵심 호환 경계를 장기 기준선으로 정리했다. +- [완료] 구조화된 자동화 표면 + - 경로: `agent-ops/roadmap/archive/phase/cli-automation-surface/milestones/structured-automation-surface.md` + - 요약: command catalog, YAML validation, 실행 결과, step event를 외부 자동화용 출력 계약으로 정리했다. +- [완료] Jenkins 호환 경계 정리 + - 경로: `agent-ops/roadmap/archive/phase/cli-automation-surface/milestones/jenkins-compatibility-boundary.md` + - 요약: Jenkins 호환 실행 경로와 Jenkins 없는 file/scheduler 실행 경계를 분리했다. + +## Phase 경계 + +- 이 Phase는 CLI 실행 모드, 호환 경계, 외부 자동화 출력 계약을 다룬다. +- Edge 직접 연결 agent와 메시지 기반 원격 실행은 후속 Phase에서 다룬다. diff --git a/agent-ops/roadmap/archive/2026/05/cli-automation-baseline.md b/agent-ops/roadmap/archive/phase/cli-automation-surface/milestones/cli-automation-baseline.md similarity index 100% rename from agent-ops/roadmap/archive/2026/05/cli-automation-baseline.md rename to agent-ops/roadmap/archive/phase/cli-automation-surface/milestones/cli-automation-baseline.md diff --git a/agent-ops/roadmap/archive/2026/05/jenkins-compatibility-boundary.md b/agent-ops/roadmap/archive/phase/cli-automation-surface/milestones/jenkins-compatibility-boundary.md similarity index 100% rename from agent-ops/roadmap/archive/2026/05/jenkins-compatibility-boundary.md rename to agent-ops/roadmap/archive/phase/cli-automation-surface/milestones/jenkins-compatibility-boundary.md diff --git a/agent-ops/roadmap/archive/2026/05/structured-automation-surface.md b/agent-ops/roadmap/archive/phase/cli-automation-surface/milestones/structured-automation-surface.md similarity index 100% rename from agent-ops/roadmap/archive/2026/05/structured-automation-surface.md rename to agent-ops/roadmap/archive/phase/cli-automation-surface/milestones/structured-automation-surface.md diff --git a/agent-ops/roadmap/archive/2026/05/edge-bootstrap-contract.md b/agent-ops/roadmap/archive/phase/edge-direct-oto-agent/milestones/edge-bootstrap-contract.md similarity index 100% rename from agent-ops/roadmap/archive/2026/05/edge-bootstrap-contract.md rename to agent-ops/roadmap/archive/phase/edge-direct-oto-agent/milestones/edge-bootstrap-contract.md diff --git a/agent-ops/roadmap/archive/2026/05/oto-iop-proto-socket-foundation.md b/agent-ops/roadmap/archive/phase/edge-direct-oto-agent/milestones/oto-iop-proto-socket-foundation.md similarity index 100% rename from agent-ops/roadmap/archive/2026/05/oto-iop-proto-socket-foundation.md rename to agent-ops/roadmap/archive/phase/edge-direct-oto-agent/milestones/oto-iop-proto-socket-foundation.md diff --git a/agent-ops/roadmap/current.md b/agent-ops/roadmap/current.md index 163b393..4dd27e4 100644 --- a/agent-ops/roadmap/current.md +++ b/agent-ops/roadmap/current.md @@ -1,14 +1,26 @@ # 현재 로드맵 컨텍스트 +## 활성 Phase + +- [진행중] Edge 직접 연결 기반 `oto-agent` + - 경로: `agent-ops/roadmap/phase/edge-direct-oto-agent/PHASE.md` + ## 활성 Milestone -- `oto-agent` 등록 흐름: agent-ops/roadmap/milestones/oto-agent-registration.md +- [진행중] `oto-agent` 등록 흐름 + - Phase: `agent-ops/roadmap/phase/edge-direct-oto-agent/PHASE.md` + - 경로: `agent-ops/roadmap/phase/edge-direct-oto-agent/milestones/oto-agent-registration.md` ## 선택 규칙 -- 이 문서는 활성 Milestone 후보 목록이며, 개인별 현재 작업 위치나 완료 상태를 기록하지 않는다. -- 활성 Milestone은 `agent-ops/roadmap/milestones/` 하위 문서만 가리키며, `agent-ops/roadmap/archive/**`는 포함하지 않는다. -- 요청 내용, 현재 브랜치, 변경 파일, 관련 코드 경로를 보고 가장 관련 있는 Milestone을 선택하고 같은 세션에서 1회 읽는다. -- 활성 Milestone 둘 이상에 걸치면 필요한 Milestone 문서를 모두 읽고 작업 범위를 좁힌다. -- 활성 Milestone 밖의 작업이면 `agent-ops/roadmap/ROADMAP.md`의 Milestone 목록을 확인하고 사용자에게 진행 또는 전환 여부를 확인한다. +- 이 문서는 활성 Phase와 활성 Milestone 후보 목록이며, 개인별 현재 작업 위치나 완료 상태를 기록하지 않는다. +- 활성 Phase는 `agent-ops/roadmap/phase//PHASE.md`를 가리킨다. +- 활성 Milestone은 `agent-ops/roadmap/phase//milestones/.md`를 가리킨다. +- 활성 항목은 아카이브 경로를 포함하지 않는다. +- `[검토중]` 항목은 사용자 완료 확인 전까지 활성 항목으로 남길 수 있다. +- `[완료]` 또는 `[폐기]` 항목은 archive 링크를 남긴 뒤 활성 항목에서 제거한다. +- 요청 내용, 현재 브랜치, 변경 파일, 관련 코드 경로를 보고 가장 관련 있는 Phase와 Milestone을 선택하고 같은 세션에서 1회 읽는다. +- 활성 Phase 또는 Milestone 둘 이상에 걸치면 필요한 문서를 모두 읽고 작업 범위를 좁힌다. +- 활성 범위 밖의 작업이면 `agent-ops/roadmap/ROADMAP.md`의 Phase 흐름을 확인하고 사용자에게 진행 또는 전환 여부를 확인한다. +- 완료된 과거 내용이 필요할 때만 `ROADMAP.md` 또는 `PHASE.md`에 있는 archive 링크를 따라가서 읽는다. - 선택된 Milestone의 `구현 잠금` 섹션이 없거나 상태가 `잠금`이면 구현이나 구현 계획을 시작하기 전에 현재 요청에 직접 영향을 주는 `결정 필요` 항목만 확인한다. 관련 결정이 없고 표준선으로 처리 가능하면 잠금을 유지한 채 진행할 수 있으며, Milestone 전체에서 사용자만 결정할 항목이 더 이상 없을 때만 `구현 잠금` 상태를 `해제`로 둔다. diff --git a/agent-ops/roadmap/phase/edge-direct-oto-agent/PHASE.md b/agent-ops/roadmap/phase/edge-direct-oto-agent/PHASE.md new file mode 100644 index 0000000..029ac6c --- /dev/null +++ b/agent-ops/roadmap/phase/edge-direct-oto-agent/PHASE.md @@ -0,0 +1,32 @@ +# Phase: Edge 직접 연결 기반 `oto-agent` + +## 상태 + +[진행중] + +## 목표 + +OTO가 `iop-node`를 거치지 않고 iop Edge에 직접 outbound 연결하는 최소 agent 계약을 정리한다. +bootstrap 설치 경험, proto-socket 연결 기반, 등록 상태 전이를 묶어 Linux MVP에서 구현 가능한 경계로 만든다. + +## Milestone 흐름 + +완료된 Milestone은 archive 경로를 가리키고, 검토중, 진행중, 계획 또는 보류 Milestone은 이 Phase 하위 `milestones/` 경로를 가리킨다. +완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. + +- [완료] OTO-iop proto-socket 통신 기반 + - 경로: `agent-ops/roadmap/archive/phase/edge-direct-oto-agent/milestones/oto-iop-proto-socket-foundation.md` + - 요약: OTO가 iop Edge에 직접 연결하기 위한 proto-socket transport, register handshake, session, smoke 기준을 정리하고 검증했다. +- [완료] Edge bootstrap 계약 + - 경로: `agent-ops/roadmap/archive/phase/edge-direct-oto-agent/milestones/edge-bootstrap-contract.md` + - 요약: Jenkins node 연결식 UX를 Linux 대상 OTO bootstrap script 설치/등록 계약으로 정리했다. +- [진행중] `oto-agent` 등록 흐름 + - 경로: `agent-ops/roadmap/phase/edge-direct-oto-agent/milestones/oto-agent-registration.md` + - 요약: `oto-agent` 설치 후 Edge 직접 outbound 등록 흐름을 구현 가능한 단위로 정리한다. + +## Phase 경계 + +- 이 Phase는 Linux `oto-agent`의 설치, 설정 파일, Edge 직접 outbound 연결, 최초 등록 상태 전이를 다룬다. +- `iop-node`를 경유하는 generic node agent 기능은 포함하지 않는다. +- 메시지 기반 원격 실행, 로그, artifact, cancel, self-update 전체 생명주기는 다음 Phase에서 다룬다. +- Edge identity 검증, checksum/signature, 장기 credential 운영 정책은 MVP 이후 보안 강화 항목으로 분리한다. diff --git a/agent-ops/roadmap/milestones/oto-agent-registration.md b/agent-ops/roadmap/phase/edge-direct-oto-agent/milestones/oto-agent-registration.md similarity index 80% rename from agent-ops/roadmap/milestones/oto-agent-registration.md rename to agent-ops/roadmap/phase/edge-direct-oto-agent/milestones/oto-agent-registration.md index f9ebafa..9a2ebf1 100644 --- a/agent-ops/roadmap/milestones/oto-agent-registration.md +++ b/agent-ops/roadmap/phase/edge-direct-oto-agent/milestones/oto-agent-registration.md @@ -1,16 +1,17 @@ -# `oto-agent` 등록 흐름 +# Milestone: `oto-agent` 등록 흐름 + +## 위치 + +- Roadmap: `agent-ops/roadmap/ROADMAP.md` +- Phase: `agent-ops/roadmap/phase/edge-direct-oto-agent/PHASE.md` ## 목표 설치된 `oto-agent`가 `iop-node`를 거치지 않고 Edge에 직접 outbound 연결하는 등록 흐름을 구현 가능한 단위로 정리한다. -## 단계 - -Edge 직접 연결 기반 `oto-agent` - ## 상태 -진행 중 +[진행중] ## 구현 잠금 @@ -26,6 +27,10 @@ Edge 직접 연결 기반 `oto-agent` ## 필수 기능 +### Epic: [registration-contract] Edge 직접 등록 계약 + +bootstrap으로 설치된 Linux `oto-agent`가 설정 파일을 읽고 Edge에 직접 등록되는 상태 전이를 묶는다. + - [x] [token-flow] bootstrap agent 식별 값 또는 token의 전달과 최초 등록 사용 흐름이 정의되어 있다. - [x] [edge-identity] Edge identity 검증을 MVP 최소 연결 기준과 후속 보안 강화 기준으로 분리해 정리되어 있다. - [x] [binary-integrity] OTO repo release asset 다운로드 기준과 후속 checksum/signature 강화 기준이 분리되어 있다. @@ -40,6 +45,16 @@ Edge 직접 연결 기반 `oto-agent` - [x] `iop-node`를 경유하지 않는다는 제품 경계가 명확하다. - [x] 보안 강화 항목이 후속 작업으로 분리되어 MVP 등록 흐름을 막지 않는다. +## 완료 리뷰 + +- 상태: 없음 +- 요청일: 없음 +- 완료 근거: `registration-state`와 online/실패/heartbeat 기준이 남아 있어 완료 후보가 아니다. +- 리뷰 필요: + - [ ] 사용자가 완료 결과를 확인했다 + - [ ] archive 이동을 승인했다 +- 리뷰 코멘트: 없음 + ## 범위 제외 - generic node agent 기능을 포함하지 않는다. @@ -49,7 +64,8 @@ Edge 직접 연결 기반 `oto-agent` ## 작업 컨텍스트 -- 선행 Edge bootstrap 계약은 완료 상태로 아카이브되었으며, 일반 작업에서는 `ROADMAP.md`의 아카이브 요약과 아래 표준선을 기준으로 한다. +- 관련 경로: `lib/oto/**`, `test/oto_agent_*`, `assets/script/shell/oto_agent_bootstrap.sh` +- 선행 Edge bootstrap 계약은 완료 상태로 아카이브되었으며, 일반 작업에서는 활성 Phase의 archive 링크와 아래 표준선을 기준으로 한다. - 선행 계약의 상세 문서는 과거 기록 확인이나 복원이 명시된 경우에만 읽는다. - 표준선(선택): Linux MVP는 OTO가 없는 대상 머신에서 bootstrap script로 release asset을 다운로드한 뒤 `~/.oto/agent/config.yaml`을 생성하고 백그라운드로 실행한다. - 표준선(선택): online 판정은 Edge 등록 완료와 최초 heartbeat 도착을 모두 만족했을 때로 둔다. @@ -62,8 +78,9 @@ Edge 직접 연결 기반 `oto-agent` - MVP 재시작 기준: bootstrap으로 시작한 background 프로세스의 pid/log를 기준으로 사용자가 상태를 확인하고 `oto agent run --config `를 재실행한다. 자동 재시작과 systemd user service는 후속 강화로 둔다. - 남은 작업: Edge 등록 완료 이후 최초 heartbeat 도착까지의 online 판정과 재시도 정책은 agent 메시지/heartbeat 흐름과 맞물려 별도 정리가 필요하다. - 선행 OTO Milestone: OTO-iop proto-socket 통신 기반 -- 선행 iop Milestone: `../iop/agent-ops/roadmap/milestones/agent-bootstrap-oto-enrollment.md` +- 선행 iop Milestone: agent bootstrap OTO enrollment - 책임 경계: iop는 Edge outbound enrollment를 받아들이는 registry/protocol/credential 기준을 정리한다. - 책임 경계: OTO는 설치된 `oto-agent`가 해당 기준을 소비해 설정을 만들고 Edge에 직접 outbound 연결하는 상태 전이를 정리한다. - 네트워크, 설치, packaging 관련 코드나 문서가 추가될 경우 관련 도메인 rule을 먼저 확인한다. -- 구현 계획: `agent-task/oto_agent_registration/` 하위 plan-code-review 루프로 진행한다. +- 구현 계획: `agent-task/m-oto-agent-registration/` 하위 plan-code-review 루프로 진행한다. +- 확인 필요: Edge 등록 완료 이후 최초 heartbeat 도착까지의 online 판정과 재시도 정책을 agent 메시지/heartbeat 흐름과 맞춰 정리한다. diff --git a/agent-ops/roadmap/phase/message-based-build-agent/PHASE.md b/agent-ops/roadmap/phase/message-based-build-agent/PHASE.md new file mode 100644 index 0000000..4119c69 --- /dev/null +++ b/agent-ops/roadmap/phase/message-based-build-agent/PHASE.md @@ -0,0 +1,28 @@ +# Phase: 메시지 기반 빌드 에이전트 + +## 상태 + +[계획] + +## 목표 + +`oto agent` 또는 `oto daemon` 모드에서 Edge와 proto-socket 기반 양방향 메시지 통신을 사용한다. +OTO를 generic remote shell이 아니라 build/deploy 전용 domain agent로 노출하고, 기존 YAML 파이프라인과 커맨드 확장 모델을 원격 제어 가능한 실행 표면으로 연결한다. + +## Milestone 흐름 + +완료된 Milestone은 archive 경로를 가리키고, 검토중, 진행중, 계획 또는 보류 Milestone은 이 Phase 하위 `milestones/` 경로를 가리킨다. +완료, 검토중, 진행중, 계획 순서로 두어 아래로 갈수록 미래 작업에 가까워지게 정렬한다. + +- [계획] agent 메시지 프로토콜 + - 경로: `agent-ops/roadmap/phase/message-based-build-agent/milestones/agent-message-protocol.md` + - 요약: agent register, capabilities, run request 등 기본 메시지 프로토콜을 정의한다. +- [계획] 원격 실행 생명주기 + - 경로: `agent-ops/roadmap/phase/message-based-build-agent/milestones/remote-run-lifecycle.md` + - 요약: 원격 실행, 로그, artifact, cancel, status, self-update 생명주기를 완성한다. + +## Phase 경계 + +- 기존 YAML 파이프라인 형식과 로컬 CLI 실행 경로를 대체하지 않는다. +- Edge 관리 UI, 전체 scheduling policy, artifact storage 운영 정책은 포함하지 않는다. +- 메시지 프로토콜과 원격 실행 생명주기는 build/deploy agent 책임 안에서만 정의한다. diff --git a/agent-ops/roadmap/milestones/agent-message-protocol.md b/agent-ops/roadmap/phase/message-based-build-agent/milestones/agent-message-protocol.md similarity index 76% rename from agent-ops/roadmap/milestones/agent-message-protocol.md rename to agent-ops/roadmap/phase/message-based-build-agent/milestones/agent-message-protocol.md index 7476c42..e426d05 100644 --- a/agent-ops/roadmap/milestones/agent-message-protocol.md +++ b/agent-ops/roadmap/phase/message-based-build-agent/milestones/agent-message-protocol.md @@ -1,16 +1,17 @@ -# agent 메시지 프로토콜 +# Milestone: agent 메시지 프로토콜 + +## 위치 + +- Roadmap: `agent-ops/roadmap/ROADMAP.md` +- Phase: `agent-ops/roadmap/phase/message-based-build-agent/PHASE.md` ## 목표 `oto agent` 또는 `oto daemon` 모드에서 Edge와 proto-socket 기반 양방향 메시지 통신을 하기 위한 기본 메시지 범위와 계약을 정의한다. -## 단계 - -메시지 기반 빌드 에이전트 - ## 상태 -계획 +[계획] ## 구현 잠금 @@ -28,6 +29,10 @@ ## 필수 기능 +### Epic: [message-contract] Edge-agent 메시지 계약 + +Edge와 OTO agent가 같은 의미로 해석할 기본 메시지 범위와 호환성 기준을 묶는다. + - [ ] [message-list] 기본 메시지 목록과 방향성이 정의되어 있다. - [ ] [message-fields] 각 메시지의 최소 필드와 실패 응답 형식이 정의되어 있다. - [ ] [version-capability] 프로토콜 버전과 capability 협상 기준이 정의되어 있다. @@ -39,6 +44,16 @@ - [ ] YAML 파이프라인과 커맨드 모델이 메시지 위에서 어떻게 호출되는지 설명된다. - [ ] 메시지 추가가 기존 CLI 실행 경로를 깨지 않는다는 경계가 명확하다. +## 완료 리뷰 + +- 상태: 없음 +- 요청일: 없음 +- 완료 근거: 계획 상태이며 필수 Task와 완료 기준이 아직 충족되지 않았다. +- 리뷰 필요: + - [ ] 사용자가 완료 결과를 확인했다 + - [ ] archive 이동을 승인했다 +- 리뷰 코멘트: 없음 + ## 범위 제외 - 웹 UI 또는 Edge 관리 화면을 구현하지 않는다. @@ -47,11 +62,13 @@ ## 작업 컨텍스트 +- 관련 경로: `lib/oto/**`, `test/**` - CLI 자동화 표면 정리 단계의 구조화 실행 결과와 step event 기준을 먼저 확인한다. - 표준선(선택): 메시지 형태는 기존 proto-socket 연결 방식과 구조화 실행 결과/step event 계약을 우선 활용하고, YAML 파이프라인 실행 경로를 대체하지 않는 방향으로 잡는다. - 선행 Milestone: OTO-iop proto-socket 통신 기반 - 선행 Milestone: `oto-agent` 등록 흐름 -- 관련 iop Milestone: `../iop/agent-ops/roadmap/milestones/agent-bootstrap-oto-enrollment.md` +- 관련 iop Milestone: agent bootstrap OTO enrollment - 책임 경계: iop는 Edge가 이해해야 하는 specialized domain agent registry/protocol 경계를 정리한다. - 책임 경계: OTO는 build/deploy domain agent가 노출할 capabilities, YAML run request 연결, step/log/artifact event 의미를 정리한다. - 프로토콜 파일이나 생성 코드가 추가되면 관련 도메인 rule 또는 새 도메인 rule 필요 여부를 검토한다. +- 확인 필요: 구현 착수 전 proto 파일, 생성 코드, 메시지 버전의 소유 경계를 확정한다. diff --git a/agent-ops/roadmap/milestones/remote-run-lifecycle.md b/agent-ops/roadmap/phase/message-based-build-agent/milestones/remote-run-lifecycle.md similarity index 74% rename from agent-ops/roadmap/milestones/remote-run-lifecycle.md rename to agent-ops/roadmap/phase/message-based-build-agent/milestones/remote-run-lifecycle.md index c2f86dd..6f68d5f 100644 --- a/agent-ops/roadmap/milestones/remote-run-lifecycle.md +++ b/agent-ops/roadmap/phase/message-based-build-agent/milestones/remote-run-lifecycle.md @@ -1,16 +1,17 @@ -# 원격 실행 생명주기 +# Milestone: 원격 실행 생명주기 + +## 위치 + +- Roadmap: `agent-ops/roadmap/ROADMAP.md` +- Phase: `agent-ops/roadmap/phase/message-based-build-agent/PHASE.md` ## 목표 Edge가 OTO agent에 파이프라인 실행을 요청하고, agent가 실행 진행 상황과 산출물을 보고하며, 취소와 상태 조회, self-update까지 이어지는 원격 실행 생명주기를 완성한다. -## 단계 - -메시지 기반 빌드 에이전트 - ## 상태 -계획 +[계획] ## 구현 잠금 @@ -29,6 +30,10 @@ Edge가 OTO agent에 파이프라인 실행을 요청하고, agent가 실행 진 ## 필수 기능 +### Epic: [remote-lifecycle] 원격 실행 상태 전이 + +Edge의 run request가 기존 YAML 파이프라인 실행, 진행 보고, 취소, 상태 조회, self-update로 이어지는 생명주기를 묶는다. + - [ ] [run-input] run request가 pipeline 실행 입력으로 변환되는 기준이 정의되어 있다. - [ ] [step-log] step event와 log stream이 원격 소비자에게 전달되는 흐름이 정의되어 있다. - [ ] [artifact-event] artifact event의 메타데이터와 전달 책임이 정의되어 있다. @@ -40,6 +45,16 @@ Edge가 OTO agent에 파이프라인 실행을 요청하고, agent가 실행 진 - [ ] 기존 YAML 파이프라인과 커맨드 확장 모델을 유지하면서 원격 제어가 가능하다. - [ ] self-update가 agent 안정성을 해치지 않도록 최소 실패 기준이 있다. +## 완료 리뷰 + +- 상태: 없음 +- 요청일: 없음 +- 완료 근거: 계획 상태이며 필수 Task와 완료 기준이 아직 충족되지 않았다. +- 리뷰 필요: + - [ ] 사용자가 완료 결과를 확인했다 + - [ ] archive 이동을 승인했다 +- 리뷰 코멘트: 없음 + ## 범위 제외 - YAML 파이프라인 언어를 새 DSL로 교체하지 않는다. @@ -48,7 +63,9 @@ Edge가 OTO agent에 파이프라인 실행을 요청하고, agent가 실행 진 ## 작업 컨텍스트 +- 관련 경로: `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 책임 범위를 확정한다.