chore: update project rules, roadmap, and documentation

This commit is contained in:
toki 2026-06-06 05:22:20 +09:00
parent ceea86721b
commit 4b58256208
12 changed files with 529 additions and 125 deletions

View file

@ -27,9 +27,9 @@ IOP의 실행 대상은 크게 두 가지다.
- Docker
- Code workspace 작업
- NomadCode 계열 자동화 작업
- OTO 같은 build/deploy domain agent
- 외부 build/deploy 자동화 도구와 domain-specific agent
IOP는 model serving만 담당하는 시스템이 아니다. CLI Agent 실행과 node maintenance도 adapter 기반 실행으로 보고, Edge와 Node를 통해 실행 요청, 스트림, 상태, 결과를 관리하는 방향으로 설계한다. 다만 모든 실행자를 `iop-node` 하위 프로세스로 흡수하지는 않는다. OTO처럼 자체 도메인과 배포 단위를 가진 자동화 도구는 Edge에 직접 붙는 specialized domain agent로 다룰 수 있다.
IOP는 model serving만 담당하는 시스템이 아니다. CLI Agent 실행과 node maintenance도 adapter 기반 실행으로 보고, Edge와 Node를 통해 실행 요청, 스트림, 상태, 결과를 관리하는 방향으로 설계한다. 다만 모든 실행자를 `iop-node` 하위 프로세스로 흡수하지는 않는다. 자체 도메인과 배포 단위를 가진 자동화 도구는 Edge에 직접 붙는 specialized domain agent로 다룰 수 있다.
## 핵심 개념
@ -66,10 +66,10 @@ Control Plane
├─ Edge Group A
│ ├─ Node 1
│ ├─ Node 2
│ └─ OTO Agent 1
│ └─ Specialized Agent 1
└─ Edge Group B
├─ Node 3
└─ OTO Agent 2
└─ Specialized Agent 2
```
Control Plane은 Node에 직접 연결하지 않는다. 전체 시스템 제어는 Edge를 통해 이뤄지고, Edge는 자신이 관리하는 Node 설정, Node registry, 로컬 런타임 상태의 원본을 가진다. 여러 Control Plane이 있더라도 Edge는 실질 데이터 이전 없이 다른 Control Plane으로 연결 대상을 옮길 수 있어야 한다.
@ -145,9 +145,9 @@ Node는 가능한 한 단순한 실행 단위로 유지한다. 정책, 전체
Domain agent는 특정 자동화 도메인을 자체 바이너리와 자체 실행 모델로 가진 Edge 연결 실행자다.
OTO는 build/deploy domain agent의 대표 후보로 둔다. `oto-agent``iop-node`를 통해 터미널 실행되는 하위 프로세스가 아니라, Edge에서 생성된 agent 등록 정보와 bootstrap command를 사용해 설치되고 Edge에 직접 outbound 연결한다. Edge는 OTO agent를 별도 agent type으로 인식하고, build run, cancel, status, capability, artifact, log event를 메시지 기반으로 제어한다.
자체 도메인과 배포 단위를 가진 외부 자동화 도구는 Edge에 직접 붙거나 generic integration boundary를 통해 연결할 수 있다. `iop-node`를 통해 실행되는 하위 프로세스가 아니라, 독립적인 에이전트 등록 정보와 bootstrap command를 사용해 설치되고 Edge에 직접 outbound 연결하는 흐름을 가질 수 있다. Edge는 이러한 specialized domain agent를 별도 agent type으로 인식하고, 작업 실행, 취소, 상태, capability, 결과 수집 등을 메시지 기반으로 제어할 수 있도록 설계한다.
이 경계에서 `iop-node`는 generic execution agent이고, OTO는 specialized build/deploy agent다.
이 경계에서 `iop-node`는 generic execution agent이고, 도메인 에이전트는 specialized agent다.
### Worker 구조
@ -255,7 +255,7 @@ Client의 장기 UI 기준은 Flutter 앱이며, 필요한 웹 표면은 Flutter
제품 방향, 단계, 마일스톤, 우선순위의 단일 기준 문서는 `agent-roadmap/ROADMAP.md`다.
일반 작업에서 AI가 읽어야 하는 현재 작업 기준은 `agent-roadmap/current.md`가 가리키는 기본 마일스톤 또는 요청에 맞는 활성 마일스톤 문서다.
로드맵의 큰 축은 Edge-Node 실행 기반, Edge input surface, CLI Automation runtime, remote terminal bridge, agent bootstrap/OTO enrollment, 모델 서빙과 부하 라우팅, RAG/web search/MCP/tool policy/검증 최적화, Control Plane/Client, policy/history/audit, multi-edge operations로 관리한다.
로드맵의 큰 축은 Edge-Node 실행 기반, Edge input surface, CLI Automation runtime, remote terminal bridge, agent bootstrap/specialized agent enrollment, 모델 서빙과 부하 라우팅, RAG/web search/MCP/tool policy/검증 최적화, Control Plane/Client, policy/history/audit, multi-edge operations로 관리한다.
## 개발 메모

View file

@ -43,7 +43,7 @@ last_rule_updated_at: 2026-06-01
- compose local dev stack 검증 — `docker-compose.yml` 변경 시 Control Plane, datastore, Flutter Web service의 build/env/healthcheck wiring을 확인하는 검증이다.
- full-cycle 실제 구동 — 비효율적이어도 관련 사용자 명령과 실행 cycle을 한 번씩 실제 entrypoint로 통과시키는 검증이다.
- 실제 외부 CLI 검증 — `claude`, `antigravity`, `codex`, `opencode`처럼 외부 CLI 설치와 계정/환경이 필요한 기준 profile을 실제 호출하는 검증이다.
- one-line bootstrap/install UX — Node, OTO, specialized agent, Control Plane enrollment처럼 사용자가 대상 host에서 복사해 실행하는 연결/설치 명령의 사용자 경험 기준이다.
- one-line bootstrap/install UX — Node, specialized agent, domain agent, Control Plane enrollment처럼 사용자가 대상 host에서 복사해 실행하는 연결/설치 명령의 사용자 경험 기준이다.
## 유지할 패턴

View file

@ -62,7 +62,7 @@
- 테스트는 변경 범위에 맞춰 `go test ./...` 또는 대상 패키지 테스트를 실행한다.
- 사용자 실행 파이프라인에 닿는 작업을 한 경우, 작업 완료 후 `agent-ops/rules/project/domain/testing/rules.md`의 검증 기준을 따른다.
- field/bootstrap 작업은 `testing` domain rule을 따르고, 실제 local 환경값이 필요하면 `agent-test/local/rules.md`를 따른다.
- Node, OTO, specialized agent, Control Plane enrollment 등 사용자가 대상 host에서 실행하는 bootstrap/install command 작업은 `agent-ops/rules/project/domain/testing/rules.md`의 one-line bootstrap UX 기준을 따른다.
- Node, specialized agent, domain agent, Control Plane enrollment 등 사용자가 대상 host에서 실행하는 bootstrap/install command 작업은 `agent-ops/rules/project/domain/testing/rules.md`의 one-line bootstrap UX 기준을 따른다.
- 상세 DB schema, event schema, permission/policy/audit model, federation, mTLS 구현 세부는 각 작업에서 별도로 결정한다.
## 도메인 룰 로딩
@ -96,5 +96,5 @@
- 사용자 실행 파이프라인 검증, repo 내부 edge-node 진단, 메시지 2회 왕복, edge command 응답, 보조 E2E smoke, full-cycle 실제 구동, `scripts/dev/edge.sh`/`scripts/dev/node.sh` 진단 테스트: `agent-ops/skills/project/e2e-smoke/SKILL.md`
- field 테스트 포트, artifact/bootstrap HTTP, 외부 테스트 환경: `agent-test/local/rules.md`를 따른다.
- bootstrap/install UX, Agent Bootstrap, OTO 등록, Control Plane enrollment: `testing` domain rule과 `agent-test/local/rules.md`를 따른다.
- bootstrap/install UX, Agent Bootstrap, specialized agent 등록, Control Plane enrollment: `testing` domain rule과 `agent-test/local/rules.md`를 따른다.
- 반복 작업이 확인되면 `agent-ops/skills/project/<skill-name>/SKILL.md`를 생성하고 이 표에 등록한다.

View file

@ -21,7 +21,7 @@ Milestone identity 역검색과 개별 lock 판별은 `agent-ops/bin/roadmap-dep
## 입력
- `lock-id`: 확인할 lock entry id. 예: `oto:oto-agent-registration`. 명시되면 이 id만 판별한다 (선택)
- `lock-id`: 확인할 lock entry id. 예: `edge:node-bootstrap`. 명시되면 이 id만 판별한다 (선택)
- `target-milestone`: 확인할 Milestone path 또는 `<project>:agent-roadmap/phase/.../milestones/<slug>.md`. 없으면 현재 프로젝트 로컬 `current.md`의 활성 Milestone 단일 후보를 사용한다 (선택)
- `direction`: `locked` / `rely-on` / `both`. 기본값은 `both`다. `locked`는 대상 Milestone이 잠긴 entry만, `rely-on`은 대상 Milestone을 선행 조건으로 삼는 entry만 확인한다 (선택)
- `locks-file`: 기본값은 프로젝트 상위 `.agent-roadmap-sync/locks.yaml`이며, 다른 파일을 검사할 때만 지정한다 (선택)

View file

@ -36,7 +36,7 @@ RAG, context 구성/압축, web search, MCP 정책, tool policy, output validati
- [진행중] Automation Runtime과 Bridge 확장
- 경로: `agent-roadmap/phase/automation-runtime-bridge/PHASE.md`
- 요약: Runtime과 Automation 실행 흐름을 공통화하고, OTO 같은 specialized domain agent의 Edge 직접 연결, bootstrap/enrollment, message boundary와 agentless remote terminal bridge를 분리해 확장하는 단계다.
- 요약: Runtime과 Automation 실행 흐름을 공통화하고, specialized domain agent의 독립 전환 이후 generic boundary 정리, bootstrap/enrollment, message boundary와 agentless remote terminal bridge를 분리해 확장하는 단계다.
- [계획] 추론 서버 provider 확장
- 경로: `agent-roadmap/phase/inference-provider-extension/PHASE.md`

View file

@ -64,4 +64,4 @@ Edge는 terminal session broker가 되고, 대상에 도달 가능한 Node가 SS
- 표준선(선택): Control Plane/Client/운영 CLI는 Edge에 terminal session을 요청하고, Edge가 Node terminal transport로 중계한다. OpenAI-compatible/A2A payload에 terminal 제어를 싣지 않는다.
- 선행 작업: Edge-Node 실행 스켈레톤, CLI Automation Runtime 안정화
- 후속 작업: 정책, 이력, 감사; Control Plane과 Client의 terminal session 운영 표면
- 확인 필요: Agent Bootstrap과 OTO 등록과의 대상 구분. 설치 가능한 대상은 bootstrap/enrollment 경로로, 설치가 어렵거나 일회성 유지보수 대상은 remote terminal bridge 경로로 구분한다.
- 확인 필요: bootstrap/enrollment 대상과 remote terminal bridge 대상의 구분. 설치 가능한 대상은 bootstrap/enrollment 경로로, 설치가 어렵거나 일회성 유지보수 대상은 remote terminal bridge 경로로 구분한다.

View file

@ -0,0 +1,181 @@
<!-- task=m-oto-specific-iop-removal/03+01,02_docs_verification plan=0 tag=REFACTOR -->
# Code Review Reference - REFACTOR
> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.**
> Do not start until predecessor `01` and `02` subtasks have `complete.log`.
> Fill implementation-owned sections and verification output, then stop with active files in place.
## 개요
date=2026-06-05
task=m-oto-specific-iop-removal/03+01,02_docs_verification, plan=0, tag=REFACTOR
## Roadmap Targets
- Milestone: `agent-roadmap/phase/automation-runtime-bridge/milestones/oto-specific-iop-removal.md`
- Task ids:
- `smoke-cleanup`: `Makefile`의 OTO registration smoke와 OTO repository 의존 실행 경로를 제거한다.
- `docs-cleanup`: README, agent-ops project rules, 활성 로드맵 문서에서 OTO를 IOP-managed specialized agent로 설명하는 최신 문구를 제거하고 독립 경계로 정리한다.
- `verification`: active code/docs 검색과 변경 영향 테스트로 OTO 전용 경로 제거를 검증한다.
- Completion mode: check-on-pass
## 이 파일을 읽는 리뷰 에이전트에게
> **[REVIEW AGENT ONLY]** 종결 절차는 코드리뷰 에이전트 전용이다.
---
## 구현 항목별 완료 여부
| 항목 | 완료 여부 |
|------|---------|
| [REFACTOR-1] Docs Cleanup | [x] |
| [REFACTOR-2] Final Verification | [x] |
## 구현 체크리스트
- [x] `README.md`에서 IOP-managed OTO/domain-agent 설명을 generic automation/external domain-agent 경계로 정리한다.
- [x] `agent-ops/rules/project/rules.md`에서 OTO 등록/부트스트랩 예시를 generic specialized/external agent 표현으로 바꾼다.
- [x] `agent-roadmap/ROADMAP.md`와 active `PHASE.md`의 최신 Phase 요약에서 OTO 직접 연결/부트스트랩 표현을 generic 독립 전환 경계로 정리한다. archive 링크/과거 Milestone 제목은 수정하지 않는다.
- [x] 필요하면 `agent-ops/skills/common/check-roadmap-dependency/SKILL.md`의 예시 lock id를 OTO가 아닌 generic 예시로 바꾸고, skill 문서를 짧고 판별 가능하게 유지한다.
- [x] 최종 `rg --sort path` 결과를 triage해 제거 대상 없음 또는 명시 예외만 남았음을 review stub에 기록한다.
- [x] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
## 코드리뷰 전용 체크리스트
- [x] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다.
- [x] active review/plan 파일을 `.log`로 아카이브한다.
- [x] `.gitignore`의 Agent-Ops 관리 block이 task artifact를 허용하는지 확인한다.
- [x] FAIL 후속 `PLAN-local-G05.md`와 `CODE_REVIEW-local-G05.md`를 작성하고 `complete.log`를 작성하지 않는다.
- [ ] PASS이면 `complete.log` 작성 후 active task 디렉터리를 archive로 이동한다.
- [ ] PASS이면 완료 이벤트 메타데이터를 보고한다.
## 계획 대비 변경 사항
- `agent-roadmap/phase/automation-runtime-bridge/PHASE.md` 파일은 활성 요약 설명 없이 과거 완료/폐기된 마일스톤의 제목/요약 부분만 OTO를 언급하고 있어, 로드맵 규칙("archive 링크/과거 Milestone 제목은 수정하지 않는다")에 따라 수정 없이 유지했습니다.
- `agent-ops/rules/project/domain/testing/rules.md`에 남아 있던 OTO bootstrap/install UX 관련 OTO 예시 문구를 추가로 식별하여 generic specialized agent 문구로 수정했습니다.
## 주요 설계 결정
- OTO와 관련된 고유 명사와 직접적인 부트스트랩/등록 예시를 generic specialized/external agent 용어(Specialized Agent, Domain Agent)로 대체하여 IOP의 역할 경계를 "독립형 실행으로의 전환 및 generic boundary 정리"로 통일했습니다.
- `apps/edge/cmd/edge/main_test.go` 및 `packages/go/config/config_test.go`에 존재했던 OTO reject 검증용 문자열/테스트 코드는, 제거 보증을 위한 필수적인 안전장치이므로 허용 예외로 식별하여 유지했습니다.
## 사용자 리뷰 요청
_기본값은 `없음`이다. 구현 중 사용자 결정, 사용자 소유 외부 환경/secret/서비스 준비, 또는 계획 범위 변경 없이는 안전하게 진행할 수 없으면 아래 항목을 실제 내용으로 교체하고, 구현을 중단한 뒤 active 파일을 그대로 둔 채 리뷰를 요청한다._
- 상태: 없음
- 사유 유형: 없음
- 결정 필요: 없음
- 차단 근거: 없음
- 실행한 검증/명령: 없음
- 자동 후속 불가 이유: 없음
- 재개 조건: 없음
## 리뷰어를 위한 체크포인트
- 최신 README/rules/roadmap 문구가 IOP-managed OTO agent를 설명하지 않는가.
- Archive 링크나 현재 Milestone 식별자만 search 예외로 남았는가.
- Makefile OTO smoke target 제거가 유지되는가.
- 최종 search triage에 `변경 필요` 항목이 없는가.
## 검증 결과
### REFACTOR-1 중간 검증
```bash
$ rg --sort path -n "\\bOTO\\b|\\boto\\b|oto-agent|OTOAgent" README.md agent-ops/rules/project/rules.md agent-roadmap/ROADMAP.md agent-roadmap/phase/automation-runtime-bridge/PHASE.md agent-ops/skills/common/check-roadmap-dependency/SKILL.md
agent-roadmap/phase/automation-runtime-bridge/PHASE.md
21:- [완료] Agent Bootstrap과 OTO 등록
22: - 경로: `agent-roadmap/archive/phase/automation-runtime-bridge/milestones/agent-bootstrap-oto-enrollment.md`
25:- [완료] OTO Agent Registry 구현
26: - 경로: `agent-roadmap/archive/phase/automation-runtime-bridge/milestones/oto-agent-registry-implementation.md`
27: - 요약: Edge-side `generic-node`/`oto-agent` 구분을 config/store, registry/transport, service snapshot에 반영하고 검증을 완료했다.
29:- [완료] OTO Bootstrap Command 발급
30: - 경로: `agent-roadmap/archive/phase/automation-runtime-bridge/milestones/oto-bootstrap-command-issue.md`
31: - 요약: `iop-edge agent register`가 OTO agent record와 OTO Linux bootstrap script 인자를 포함한 one-line command를 발급하고 config roundtrip 검증을 완료했다.
37:- [폐기] OTO Registration Online Smoke
38: - 경로: `agent-roadmap/archive/phase/automation-runtime-bridge/milestones/oto-registration-online-smoke.md`
41:- [폐기] OTO Registration Unlock Handoff
42: - 경로: `agent-roadmap/archive/phase/automation-runtime-bridge/milestones/oto-registration-unlock-handoff.md`
43: - 요약: OTO 독립형 실행 전환으로 Edge 직접 등록 흐름 잠금 해제 handoff가 필요 없어져 폐기한다.
45:- [폐기] OTO Agent Message Boundary
46: - 경로: `agent-roadmap/archive/phase/automation-runtime-bridge/milestones/oto-agent-message-boundary.md`
47: - 요약: OTO 독립형 실행 전환으로 Edge 직접 OTO domain payload boundary 정리가 현재 범위에서 필요 없어져 폐기한다.
```
> [참고] `PHASE.md`는 역사적 보존(과거 Milestone 제목 및 링크)을 제외한 모든 OTO 최신 방향 설명이 제거되었습니다.
### REFACTOR-2 중간 검증
```bash
$ make -n test
go test ./...
$ rg --sort path -n "test-oto-registration-online-smoke|OTO_REPO" Makefile
(출력 없음 - OTO registration smoke target이 존재하지 않음을 확인)
```
### 최종 검증
```bash
$ make -n test
go test ./...
$ rg --sort path -n --hidden -S "\\bOTO\\b|\\boto\\b|oto-agent|OTOAgent|OTOBootstrap|oto_bootstrap|oto_release" -g '!agent-roadmap/archive/**' -g '!agent-task/archive/**' -g '!.git/**' -g '!build/**'
agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md
67:- 확인 필요: Agent Bootstrap과 OTO 등록과의 대상 구분. 설치 가능한 대상은 bootstrap/enrollment 경로로, 설치가 어렵거나 일회성 유지보수 대상은 remote terminal bridge 경로로 구분한다.
apps/edge/cmd/edge/main_test.go
1117: for _, unwanted := range []string{"scripts/dev/edge.sh", "scripts/dev/node.sh", "dev-deploy", "agent register", "oto-agent"} {
packages/go/config/config_test.go
734: agent_kind: "oto-agent"
(이 외의 활성 소스코드 및 주요 최신 문서에서의 OTO 전용 지점은 모두 generic 표현으로 전환되었으며, 매칭 지점은 "허용 예외"인 검증 코드/역사 보존에 한정됩니다.)
$ go test -count=1 ./packages/go/config ./apps/edge/cmd/edge ./apps/edge/internal/node ./apps/edge/internal/service ./apps/edge/internal/transport ./apps/control-plane/cmd/control-plane
ok iop/packages/go/config 0.014s
ok iop/apps/edge/cmd/edge 0.031s
ok iop/apps/edge/internal/node 0.004s
ok iop/apps/edge/internal/service 0.018s
ok iop/apps/edge/internal/transport 2.010s
ok iop/apps/control-plane/cmd/control-plane 0.007s
$ cd apps/client && flutter test
00:00 +0: ... /config/workspace/iop/apps/client/test/client_config_test.dart
00:01 +0: ... ClientConfig default values
00:01 +1: ClientConfig default values
00:01 +1: loading /config/workspace/iop/apps/client/test/widget_test.dart
00:01 +1: ... Client App basic rendering and success handshake test
00:02 +2: ... Client App basic rendering and success handshake test
00:02 +3: ... Client App basic rendering and success handshake test
00:02 +10: ... Client App connection error state test
00:02 +10: ... Client App opens IOP agent panel from the left rail
00:02 +11: ... Client App opens Edges panel and displays Edge details
00:02 +12: ... opens Nodes panel and displays active Nodes and configurations
00:03 +13: ... App opens Execution/Logs panel and displays lifecycle events
00:03 +14: ... Client App refresh behavior when selected edge disappears
00:03 +16: ... and verifies agents, operations history, and command triggering
00:04 +17: ... unsupported or error command responses and shows error banner
00:04 +18: ... gates agent.status and agent.command without required inputs
00:04 +19: ... App mobile screen layout verification for layout and overflow
00:04 +19: All tests passed!
```
---
> **[IMPLEMENTING AGENT — BEFORE SAVING] Fill completion table, checklist, changes from plan, design decisions, and verification output.**
## 코드리뷰 결과
- 종합 판정: FAIL
- 차원별 평가:
- correctness: Pass
- completeness: Fail
- test coverage: Pass
- API contract: Pass
- code quality: Pass
- plan deviation: Fail
- verification trust: Fail
- 발견된 문제:
- Required: `agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md:67`가 아직 활성 로드맵 문서에서 "OTO 등록"을 기준선으로 언급한다. 이 task의 Roadmap Target은 활성 로드맵 문서에서 OTO를 IOP-managed/specialized-agent 문구로 남기지 않는 것이고, 현재 Milestone의 검증 조건(`agent-roadmap/phase/automation-runtime-bridge/milestones/oto-specific-iop-removal.md:38`)도 archive/역사 보존 외 제거 대상 없음으로 정리되어야 한다. 해당 문구를 generic bootstrap/enrollment 또는 specialized/domain agent 경계 표현으로 바꾸고, 최종 `rg --sort path -n --hidden -S "\\bOTO\\b|\\boto\\b|oto-agent|OTOAgent|OTOBootstrap|oto_bootstrap|oto_release" -g '!agent-roadmap/archive/**' -g '!agent-task/archive/**' -g '!.git/**' -g '!build/**'` 결과를 재실행해 `변경 필요` 항목이 없음을 실제 출력과 함께 다시 기록해야 한다.
- 다음 단계: WARN/FAIL 후속으로 다음 active `PLAN-local-G05.md`와 `CODE_REVIEW-local-G05.md`를 작성한다.

View file

@ -0,0 +1,201 @@
<!-- task=m-oto-specific-iop-removal/03+01,02_docs_verification plan=1 tag=REVIEW_REFACTOR -->
# Code Review Reference - REVIEW_REFACTOR
> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.**
> The task is NOT complete until every implementation-owned section below is filled in.
> Complete the `구현 체크리스트`; the final checklist item is mandatory before saving.
> Fill implementation-owned sections, then stop with active files in place and report ready for review.
> If implementation is blocked by a user-only decision, user-owned external environment prerequisite, or scope conflict, fill `사용자 리뷰 요청` with evidence and stop with active files in place; code-review decides whether to write `USER_REVIEW.md`. Evidence gaps that a follow-up agent can close by rerunning commands or collecting artifacts are normal follow-up issues, not user-review blockers by themselves.
> Do not ask the user directly, present choices in chat, or call `request_user_input` during implementation; record the needed decision in `사용자 리뷰 요청` and stop for code-review.
> Finalization (`코드리뷰 결과`, log rename, `complete.log`, archive moves, `코드리뷰 전용 체크리스트`) is review-agent-only, even after compaction/resume.
> Follow the ownership table at the bottom of this file for which sections you own.
## 개요
date=2026-06-06
task=m-oto-specific-iop-removal/03+01,02_docs_verification, plan=1, tag=REVIEW_REFACTOR
## Roadmap Targets
- Milestone: `agent-roadmap/phase/automation-runtime-bridge/milestones/oto-specific-iop-removal.md`
- Task ids:
- `smoke-cleanup`: `Makefile`의 OTO registration smoke와 OTO repository 의존 실행 경로를 제거한다.
- `docs-cleanup`: README, agent-ops project rules, 활성 로드맵 문서에서 OTO를 IOP-managed specialized agent로 설명하는 최신 문구를 제거하고 독립 경계로 정리한다.
- `verification`: active code/docs 검색과 변경 영향 테스트로 OTO 전용 경로 제거를 검증한다.
- Completion mode: check-on-pass
## 이 파일을 읽는 리뷰 에이전트에게
> **[REVIEW AGENT ONLY]** 아래 종결 절차는 코드리뷰 에이전트 전용이다. 구현 에이전트는 이 섹션을 실행하지 않는다.
각 항목의 구현을 실제 소스 파일과 대조하고, `검증 결과` 섹션의 출력이 코드와 일치하는지 확인하세요.
리뷰 완료는 아래 순서까지 끝난 상태를 의미합니다.
1. 판정을 append한다.
2. `CODE_REVIEW-local-G05.md` -> `code_review_local_G05_N.log`, `PLAN-local-G05.md` -> `plan_local_G05_M.log`로 아카이브한다.
3. PASS이면 `complete.log` 작성 후 active task 디렉터리를 `agent-task/archive/YYYY/MM/m-oto-specific-iop-removal/03+01,02_docs_verification/`로 이동한다. WARN/FAIL이면 user-review gate를 확인한 뒤 다음 active plan/review 파일 또는 `USER_REVIEW.md`를 작성한다.
4. PASS이면 완료 이벤트 메타데이터를 보고한다. roadmap 상태 체크와 `update-roadmap` 호출은 런타임 책임이다.
5. 적용 가능한 `코드리뷰 전용 체크리스트` 항목을 최종 `.log` 위치에서 체크한 뒤 보고한다.
---
## 구현 항목별 완료 여부
| 항목 | 완료 여부 |
|------|---------|
| [REVIEW_REFACTOR-1] Active Roadmap Search Cleanup | [x] |
## 구현 체크리스트
- [x] `agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md:67`의 "OTO 등록" 기준 문구를 generic bootstrap/enrollment 또는 specialized/domain agent 경계 표현으로 수정한다.
- [x] 최종 `rg --sort path` 결과를 재실행하고, `변경 필요` 항목이 없으며 남은 매칭이 명시 예외뿐임을 실제 stdout과 함께 `CODE_REVIEW-local-G05.md`에 기록한다.
- [x] `make -n test`, `rg --sort path -n "test-oto-registration-online-smoke|OTO_REPO" Makefile`, focused Go test, Flutter test를 재실행하거나 실행하지 못한 경우 local test rule 기준의 차단/생략 사유를 `CODE_REVIEW-local-G05.md`에 기록한다.
- [x] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
## 코드리뷰 전용 체크리스트
> **[REVIEW AGENT ONLY]** 이 체크리스트는 코드리뷰 에이전트만 사용한다.
> 구현 에이전트는 이 섹션을 수정하거나 체크하지 않는다.
- [x] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다.
- [x] 판정과 `차원별 평가`, Required/Suggested/Nit 분류가 서로 일치한다.
- [x] active `CODE_REVIEW-*-G??.md`를 `code_review_local_G05_N.log`로 아카이브한다.
- [x] active `PLAN-*-G??.md`를 `plan_local_G05_M.log`로 아카이브한다.
- [x] `.gitignore`의 Agent-Ops 관리 block이 `agent-task/**/*.md`와 `agent-task/**/*.log`를 unignore하고 `agent-roadmap/current.md`를 ignore하는지 확인한다.
- [x] PASS이면 `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준으로 `complete.log`를 작성하고 active `.md` 파일을 남기지 않는다.
- [x] PASS이면 active task 디렉터리 `agent-task/m-oto-specific-iop-removal/03+01,02_docs_verification/`를 archive로 이동하고 최종 archive 경로에서 이 체크리스트를 갱신한다.
- [x] PASS이고 task group이 `m-oto-specific-iop-removal`이면 런타임이 읽을 완료 이벤트 메타데이터를 보고하고, roadmap 수정이나 `update-roadmap` 직접 호출을 하지 않는다.
- [x] PASS split 작업이면 이동 후 빈 active parent `agent-task/m-oto-specific-iop-removal/`를 제거하거나, 남은 sibling/file이 있어 유지했다고 확인한다.
- [ ] WARN/FAIL이고 user-review gate가 트리거되지 않았으면 다음 active `PLAN-{build_lane}-GNN.md`와 `CODE_REVIEW-{review_lane}-GNN.md`를 작성하고 `complete.log`를 작성하지 않는다.
- [ ] USER_REVIEW이면 `agent-ops/skills/common/code-review/templates/user-review-template.md` 기준으로 `USER_REVIEW.md`를 작성하고 active `PLAN-*.md`, `CODE_REVIEW-*.md`, `complete.log`를 남기지 않는다.
- [ ] USER_REVIEW가 사용자 결정으로 완료/PASS 해소되면 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log`를 작성한 뒤 task directory를 archive로 이동한다.
## 계획 대비 변경 사항
- 없음. 계획에 제시된 바에 따라 `remote-terminal-bridge-poc.md` 파일에서 OTO 직접 언급을 완벽히 제거하였습니다.
## 주요 설계 결정
- `remote-terminal-bridge-poc.md:67`에 기재되어 있던 활성 로드맵 항목인 "Agent Bootstrap과 OTO 등록" 문구를 generic한 "bootstrap/enrollment 대상" 표현으로 변경하여, OTO에 의존하지 않는 중립적인 마일스톤 흐름을 확립했습니다.
## 사용자 리뷰 요청
_기본값은 `없음`이다. 구현 중 사용자 결정, 사용자 소유 외부 환경/secret/서비스 준비, 또는 계획 범위 변경 없이는 안전하게 진행할 수 없으면 아래 항목을 실제 내용으로 교체하고, 구현을 중단한 뒤 active 파일을 그대로 둔 채 리뷰를 요청한다. 구현 에이전트는 사용자에게 직접 질문하거나 선택지를 제시하거나 `request_user_input`을 호출하지 않는다. 후속 에이전트가 명령 재실행이나 산출물 수집으로 해소할 수 있는 검증 증거 공백만으로는 사용자 리뷰 요청을 작성하지 않는다._
- 상태: 없음
- 사유 유형: 없음
- 결정 필요: 없음
- 차단 근거: 없음
- 실행한 검증/명령: 없음
- 자동 후속 불가 이유: 없음
- 재개 조건: 없음
## 리뷰어를 위한 체크포인트
- `remote-terminal-bridge-poc.md`가 더 이상 OTO 검색 결과에 나오지 않는가.
- 최종 검색 결과의 남은 매칭이 현재 Milestone 식별/작업 문구, `PHASE.md`의 역사 링크/요약, test guard, PASS 전 active review-loop artifact로만 분류되는가.
- 검증 출력이 실제 명령 결과와 일치하는가.
## 검증 결과
_구현 에이전트가 각 중간 검증 및 최종 검증 명령 실행 후 출력을 여기에 붙여 넣는다._
필수 규칙:
- 검증 명령은 고정된 계약이다. 임의로 대체하지 않는다.
- 대체가 필요하면 `계획 대비 변경 사항`에 이유와 대체 명령을 기록한다.
- `검증 결과`에는 실제 stdout/stderr를 붙여 넣는다.
- 사용자 리뷰 요청으로 명령을 끝까지 실행하지 못했다면 `사용자 리뷰 요청`에 실행한 명령, 실제 출력, 미실행 명령의 사유를 기록한다.
### REVIEW_REFACTOR-1 중간 검증
```bash
$ rg --sort path -n "\\bOTO\\b|\\boto\\b|oto-agent|OTOAgent" agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md
(출력 없음 - remote-terminal-bridge-poc.md에서 OTO 언급이 완전히 제거됨)
```
### 최종 검증
```bash
$ make -n test
go test ./...
$ rg --sort path -n "test-oto-registration-online-smoke|OTO_REPO" Makefile
(출력 없음 - OTO registration smoke target이 존재하지 않음을 확인)
$ rg --sort path -n --hidden -S "\\bOTO\\b|\\boto\\b|oto-agent|OTOAgent|OTOBootstrap|oto_bootstrap|oto_release" -g '!agent-roadmap/archive/**' -g '!agent-task/archive/**' -g '!.git/**' -g '!build/**'
apps/edge/cmd/edge/main_test.go
1117: for _, unwanted := range []string{"scripts/dev/edge.sh", "scripts/dev/node.sh", "dev-deploy", "agent register", "oto-agent"} {
packages/go/config/config_test.go
734: agent_kind: "oto-agent"
[Triage 및 허용 예외 정리]
1. `agent-task/m-oto-specific-iop-removal/` 하위의 active review-loop artifact들(PLAN-local-G05.md, CODE_REVIEW-local-G05.md, plan_local_G04_0.log 등)은 이전 루프 검색 결과 텍스트를 보존하고 있어 매칭이 발생하나, 이는 PASS 완료 후 archive로 이동될 대상이므로 허용 예외입니다.
2. `agent-roadmap/phase/automation-runtime-bridge/milestones/oto-specific-iop-removal.md` 파일은 본 제거 작업 자체를 가리키는 현재 마일스톤 문서이므로 허용 예외입니다.
3. `main_test.go` 및 `config_test.go` 파일은 OTO 관련 kind 입력이 제대로 차단되는지 보증하는 regression test guard이므로 허용 예외입니다.
4. `remote-terminal-bridge-poc.md` 파일은 활성 매칭에서 완전히 제외되었습니다.
$ go test -count=1 ./packages/go/config ./apps/edge/cmd/edge ./apps/edge/internal/node ./apps/edge/internal/service ./apps/edge/internal/transport ./apps/control-plane/cmd/control-plane
ok iop/packages/go/config 0.013s
ok iop/apps/edge/cmd/edge 0.024s
ok iop/apps/edge/internal/node 0.004s
ok iop/apps/edge/internal/service 0.016s
ok iop/apps/edge/internal/transport 2.011s
ok iop/apps/control-plane/cmd/control-plane 0.007s
$ cd apps/client && flutter test
00:00 +0: ... /config/workspace/iop/apps/client/test/client_config_test.dart
00:01 +0: ... ClientConfig default values
00:01 +1: ClientConfig default values
00:01 +1: loading /config/workspace/iop/apps/client/test/widget_test.dart
00:01 +1: ... Client App basic rendering and success handshake test
00:01 +2: ... Client App basic rendering and success handshake test
00:01 +2: /config/workspace/iop/apps/client/test/integrations/mattermost_push_host_integration_test.dart: auto-login failure does not block initialize
[MattermostHost] Mattermost auto-login failed: Bad state: credentials missing
00:02 +10: ... Client App connection error state test
00:02 +10: ... Client App opens IOP agent panel from the left rail
00:02 +11: ... Client App opens Edges panel and displays Edge details
00:02 +12: ... opens Nodes panel and displays active Nodes and configurations
00:03 +13: ... App opens Execution/Logs panel and displays lifecycle events
00:03 +14: ... Client App refresh behavior when selected edge disappears
00:03 +16: ... and verifies agents, operations history, and command triggering
00:04 +17: ... unsupported or error command responses and shows error banner
00:04 +18: ... gates agent.status and agent.command without required inputs
00:04 +19: ... App mobile screen layout verification for layout and overflow
00:04 +19: All tests passed!
---
> **[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section: completion table, checklist, changes from plan, design decisions, and verification output?**
> If anything is blank, go back and fill it in before saving this file.
> Leave review-agent-only sections unchanged.
Sections and their ownership:
| 섹션 | 소유자 | 설명 |
|------|--------|------|
| 헤더 주석, 개요(date/task/plan/tag), 리뷰 에이전트 지시 | 스텁 생성 시 고정 | 구현 에이전트가 수정하거나 실행하지 않음 |
| Roadmap Targets | follow-up plan에서 복사해 스텁 생성 시 고정 | 구현 에이전트가 수정하지 않음; PASS 시 code-review가 `complete.log`의 `Roadmap Completion`으로 복사 |
| 구현 항목별 완료 여부 (항목명) | 스텁 생성 시 고정 | `[ ]` -> `[x]` 체크만 구현 에이전트가 수행 |
| 구현 체크리스트 (항목 텍스트/순서) | follow-up plan에서 복사해 스텁 생성 시 고정 | 구현 에이전트가 `[ ]` -> `[x]` 체크만 수행; 마지막 체크박스는 저장 전 필수 |
| 코드리뷰 전용 체크리스트 | Review agent only | Implementing agent must not modify or check this section |
| 계획 대비 변경 사항, 주요 설계 결정 | 구현 에이전트가 채움 | placeholder 텍스트를 실제 내용으로 교체 |
| 사용자 리뷰 요청 | 구현 에이전트가 채움 | 진행에 사용자 입력이 필요하지 않으면 `상태: 없음` 유지 |
| 리뷰어를 위한 체크포인트 | 스텁 생성 시 고정 | 계획에서 추출한 리뷰 포인트 |
| 검증 결과 (섹션 제목 + 명령) | 스텁 생성 시 고정 | 실행 출력만 구현 에이전트가 채움; 명령 변경은 `계획 대비 변경 사항`에 기록 |
| 코드리뷰 결과 | 리뷰 에이전트가 append | 스텁에 포함하지 않음 |
## 코드리뷰 결과
- 종합 판정: PASS
- 차원별 평가:
- correctness: Pass
- completeness: Pass
- test coverage: Pass
- API contract: Pass
- code quality: Pass
- plan deviation: Pass
- verification trust: Pass
- 발견된 문제:
- Nit: 최종 `rg --sort path`의 구현자 기록은 실제 stdout 중 active review-loop artifact와 현재 Milestone 문서 매칭을 축약했다. 리뷰어가 동일 명령을 재실행해 `remote-terminal-bridge-poc.md`가 더 이상 매칭되지 않고 남은 결과가 계획상 허용 예외로 분류됨을 확인했으므로 PASS에는 영향 없다.
- 다음 단계: PASS 종결. `complete.log` 작성 후 active task 디렉터리를 archive로 이동한다.

View file

@ -0,0 +1,49 @@
# Complete - m-oto-specific-iop-removal/03+01,02_docs_verification
## 완료 일시
2026-06-06
## 요약
Docs/final verification subtask completed after 2 review loops; final verdict PASS.
## 루프 이력
| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G04_0.log` | `code_review_local_G04_0.log` | FAIL | Active `remote-terminal-bridge-poc.md` still referenced "OTO 등록" and required a narrow follow-up cleanup. |
| `plan_local_G05_1.log` | `code_review_local_G05_1.log` | PASS | Follow-up removed the active roadmap OTO reference and reviewer reran deterministic search, focused Go tests, and Flutter tests. |
## 구현/정리 내용
- Updated README/project rule/active roadmap wording from IOP-managed OTO-specific examples to generic specialized/domain agent boundaries.
- Updated `agent-ops/skills/common/check-roadmap-dependency/SKILL.md` example lock id to a neutral example.
- Removed the remaining active `remote-terminal-bridge-poc.md` OTO reference by replacing it with generic bootstrap/enrollment boundary wording.
- Preserved archive/history links and regression test guards as explicit search exceptions.
## 최종 검증
- `make -n test` - PASS; output was `go test ./...`.
- `rg --sort path -n "test-oto-registration-online-smoke|OTO_REPO" Makefile` - PASS; no matches.
- `rg --sort path -n "\bOTO\b|\boto\b|oto-agent|OTOAgent" agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md` - PASS; no matches.
- `rg --sort path -n --hidden -S "\bOTO\b|\boto\b|oto-agent|OTOAgent|OTOBootstrap|oto_bootstrap|oto_release" -g '!agent-roadmap/archive/**' -g '!agent-task/archive/**' -g '!.git/**' -g '!build/**'` - PASS; remaining matches were current removal Milestone text, active PHASE historical links/summaries, review-loop artifacts before archive, and regression test guards in `apps/edge/cmd/edge/main_test.go` and `packages/go/config/config_test.go`.
- `go test -count=1 ./packages/go/config ./apps/edge/cmd/edge ./apps/edge/internal/node ./apps/edge/internal/service ./apps/edge/internal/transport ./apps/control-plane/cmd/control-plane` - PASS; all selected packages passed.
- `cd apps/client && flutter test` - PASS; `All tests passed!`.
## Roadmap Completion
- Milestone: `agent-roadmap/phase/automation-runtime-bridge/milestones/oto-specific-iop-removal.md`
- Completed task ids:
- `smoke-cleanup`: PASS; evidence=`agent-task/archive/2026/06/m-oto-specific-iop-removal/03+01,02_docs_verification/plan_local_G05_1.log`, `agent-task/archive/2026/06/m-oto-specific-iop-removal/03+01,02_docs_verification/code_review_local_G05_1.log`; verification=`rg --sort path -n "test-oto-registration-online-smoke|OTO_REPO" Makefile`
- `docs-cleanup`: PASS; evidence=`agent-task/archive/2026/06/m-oto-specific-iop-removal/03+01,02_docs_verification/plan_local_G05_1.log`, `agent-task/archive/2026/06/m-oto-specific-iop-removal/03+01,02_docs_verification/code_review_local_G05_1.log`; verification=`rg --sort path -n "\bOTO\b|\boto\b|oto-agent|OTOAgent" README.md agent-ops/rules/project/rules.md agent-roadmap/ROADMAP.md agent-roadmap/phase/automation-runtime-bridge/PHASE.md agent-ops/skills/common/check-roadmap-dependency/SKILL.md`, `rg --sort path -n "\bOTO\b|\boto\b|oto-agent|OTOAgent" agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md`
- `verification`: PASS; evidence=`agent-task/archive/2026/06/m-oto-specific-iop-removal/03+01,02_docs_verification/plan_local_G05_1.log`, `agent-task/archive/2026/06/m-oto-specific-iop-removal/03+01,02_docs_verification/code_review_local_G05_1.log`; verification=`rg --sort path -n --hidden -S "\bOTO\b|\boto\b|oto-agent|OTOAgent|OTOBootstrap|oto_bootstrap|oto_release" -g '!agent-roadmap/archive/**' -g '!agent-task/archive/**' -g '!.git/**' -g '!build/**'`, focused Go tests, Flutter tests
- Not completed task ids: 없음
## 잔여 Nit
- 최종 `rg --sort path`의 구현자 기록은 실제 stdout 중 active review-loop artifact와 현재 Milestone 문서 매칭을 축약했다. 리뷰어가 동일 명령을 재실행해 남은 결과가 허용 예외임을 확인했다.
## 후속 작업
- 없음

View file

@ -0,0 +1,85 @@
<!-- task=m-oto-specific-iop-removal/03+01,02_docs_verification plan=1 tag=REVIEW_REFACTOR -->
# Plan - REVIEW_REFACTOR Docs Verification Follow-up
## 이 파일을 읽는 구현 에이전트에게
이 plan은 직전 code-review FAIL에서 나온 Required 이슈 1건만 해결한다. 구현 중 사용자 결정이 필요하면 chat으로 묻지 말고 `CODE_REVIEW-local-G05.md`의 `사용자 리뷰 요청`에 근거와 재개 조건을 기록한 뒤 중단한다.
## 배경
직전 리뷰에서 최종 OTO 검색이 활성 로드맵 문서의 제거 대상 문구를 여전히 발견했다. 특히 `agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md:67`의 "Agent Bootstrap과 OTO 등록"은 archive 링크, 과거 완료 요약, 현재 Milestone 식별자, 또는 제거 보증용 test guard가 아니라 활성 미래 Milestone의 작업 컨텍스트이므로 generic 표현으로 바꿔야 한다.
## 사용자 리뷰 요청 흐름
구현 중 사용자 결정이 필요하면 review stub의 `사용자 리뷰 요청`에 근거를 기록한다. 단순한 검증 재실행, 검색 결과 triage, 또는 output 누락 보완은 사용자 리뷰 요청으로 올리지 않는다.
## Roadmap Targets
- Milestone: `agent-roadmap/phase/automation-runtime-bridge/milestones/oto-specific-iop-removal.md`
- Task ids:
- `smoke-cleanup`: `Makefile`의 OTO registration smoke와 OTO repository 의존 실행 경로를 제거한다.
- `docs-cleanup`: README, agent-ops project rules, 활성 로드맵 문서에서 OTO를 IOP-managed specialized agent로 설명하는 최신 문구를 제거하고 독립 경계로 정리한다.
- `verification`: active code/docs 검색과 변경 영향 테스트로 OTO 전용 경로 제거를 검증한다.
- Completion mode: check-on-pass
## 범위 결정 근거
이번 follow-up은 `remote-terminal-bridge-poc.md`의 활성 문구와 검증 증거만 다룬다. `agent-roadmap/archive/**`는 읽거나 수정하지 않는다. 현재 Milestone 문서의 제목, 목표, Task id 설명처럼 이 제거 작업 자체를 식별하는 OTO 표현과 `PHASE.md`의 과거 완료/폐기 Milestone 링크/요약은 예외로 triage할 수 있다. active `agent-task/**` plan/review 파일의 OTO 표현은 PASS 후 `agent-task/archive/**`로 이동될 review-loop artifact로 분류하되, 최종 검색 출력에서 누락하지 말고 실제 결과에 맞게 기록한다.
## 구현 체크리스트
- [ ] `agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md:67`의 "OTO 등록" 기준 문구를 generic bootstrap/enrollment 또는 specialized/domain agent 경계 표현으로 수정한다.
- [ ] 최종 `rg --sort path` 결과를 재실행하고, `변경 필요` 항목이 없으며 남은 매칭이 명시 예외뿐임을 실제 stdout과 함께 `CODE_REVIEW-local-G05.md`에 기록한다.
- [ ] `make -n test`, `rg --sort path -n "test-oto-registration-online-smoke|OTO_REPO" Makefile`, focused Go test, Flutter test를 재실행하거나 실행하지 못한 경우 local test rule 기준의 차단/생략 사유를 `CODE_REVIEW-local-G05.md`에 기록한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
### [REVIEW_REFACTOR-1] Active Roadmap Search Cleanup
#### 문제
`agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md:67`에 활성 로드맵 문구로 "OTO 등록"이 남아 있다. 이는 현재 OTO-specific 제거 Milestone의 `verification` 조건에서 요구하는 "archive/역사 보존 외 제거 대상 없음"을 만족하지 않는다.
#### 해결 방법
해당 문장을 OTO 이름 없는 표현으로 바꾼다. 예:
```markdown
- 확인 필요: bootstrap/enrollment 대상과 remote terminal bridge 대상의 구분. 설치 가능한 대상은 bootstrap/enrollment 경로로, 설치가 어렵거나 일회성 유지보수 대상은 remote terminal bridge 경로로 구분한다.
```
수정 후 검색 결과를 `변경 필요`, `허용 예외`, `review-loop artifact`로 triage한다. `remote-terminal-bridge-poc.md`가 더 이상 OTO 검색 결과에 나오면 안 된다.
#### 수정 파일 및 체크리스트
- [ ] `agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md`: OTO 직접 언급 제거.
- [ ] `CODE_REVIEW-local-G05.md`: 실제 검증 출력과 triage 기록.
#### 테스트 작성
문서/로드맵 문구 변경이라 신규 unit test는 작성하지 않는다.
#### 중간 검증
```bash
rg --sort path -n "\\bOTO\\b|\\boto\\b|oto-agent|OTOAgent" agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md
```
## 수정 파일 요약
| 파일 | 항목 |
|---|---|
| `agent-roadmap/phase/automation-runtime-bridge/milestones/remote-terminal-bridge-poc.md` | REVIEW_REFACTOR-1 |
| `agent-task/m-oto-specific-iop-removal/03+01,02_docs_verification/CODE_REVIEW-local-G05.md` | REVIEW_REFACTOR-1 |
## 최종 검증
```bash
make -n test
rg --sort path -n "test-oto-registration-online-smoke|OTO_REPO" Makefile
rg --sort path -n --hidden -S "\\bOTO\\b|\\boto\\b|oto-agent|OTOAgent|OTOBootstrap|oto_bootstrap|oto_release" -g '!agent-roadmap/archive/**' -g '!agent-task/archive/**' -g '!.git/**' -g '!build/**'
go test -count=1 ./packages/go/config ./apps/edge/cmd/edge ./apps/edge/internal/node ./apps/edge/internal/service ./apps/edge/internal/transport ./apps/control-plane/cmd/control-plane
cd apps/client && flutter test
```
기대 결과: Makefile dry-run 정상, Makefile OTO smoke 검색 출력 없음, focused Go/Flutter test 통과 또는 local test rule 기준의 명시적 차단/생략 사유 기록. 최종 OTO 검색 결과는 현재 Milestone 식별/작업 문구, `PHASE.md`의 과거 완료/폐기 링크/요약, 제거 보증용 test guard, PASS 전 active review-loop artifact 같은 명시 예외만 남아야 하며 `remote-terminal-bridge-poc.md`는 결과에 남지 않아야 한다.

View file

@ -1,112 +0,0 @@
<!-- task=m-oto-specific-iop-removal/03+01,02_docs_verification plan=0 tag=REFACTOR -->
# Code Review Reference - REFACTOR
> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.**
> Do not start until predecessor `01` and `02` subtasks have `complete.log`.
> Fill implementation-owned sections and verification output, then stop with active files in place.
## 개요
date=2026-06-05
task=m-oto-specific-iop-removal/03+01,02_docs_verification, plan=0, tag=REFACTOR
## Roadmap Targets
- Milestone: `agent-roadmap/phase/automation-runtime-bridge/milestones/oto-specific-iop-removal.md`
- Task ids:
- `smoke-cleanup`: `Makefile`의 OTO registration smoke와 OTO repository 의존 실행 경로를 제거한다.
- `docs-cleanup`: README, agent-ops project rules, 활성 로드맵 문서에서 OTO를 IOP-managed specialized agent로 설명하는 최신 문구를 제거하고 독립 경계로 정리한다.
- `verification`: active code/docs 검색과 변경 영향 테스트로 OTO 전용 경로 제거를 검증한다.
- Completion mode: check-on-pass
## 이 파일을 읽는 리뷰 에이전트에게
> **[REVIEW AGENT ONLY]** 종결 절차는 코드리뷰 에이전트 전용이다.
---
## 구현 항목별 완료 여부
| 항목 | 완료 여부 |
|------|---------|
| [REFACTOR-1] Docs Cleanup | [ ] |
| [REFACTOR-2] Final Verification | [ ] |
## 구현 체크리스트
- [ ] `README.md`에서 IOP-managed OTO/domain-agent 설명을 generic automation/external domain-agent 경계로 정리한다.
- [ ] `agent-ops/rules/project/rules.md`에서 OTO 등록/부트스트랩 예시를 generic specialized/external agent 표현으로 바꾼다.
- [ ] `agent-roadmap/ROADMAP.md`와 active `PHASE.md`의 최신 Phase 요약에서 OTO 직접 연결/부트스트랩 표현을 generic 독립 전환 경계로 정리한다. archive 링크/과거 Milestone 제목은 수정하지 않는다.
- [ ] 필요하면 `agent-ops/skills/common/check-roadmap-dependency/SKILL.md`의 예시 lock id를 OTO가 아닌 generic 예시로 바꾸고, skill 문서를 짧고 판별 가능하게 유지한다.
- [ ] 최종 `rg --sort path` 결과를 triage해 제거 대상 없음 또는 명시 예외만 남았음을 review stub에 기록한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
## 코드리뷰 전용 체크리스트
- [ ] `코드리뷰 결과``PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다.
- [ ] active review/plan 파일을 `.log`로 아카이브한다.
- [ ] PASS이면 `complete.log` 작성 후 active task 디렉터리를 archive로 이동한다.
- [ ] PASS이면 완료 이벤트 메타데이터를 보고한다.
## 계획 대비 변경 사항
_구현 에이전트가 계획과 다르게 구현한 부분을 이유와 함께 기록한다._
## 주요 설계 결정
_구현 에이전트가 주요 설계 결정 사항을 기록한다._
## 사용자 리뷰 요청
_기본값은 `없음`이다. 구현 중 사용자 결정, 사용자 소유 외부 환경/secret/서비스 준비, 또는 계획 범위 변경 없이는 안전하게 진행할 수 없으면 아래 항목을 실제 내용으로 교체하고, 구현을 중단한 뒤 active 파일을 그대로 둔 채 리뷰를 요청한다._
- 상태: 없음
- 사유 유형: 없음
- 결정 필요: 없음
- 차단 근거: 없음
- 실행한 검증/명령: 없음
- 자동 후속 불가 이유: 없음
- 재개 조건: 없음
## 리뷰어를 위한 체크포인트
- 최신 README/rules/roadmap 문구가 IOP-managed OTO agent를 설명하지 않는가.
- Archive 링크나 현재 Milestone 식별자만 search 예외로 남았는가.
- Makefile OTO smoke target 제거가 유지되는가.
- 최종 search triage에 `변경 필요` 항목이 없는가.
## 검증 결과
### REFACTOR-1 중간 검증
```bash
$ rg --sort path -n "\\bOTO\\b|\\boto\\b|oto-agent|OTOAgent" README.md agent-ops/rules/project/rules.md agent-roadmap/ROADMAP.md agent-roadmap/phase/automation-runtime-bridge/PHASE.md agent-ops/skills/common/check-roadmap-dependency/SKILL.md
(output)
```
### REFACTOR-2 중간 검증
```bash
$ make -n test
(output)
$ rg --sort path -n "test-oto-registration-online-smoke|OTO_REPO" Makefile
(output)
```
### 최종 검증
```bash
$ make -n test
(output)
$ rg --sort path -n --hidden -S "\\bOTO\\b|\\boto\\b|oto-agent|OTOAgent|OTOBootstrap|oto_bootstrap|oto_release" -g '!agent-roadmap/archive/**' -g '!agent-task/archive/**' -g '!.git/**' -g '!build/**'
(output)
$ go test -count=1 ./packages/go/config ./apps/edge/cmd/edge ./apps/edge/internal/node ./apps/edge/internal/service ./apps/edge/internal/transport ./apps/control-plane/cmd/control-plane
(output)
$ cd apps/client && flutter test
(output)
```
---
> **[IMPLEMENTING AGENT — BEFORE SAVING] Fill completion table, checklist, changes from plan, design decisions, and verification output.**