From d03bb3b1d6f2b68e19c2fa4ee8f1a8525d909a37 Mon Sep 17 00:00:00 2001 From: toki Date: Mon, 25 May 2026 06:55:24 +0900 Subject: [PATCH] update roadmap: archive edge-bootstrap-contract.md and update milestones --- agent-ops/roadmap/ROADMAP.md | 2 +- .../2026/05}/edge-bootstrap-contract.md | 0 .../milestones/oto-agent-registration.md | 24 ++++++++++++------- 3 files changed, 16 insertions(+), 10 deletions(-) rename agent-ops/roadmap/{milestones => archive/2026/05}/edge-bootstrap-contract.md (100%) diff --git a/agent-ops/roadmap/ROADMAP.md b/agent-ops/roadmap/ROADMAP.md index c9d788a..ab91251 100644 --- a/agent-ops/roadmap/ROADMAP.md +++ b/agent-ops/roadmap/ROADMAP.md @@ -15,7 +15,6 @@ OTO는 YAML 기반 빌드/배포 파이프라인을 실행하는 Dart CLI에서 ### Edge 직접 연결 기반 `oto-agent` -- [Edge bootstrap 계약](milestones/edge-bootstrap-contract.md) - 상태: 완료; 목표: Jenkins node 연결식 UX를 Linux 대상 OTO bootstrap script 설치/등록 계약으로 정리한다. - [`oto-agent` 등록 흐름](milestones/oto-agent-registration.md) - 상태: 진행 중; 목표: `oto-agent` 설치 후 Edge 직접 outbound 등록 흐름을 구현 가능한 단위로 정리한다. ### 메시지 기반 빌드 에이전트 @@ -29,6 +28,7 @@ OTO는 YAML 기반 빌드/배포 파이프라인을 실행하는 Dart CLI에서 - 구조화된 자동화 표면 - 상태: 완료; 아카이브일: 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` 등록 흐름 ## 로딩 정책 diff --git a/agent-ops/roadmap/milestones/edge-bootstrap-contract.md b/agent-ops/roadmap/archive/2026/05/edge-bootstrap-contract.md similarity index 100% rename from agent-ops/roadmap/milestones/edge-bootstrap-contract.md rename to agent-ops/roadmap/archive/2026/05/edge-bootstrap-contract.md diff --git a/agent-ops/roadmap/milestones/oto-agent-registration.md b/agent-ops/roadmap/milestones/oto-agent-registration.md index 3ff0b04..f9ebafa 100644 --- a/agent-ops/roadmap/milestones/oto-agent-registration.md +++ b/agent-ops/roadmap/milestones/oto-agent-registration.md @@ -26,19 +26,19 @@ Edge 직접 연결 기반 `oto-agent` ## 필수 기능 -- [ ] [token-flow] bootstrap agent 식별 값 또는 token의 전달과 최초 등록 사용 흐름이 정의되어 있다. -- [ ] [edge-identity] Edge identity 검증을 MVP 최소 연결 기준과 후속 보안 강화 기준으로 분리해 정리되어 있다. -- [ ] [binary-integrity] OTO repo release asset 다운로드 기준과 후속 checksum/signature 강화 기준이 분리되어 있다. -- [ ] [service-runtime] 백그라운드 실행 상태와 agent 프로세스 재시작 기준이 정의되어 있다. +- [x] [token-flow] bootstrap agent 식별 값 또는 token의 전달과 최초 등록 사용 흐름이 정의되어 있다. +- [x] [edge-identity] Edge identity 검증을 MVP 최소 연결 기준과 후속 보안 강화 기준으로 분리해 정리되어 있다. +- [x] [binary-integrity] OTO repo release asset 다운로드 기준과 후속 checksum/signature 강화 기준이 분리되어 있다. +- [x] [service-runtime] 백그라운드 실행 상태와 agent 프로세스 재시작 기준이 정의되어 있다. - [ ] [registration-state] Edge 등록 성공/실패, 최초 heartbeat 기반 online 판정, 재시도 기준이 정의되어 있다. ## 완료 기준 -- [ ] bootstrap script 실행 후 다운로드된 `oto-agent`가 `~/.oto/agent/config.yaml`을 통해 Edge에 직접 연결하는 상태 전이가 구현 가능한 수준으로 분해되어 있다. +- [x] bootstrap script 실행 후 다운로드된 `oto-agent`가 `~/.oto/agent/config.yaml`을 통해 Edge에 직접 연결하는 상태 전이가 구현 가능한 수준으로 분해되어 있다. - [ ] Edge 등록 완료와 최초 heartbeat 도착을 online으로 보는 판정 기준이 구현 가능한 수준으로 설명된다. - [ ] 백그라운드 실행 실패, 등록 실패, heartbeat 미도착 상태가 구분된다. -- [ ] `iop-node`를 경유하지 않는다는 제품 경계가 명확하다. -- [ ] 보안 강화 항목이 후속 작업으로 분리되어 MVP 등록 흐름을 막지 않는다. +- [x] `iop-node`를 경유하지 않는다는 제품 경계가 명확하다. +- [x] 보안 강화 항목이 후속 작업으로 분리되어 MVP 등록 흐름을 막지 않는다. ## 범위 제외 @@ -49,12 +49,18 @@ Edge 직접 연결 기반 `oto-agent` ## 작업 컨텍스트 -- Edge bootstrap 기반 `oto-agent` 작업 전에는 Edge bootstrap 계약을 먼저 확인한다. -- 선행 Edge bootstrap 계약은 완료 상태이며, OTO Linux MVP command/config/background 기준은 해당 문서를 기준으로 한다. +- 선행 Edge bootstrap 계약은 완료 상태로 아카이브되었으며, 일반 작업에서는 `ROADMAP.md`의 아카이브 요약과 아래 표준선을 기준으로 한다. +- 선행 계약의 상세 문서는 과거 기록 확인이나 복원이 명시된 경우에만 읽는다. - 표준선(선택): Linux MVP는 OTO가 없는 대상 머신에서 bootstrap script로 release asset을 다운로드한 뒤 `~/.oto/agent/config.yaml`을 생성하고 백그라운드로 실행한다. - 표준선(선택): online 판정은 Edge 등록 완료와 최초 heartbeat 도착을 모두 만족했을 때로 둔다. - 표준선(선택): bootstrap agent 식별 값 또는 token은 보안 완성보다 등록 대상 식별과 최초 연결 매칭을 위한 최소 계약으로 먼저 둔다. - 표준선(선택): 바이너리 무결성은 후속 강화 항목으로 두고, MVP에서는 release asset 다운로드 기준과 실패 처리만 먼저 정리한다. +- 구현 근거: `AgentConfig`는 `~/.oto/agent/config.yaml` 형태의 `agent.id`, `agent.alias`, `agent.enrollment_token`, `edge.url`, runtime 경로를 파싱한다. +- 구현 근거: `CommandAgent`는 `oto agent run --config `를 통해 설정 파일을 읽고 `AgentRunner`로 등록을 시작한다. +- 구현 근거: `EdgeRegistrationClient`는 `proto_socket`으로 Edge endpoint에 연결해 enrollment token을 `RegisterRequest`로 전송하고 `RegisterResponse`를 accepted/rejected 결과로 변환한다. +- 구현 근거: registration/config/CLI 검증은 `test/oto_agent_config_test.dart`, `test/oto_agent_registration_test.dart`, `test/oto_agent_cli_test.dart`, `test/oto_iop_connection_smoke_test.dart`에 있다. +- 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는 Edge outbound enrollment를 받아들이는 registry/protocol/credential 기준을 정리한다.