<!-- task=specialized_agent_contract plan=1 tag=REVIEW_API -->

# Specialized Agent Contract Follow-up Plan

## 이 파일을 읽는 구현 에이전트에게

구현 마지막 단계에서 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 반드시 채운다. 검증 명령을 실행하고 실제 출력과 구현 메모를 기록한 뒤, active 파일은 그대로 둔 채 review ready로 보고한다. 판정, 로그 rename, `complete.log`, archive 이동은 code-review-skill 전용이다.

## 배경

이전 리뷰는 `Bootstrap Preconditions`가 run/command smoke 범위를 결정했는데 대응 완료 기준이 미체크로 남아 있어 FAIL 처리되었다. 후속 작업은 마일스톤 문서의 완료 기준 상태를 실제 결정 내용과 맞추는 좁은 문서 정합성 수정이다.

## 분석 결과

### 읽은 파일

- `agent-task/specialized_agent_contract/plan_local_G04_0.log`
- `agent-task/specialized_agent_contract/code_review_local_G04_0.log`
- `agent-ops/roadmap/milestones/specialized-agent-proto-socket-foundation.md`
- `agent-ops/roadmap/milestones/agent-bootstrap-oto-enrollment.md`
- `proto/iop/runtime.proto`
- `apps/edge/internal/transport/server.go`
- `apps/edge/internal/node/registry.go`
- `apps/edge/internal/node/store.go`
- `apps/edge/internal/node/mapper.go`
- `apps/node/internal/transport/client.go`
- `apps/node/internal/transport/session.go`

### 테스트 커버리지 공백

- 마일스톤 문서 체크박스 정합성: 자동 테스트 없음. `git diff --check`와 deterministic `rg --sort path`로 검증한다.

### 심볼 참조

none. rename/remove 없이 문서 체크 상태만 갱신한다.

### 분할 판단

분할 정책을 평가했다. 수정 대상은 같은 마일스톤 문서의 단일 완료 기준 한 줄이며 API, 구현, 테스트, call-site 경계가 없다. 여러 subtask로 나누면 같은 파일을 두 번 만지는 중복만 생기므로 단일 계획이 안전하다.

### 범위 결정 근거

수정 대상은 `agent-ops/roadmap/milestones/specialized-agent-proto-socket-foundation.md`로 제한한다. `proto/iop/runtime.proto`, Edge/Node Go 파일, `agent-bootstrap-oto-enrollment.md`는 현재 계약과 잠금 경계 확인용으로만 사용하고 수정하지 않는다.

### 빌드 등급

Build lane: `local-G04`; Review lane: `local-G04`. 이전 FAIL은 문서 체크박스 정합성 문제이며, 라이브 환경 없이 diff와 deterministic search로 검증 가능하므로 기존 route가 충분하다.

## 구현 체크리스트

- [ ] `agent-ops/roadmap/milestones/specialized-agent-proto-socket-foundation.md`에서 run/command smoke 완료 기준을 실제 결정 내용과 일치시킨다.
- [ ] 중간 검증과 최종 검증 명령을 실행하고 실제 출력이 계획의 기대 결과와 일치하는지 확인한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

### [REVIEW_API-1] Run Command Smoke Completion Criterion

#### 문제

`agent-ops/roadmap/milestones/specialized-agent-proto-socket-foundation.md:86`은 "이번 마일스톤의 run/command smoke 요구는 registration 이후 envelope compatibility 확인 기준까지만 둔다"고 결정한다. 하지만 대응 완료 기준인 `agent-ops/roadmap/milestones/specialized-agent-proto-socket-foundation.md:46`은 아직 `[ ]`로 남아 있어, 이전 계획의 "충족된 완료 기준만 `[x]`로 갱신한다" 요구와 불일치한다.

#### 해결 방법

line 86의 결정이 현재 의도이므로 line 46을 `[x]`로 갱신한다. line 45의 remote terminal bridge 완료 기준은 이번 follow-up 범위에서 새 근거를 추가하지 않으므로 그대로 `[ ]`로 둔다.

Before (`agent-ops/roadmap/milestones/specialized-agent-proto-socket-foundation.md:43-47`):

```markdown
- [x] Agent Bootstrap과 OTO 등록이 통신 기반을 추측하지 않고 후속 계약을 작성할 수 있다.
- [ ] OTO의 proto-socket 통신 기반 Milestone과 같은 책임 경계를 참조한다.
- [ ] generic Node, specialized domain agent, remote terminal bridge 경로가 제품/transport 수준에서 구분된다.
- [ ] OTO Dart client의 iop Edge registration smoke를 기준으로, 후속 run/command smoke를 어디까지 요구할지 결정되어 있다.
- [x] specialized agent를 처음에는 node-compatible handshake로 받아들이되, proto field 추가가 필요한 시점과 조건이 정리되어 있다.
```

After:

```markdown
- [x] Agent Bootstrap과 OTO 등록이 통신 기반을 추측하지 않고 후속 계약을 작성할 수 있다.
- [ ] OTO의 proto-socket 통신 기반 Milestone과 같은 책임 경계를 참조한다.
- [ ] generic Node, specialized domain agent, remote terminal bridge 경로가 제품/transport 수준에서 구분된다.
- [x] OTO Dart client의 iop Edge registration smoke를 기준으로, 후속 run/command smoke를 어디까지 요구할지 결정되어 있다.
- [x] specialized agent를 처음에는 node-compatible handshake로 받아들이되, proto field 추가가 필요한 시점과 조건이 정리되어 있다.
```

#### 수정 파일 및 체크리스트

- [ ] `agent-ops/roadmap/milestones/specialized-agent-proto-socket-foundation.md:46`을 `[x]`로 갱신한다.
- [ ] `agent-ops/roadmap/milestones/specialized-agent-proto-socket-foundation.md:45`는 새 근거 없이 체크하지 않는다.
- [ ] 후속 `CODE_REVIEW` 구현 메모에는 실제로 갱신한 완료 기준만 기록한다.

#### 테스트 작성

테스트 작성 skip. 문서-only 체크박스 정합성 수정이며 런타임 동작 변경이 없다.

#### 중간 검증

```bash
rg --sort path -n "\[x\] OTO Dart client의 iop Edge registration smoke|registration 이후 envelope compatibility|\[ \] generic Node, specialized domain agent, remote terminal bridge" agent-ops/roadmap/milestones/specialized-agent-proto-socket-foundation.md
```

기대 결과: run/command smoke 완료 기준은 `[x]`, envelope compatibility 결정 문장도 출력된다. remote terminal bridge 완료 기준은 `[ ]`로 남아 있는 것이 출력된다.

## 수정 파일 요약

| 파일 | 항목 |
|------|------|
| `agent-ops/roadmap/milestones/specialized-agent-proto-socket-foundation.md` | REVIEW_API-1 |

## 최종 검증

Go test cache output policy: Go 테스트를 실행하지 않는다. 이번 작업은 문서-only이고 런타임/스키마 동작 변경이 없다.

```bash
git diff --check
```

기대 결과: 출력 없음, exit 0.

```bash
rg --sort path -n "\[x\] OTO Dart client의 iop Edge registration smoke|registration 이후 envelope compatibility|\[ \] generic Node, specialized domain agent, remote terminal bridge" agent-ops/roadmap/milestones/specialized-agent-proto-socket-foundation.md
```

기대 결과: run/command smoke 완료 기준은 `[x]`, envelope compatibility 결정 문장은 유지, remote terminal bridge 완료 기준은 `[ ]`로 출력된다.

모든 코드 변경 완료 후 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다.
