<!-- task=09_ops_console_docs plan=2 tag=REVIEW_REVIEW_OCD -->

# 09 Ops Console Docs Follow-up Plan - REVIEW_REVIEW_OCD

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

**필수: 구현 마지막에는 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다.**
이 follow-up은 README 문서 손상과 검증 출력 신뢰도만 다룬다. review 파일의 아카이브 지시와 `코드리뷰 전용 체크리스트`는 코드리뷰 에이전트 전용이므로 수정하거나 체크하지 않는다.

## 배경

plan 1 구현은 `CLI Agent` bullet 문제는 고쳤지만, README의 Control Plane/Non-Goals 영역에 task 09 범위 밖 변경과 새 문서 손상을 남겼다. 또한 review 파일의 검증 결과가 실제 stdout/stderr가 아니라 재구성된 표식과 다른 출력 형식으로 기록되어 verification trust가 다시 실패했다.

## 분석 결과

### 읽은 파일

- `agent-ops/rules/project/rules.md`
- `agent-ops/rules/project/domain/edge/rules.md`
- `agent-ops/skills/common/code-review/SKILL.md`
- `README.md`
- `docs/architecture.md`
- `apps/edge/README.md`
- `agent-task/09_ops_console_docs/plan_cloud_G07_1.log`
- `agent-task/09_ops_console_docs/code_review_cloud_G07_1.log`

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

- Docs-only Markdown 구조와 review 기록 fidelity는 Go unit test가 직접 커버하지 않는다.
- `rg --sort path`, `git diff --check`, `go build ./...`로 deterministic 검증한다.

### 심볼 참조

- 코드 심볼 rename은 없다.
- 문서 범위 밖 잔여어: `Go 기반 단일 바이너리`, `Node/Model`, `Policy/Config`, `Job/Worker`, `Audit, Metrics/Event`, `Go 단일 바이너`, `Portal UI`, `별 상세 기획`, `운영 제어 API`.

### 범위 결정 근거

- `README.md`에서 task 09 소유 변경은 ops console/cli adapter wording뿐이다.
- `apps/edge/README.md`의 E2E smoke 및 node command 문서 hunk는 이전 plan처럼 외부 task 소유 후보로 남긴다.
- 코드 변경, config key rename, HTTP API 설계 문서 작성은 제외한다.

### 빌드 등급

- Build `cloud-G07`: verification trust failure가 반복되어 exact output 회복이 필요하다.
- Review `cloud-G07`: 작업은 docs-only이지만 같은 파일에 여러 task 변경이 섞여 있어 범위 판단이 필요하다.

## 구현 체크리스트

- [ ] `README.md`의 Control Plane/roadmap/non-goals 범위 밖 변경과 새 오타/중복 줄을 복구한다.
- [ ] task 09 소유 변경만 남았는지 deterministic 검색으로 확인한다.
- [ ] 계획된 검색/빌드 검증 명령을 정확히 재실행하고 실제 stdout/stderr를 기록한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

### [REVIEW_REVIEW_OCD-1] README 범위 밖 변경과 문서 손상 복구

#### 문제

`README.md:77`, `README.md:87`-`README.md:90`, `README.md:206`, `README.md:214`, `README.md:238`, `README.md:244`, `README.md:278`-`README.md:283`에 task 09 범위 밖 Control Plane 변경, `바이너` 오타, 중복 Non-Goals 항목이 남아 있다.

#### 해결 방법

다음 문맥을 원래 README 방향으로 복구한다.

```markdown
Control Plane은 자체 서버와 프론트 페이지를 가진 중앙 관리 계층이다.
- Runtime 영역과 Automation 영역을 나눠 보여주는 운영 화면 제공
- Control Plane은 향후 여러 Edge 관리와 프론트 페이지 제공을 위해 추가된다.
| `apps/control-plane` | 향후 여러 Edge를 연결하고 운영 화면을 제공할 중앙 관리 계층 |
- 자체 서버와 프론트 페이지 제공
- Control Plane UI 화면별 상세 기획
- Plane 연동 상세 workflow
- NomadCode 상세 제품 설계
```

`README.md`의 ops console/cli adapter wording 변경은 유지한다.

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

- [ ] `README.md`

#### 테스트 작성

- 별도 테스트 없음. 문서 diff와 deterministic 검색으로 검증한다.

#### 중간 검증

```bash
rg --sort path -n "Go 기반 단일 바이너리|Edge를 통한 Node/Model|Policy/Config|Job/Worker|Audit, Metrics/Event|Go 단일 바이너|Portal UI|별 상세 기획|운영 제어 API" README.md
rg --sort path -n "Control Plane은 자체 서버와 프론트 페이지|Runtime 영역과 Automation 영역|Control Plane은 향후 여러 Edge 관리와 프론트 페이지|운영 화면을 제공할 중앙 관리 계층|자체 서버와 프론트 페이지 제공|Control Plane UI 화면별 상세 기획" README.md
```

Expected: 첫 번째 command는 no output. 두 번째 command는 복구된 원문 문맥만 출력한다.

### [REVIEW_REVIEW_OCD-2] 검증 출력 fidelity 회복

#### 문제

`code_review_cloud_G07_1.log:75`-`code_review_cloud_G07_1.log:142`에 `DIFF_CHECK_PASS`, `NO_PORTAL_REFERENCES_FOUND`, `BUILD_PASS` 같은 재구성 표식이 기록되어 있다. `rg --sort path -n "ops console|cli adapter|edge-local" ...` 출력도 실제 command 형식과 다르다.

#### 해결 방법

새 `CODE_REVIEW-cloud-G07.md`에는 exact command 재실행 결과를 그대로 기록한다.

- 출력이 없는 성공 명령: `(no output, exit code 0)`처럼 stdout/stderr가 비었음을 명시한다.
- no-match가 성공 조건인 `rg`: `(no output, exit code 1 - no matches)`처럼 `rg`의 exit code 의미를 명시한다.
- match가 있는 `rg`: 실제 `path:line:text` 형식을 그대로 붙여 넣는다.
- `위와 동일`, `PASS`, `BUILD_PASS` 같은 요약 표식으로 stdout/stderr를 대체하지 않는다.

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

- [ ] `CODE_REVIEW-cloud-G07.md`

#### 테스트 작성

- 별도 테스트 없음. review 기록 자체가 검증 대상이다.

#### 중간 검증

```bash
git diff --check -- README.md docs/architecture.md apps/edge/README.md
rg --sort path -n "Web Portal|IOP Portal" README.md docs apps/edge
rg --sort path -n "임시 디버그|temporary debug|임시 수동 테스트 UI" README.md docs apps/edge
rg --sort path -n "ops console|cli adapter|edge-local" README.md docs apps/edge
go build ./...
```

## 수정 파일 요약

| 파일 | 항목 |
|---|---|
| `README.md` | REVIEW_REVIEW_OCD-1 |
| `CODE_REVIEW-cloud-G07.md` | REVIEW_REVIEW_OCD-2 |

## 최종 검증

```bash
git diff --check -- README.md docs/architecture.md apps/edge/README.md
rg --sort path -n "Go 기반 단일 바이너리|Edge를 통한 Node/Model|Policy/Config|Job/Worker|Audit, Metrics/Event|Go 단일 바이너|Portal UI|별 상세 기획|운영 제어 API" README.md
rg --sort path -n "Web Portal|IOP Portal" README.md docs apps/edge
rg --sort path -n "임시 디버그|temporary debug|임시 수동 테스트 UI" README.md docs apps/edge
rg --sort path -n "ops console|cli adapter|edge-local" README.md docs apps/edge
go build ./...
```

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