iop/agent-roadmap/phase/automation-runtime-bridge/milestones/oto-registration-unlock-handoff.md

84 lines
6.9 KiB
Markdown

# Milestone: OTO Registration Unlock Handoff
## 위치
- Roadmap: `agent-roadmap/ROADMAP.md`
- Phase: `agent-roadmap/phase/automation-runtime-bridge/PHASE.md`
## 목표
iop2oto의 OTO registry, bootstrap command, registration online smoke 결과를 OTO repo의 `oto-agent` 등록 흐름 잠금 해제 근거로 정리한다.
완료 시점에는 OTO가 `registration-state`를 마무리할 수 있도록 accepted, first heartbeat, online/failed/retry 기준과 실행 evidence가 한곳에 남아 있어야 한다.
## 상태
[진행중]
## 구현 잠금
- 상태: 해제
- 결정 필요: 없음
## 범위
- `OTO Agent Registry 구현`, `OTO Bootstrap Command 발급`, `OTO Registration Online Smoke` 완료 근거를 OTO 잠금 해제 관점에서 묶는다.
- OTO agent config와 bootstrap command가 기존 `iop-node` config/bootstrap 인터페이스를 대부분 이어받고, OTO 전용 차이만 명시되어 있는지 확인한다.
- registration accepted, 최초 heartbeat, online 전환, failure reason, retry 기준을 OTO `registration-state`에 넘길 수 있는 형태로 요약한다.
- workspace `.agent-roadmap-sync/locks.yaml`의 OTO lock target으로 사용할 수 있는 완료 evidence를 남긴다.
- OTO repo의 Dart agent 구현이나 bootstrap script 자체 구현은 OTO repo 책임으로 남긴다.
## 기능
### Epic: [unlock-gate] OTO Unlock Gate
OTO repo의 `oto-agent` 등록 흐름 잠금 해제에 필요한 iop2oto 쪽 완료 근거를 모은다.
- [ ] [upstream-complete] `OTO Agent Registry 구현`, `OTO Bootstrap Command 발급`, `OTO Registration Online Smoke`가 [검토중] 또는 [완료] 상태이며 각 완료 근거가 확인되어 있다.
- [x] [node-interface-parity] OTO agent config와 bootstrap command가 기존 `iop-node` config/bootstrap의 필드명, flag 의미, 출력 형식, 진단 흐름을 최대한 유지하고 OTO 전용 차이만 별도로 설명한다.
- [ ] [online-evidence] registration accepted와 최초 heartbeat 이후 online 전환이 같은 smoke evidence 안에서 확인된다. 검증: `OTO Registration Online Smoke`의 실행 명령과 PASS 로그 또는 문서 링크가 남는다.
- [ ] [failure-retry] unknown token, duplicate connection, heartbeat timeout, bootstrap/registration 실패 reason과 retry 기준이 OTO가 소비할 수 있는 형태로 요약되어 있다.
- [ ] [lock-sync-ready] OTO lock entry에서 `iop2oto:agent-roadmap/phase/automation-runtime-bridge/milestones/oto-registration-unlock-handoff.md``enable`로 동기화할 수 있는 완료 근거가 남는다.
## 완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: `node-interface-parity``agent-task/archive/2026/06/m-oto-registration-unlock-handoff/01_node_interface_parity/complete.log`에서 PASS 완료되었다.
- 완료 근거: unlock handoff evidence completion은 `agent-task/archive/2026/06/m-oto-registration-unlock-handoff/02+01_unlock_evidence_handoff/complete.log`에서 선행 gate 미충족 re-block으로 종결되었으며, bootstrap command와 online smoke evidence가 아직 남아 있다.
- 리뷰 필요:
- [ ] 사용자가 완료 결과를 확인했다
- [ ] archive 이동을 승인했다
- 리뷰 코멘트: 없음
## 범위 제외
- OTO Dart `oto-agent` 구현 변경
- OTO bootstrap script 자체 구현
- OTO build/deploy run payload 전체
- Control Plane fleet UI 반영
- 장기 credential rotation과 운영 인증서 관리
## 작업 컨텍스트
- 관련 경로: `apps/edge/internal/transport`, `apps/edge/internal/node`, `apps/edge/internal/events`, `scripts/e2e-*.sh`, `../oto/test/oto_iop_connection_smoke_test.dart`, `../oto/agent-roadmap/phase/edge-direct-oto-agent/milestones/oto-agent-registration.md`
- 표준선(선택): OTO agent는 `iop-node` bootstrap/config UX를 기본형으로 삼고, `agent_kind=oto-agent`, OTO bootstrap script URL, OTO release asset URL처럼 OTO 책임 경계에 필요한 차이만 추가한다.
- 표준선(선택): unlock evidence는 registration accepted와 최초 heartbeat online을 모두 포함해야 한다.
- 표준선(선택): failure/retry 기준은 OTO `registration-state` 문장으로 옮길 수 있는 수준의 reason 이름과 판정 기준을 포함한다.
- 선행 작업: OTO Agent Registry 구현, OTO Bootstrap Command 발급, OTO Registration Online Smoke
- 후속 작업: OTO repo `oto-agent` 등록 흐름 잠금 해제 검토, OTO Agent Message Boundary
- 확인 필요: OTO lock 동기화는 이 Milestone이 [검토중] 또는 [완료]가 된 뒤 update-roadmap 또는 런타임 완료 이벤트로 수행한다.
## 선행 상태 점검 (2026-06-03, REVIEW_ORU02 재검증)
ORU02 handoff plan의 upstream completion gate 평가 결과다. 상태는 각 선행 Milestone 문서(`## 상태`)를 source-of-truth로 직접 재확인했다.
- predecessor `01_node_interface_parity`: PASS. `agent-task/archive/2026/06/m-oto-registration-unlock-handoff/01_node_interface_parity/complete.log` 확인 결과 `node-interface-parity`가 PASS 완료되었고, `rg --sort path -n 'node-interface-parity|iop-node|agent_kind' ...``git diff --check` 검증이 통과했다.
- `OTO Agent Registry 구현`: [완료] — archive 문서 `agent-roadmap/archive/phase/automation-runtime-bridge/milestones/oto-agent-registry-implementation.md`로 이동되었고, 기능 Task(`agent-kind-model`, `compat-node`, `connected-entry`, `duplicate-policy`)와 registry task group의 3개 `complete.log`가 모두 PASS evidence를 갖는다.
- `OTO Bootstrap Command 발급`: [계획] — 구현/완료 evidence 없음.
- `OTO Registration Online Smoke`: [계획] — registration accepted/최초 heartbeat online PASS 로그 또는 smoke evidence 없음.
- **upstream-complete gate: 미충족.** `OTO Bootstrap Command 발급``OTO Registration Online Smoke`가 아직 [검토중] 또는 [완료]가 아니므로 online-evidence(accepted/heartbeat)와 failure-retry(unknown token, duplicate connection, heartbeat timeout, bootstrap/registration 실패 reason과 retry 기준) evidence를 OTO `registration-state`로 옮길 수 있는 형태로 수집할 수 없다. 따라서 `upstream-complete`, `online-evidence`, `failure-retry`, `lock-sync-ready`는 아직 `[x]` 처리하지 않는다. 이 gate는 사용자 결정이 아니라 선행 Milestone 구현이 완료되어야 닫히는 repo-owned evidence gap이다.
### lock sync readiness
- lock checker(`../oto/agent-ops/bin/roadmap-dependency-checker.sh --find-milestone ... rely-on ...`) 출력: `rely-on:oto:oto-agent-registration`. 이 handoff Milestone은 OTO lock `oto:oto-agent-registration``rely-on.target`이다.
- `/config/workspace/.agent-roadmap-sync/locks.yaml`에서 이 target의 `status``disable`이다. enable 동기화 조건: 이 Milestone이 [검토중] 또는 [완료]가 되어 upstream evidence가 한곳에 정리되어야 하며, 동기화 실행은 evidence 없이 직접 수정하지 않고 update-roadmap 또는 런타임 완료 이벤트로만 수행한다. 현재는 upstream-complete 미충족으로 `disable` 유지.