<!-- task=m-proto-socket-infrastructure-communication-rail/12+11_core_diagnostics plan=1 tag=REVIEW_API -->

# Plan - REVIEW_API Core Diagnostics Verification Recovery

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

`CODE_REVIEW-cloud-G07.md`의 구현 에이전트 소유 섹션을 실제 검증 출력으로 반드시 채운다. 이번 루프의 기본 목표는 검증 증거 회복이며, 소스 코드는 명령 실패가 실제 repo-owned 문제를 드러낼 때만 최소 범위로 수정한다. 최종 판정, log rename, `complete.log`, archive 이동은 code-review-skill 전용이다. 사용자 결정, 사용자 소유 외부 환경, 범위 충돌로 막히면 review stub의 `사용자 리뷰 요청` 섹션에 정확한 근거와 재개 조건을 채우고 멈춘다. 단순 증거 공백은 사용자 리뷰 요청이 아니며, 허용된 원격/검증 환경에서 명령을 재실행해 닫는다.

## 배경

이전 루프 `code_review_cloud_G07_0.log`는 Core diagnostics 구현 자체보다 plan/review 루프 계약과 검증 신뢰 문제로 FAIL 처리되었다.

- review stub의 `구현 체크리스트` 항목 중 하나가 계획 파일 원문과 달라졌다.
- 필수 최종 검증 `cd services/core && go test ./...`와 `cd services/core && go vet ./...`가 실행되지 않았고 실제 stdout/stderr가 없다.
- local 테스트 규칙은 로컬 실행을 금지하므로, 이번 루프는 허용된 원격/검증 환경에서 명령 증거를 회복해야 한다.

## 사용자 리뷰 요청 흐름

구현 중 차단 사유는 active review stub의 `사용자 리뷰 요청` 섹션에 기록한다. 허용된 원격/검증 환경 자체가 사용자 소유 준비물이라 접근할 수 없다는 구체 증거가 있을 때만 사용자 리뷰 요청을 작성한다. 단순히 이전 루프처럼 "로컬 규칙상 미실행"만 기록하고 완료 처리하지 않는다.

## 분석 결과

### 읽은 파일

- `agent-ops/rules/project/rules.md`
- `agent-ops/rules/private/rules.md`
- `agent-ops/rules/common/rules-roadmap.md`
- `agent-roadmap/current.md`
- `agent-roadmap/phase/workflow-core/milestones/proto-socket-infrastructure-communication-rail.md`
- `agent-ops/rules/project/domain/core/rules.md`
- `agent-test/local/rules.md`
- `agent-test/local/core-smoke.md`
- `agent-ops/skills/common/code-review/SKILL.md`
- `agent-task/m-proto-socket-infrastructure-communication-rail/12+11_core_diagnostics/plan_cloud_G07_0.log`
- `agent-task/m-proto-socket-infrastructure-communication-rail/12+11_core_diagnostics/code_review_cloud_G07_0.log`
- `services/core/internal/protosocket/server.go`
- `services/core/internal/protosocket/server_test.go`
- `services/core/internal/protosocket/tasks_test.go`

### 테스트 환경 규칙

`agent-test/local/rules.md`는 로컬 테스트/검증 실행을 금지한다. 이 plan의 `go test`/`go vet` 명령은 허용된 원격/검증 환경에서 실행하고, 실제 stdout/stderr를 review stub에 붙여 넣는다. 명령을 실행할 수 없으면 사용자 소유 환경 차단인지, repo-owned setup 문제인지 구분해 기록한다.

### 범위 결정 근거

이전 코드 리뷰에서 즉시 확인된 소스 결함은 없다. 따라서 기본 범위는 task artifact의 증거 회복이다. `go test` 또는 `go vet`가 실패하면 실패 원인을 기준으로 `services/core/internal/protosocket/**` 안에서 최소 수정하고, 실패 출력과 수정 후 재실행 출력을 모두 남긴다.

### 빌드 등급

`cloud-G07`: verification trust recovery이며 이전 루프가 필수 core 검증 증거 없이 종료되었으므로 cloud lane과 G07을 유지한다.

## 구현 체크리스트

- [ ] 이번 plan/review의 `구현 체크리스트` 항목 텍스트와 순서를 동일하게 유지하고, 실행 사유나 메모는 체크리스트 문구가 아닌 `계획 대비 변경 사항` 또는 `검증 결과`에 기록한다.
- [ ] `cd services/core && go test ./internal/protosocket -run 'TestServer.*Diagnostics|TestServerRespondsWithErrorEnvelopeForUnsupportedAction' -count=1`를 허용된 원격/검증 환경에서 실행하고 실제 stdout/stderr를 기록한다.
- [ ] `cd services/core && go test ./internal/protosocket -run 'TestRouterProtoSocketTaskListRequiresAuth|TestProtoSocketTaskErrorEnvelopeCodes|Test.*Broadcast.*' -count=1`를 허용된 원격/검증 환경에서 실행하고 실제 stdout/stderr를 기록한다.
- [ ] `cd services/core && go test ./...`를 허용된 원격/검증 환경에서 실행하고 실제 stdout/stderr를 기록한다.
- [ ] `cd services/core && go vet ./...`를 허용된 원격/검증 환경에서 실행하고 실제 stdout/stderr를 기록한다.
- [ ] 검증 명령이 실패하면 repo-owned 원인을 최소 범위로 수정하고, 실패 출력과 수정 후 통과 출력을 모두 기록한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

## 의존 관계 및 구현 순서

1. `plan_cloud_G07_0.log`와 `code_review_cloud_G07_0.log`의 FAIL 사유를 확인한다.
2. follow-up `PLAN-cloud-G07.md`와 `CODE_REVIEW-cloud-G07.md`의 `구현 체크리스트` 텍스트/순서가 일치하는지 확인한다.
3. 허용된 원격/검증 환경에서 targeted tests, full core test, vet 순서로 실행한다.
4. 실패가 있으면 원인 파일을 최소 수정하고 같은 명령을 재실행한다.
5. review stub에 실제 stdout/stderr, 변경 여부, 남은 위험을 기록한다.

### [REVIEW_API-1] Checklist Contract Recovery

#### 문제

이전 review stub은 `구현 체크리스트` 항목에 실행 메모를 직접 덧붙여 plan/review 체크리스트 원문 일치 계약을 깨뜨렸다.

#### 해결 방법

이번 루프에서는 plan/review의 `구현 체크리스트` 항목 텍스트와 순서를 그대로 유지한다. 실행 메모, 환경 사유, 실패/재실행 설명은 `계획 대비 변경 사항`, `주요 설계 결정`, `검증 결과`에만 기록한다.

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

- [ ] `agent-task/m-proto-socket-infrastructure-communication-rail/12+11_core_diagnostics/CODE_REVIEW-cloud-G07.md`: 체크리스트 문구를 변경하지 않고 체크 상태만 갱신한다.

#### 테스트 작성

새 테스트는 필요 없다. code-review가 plan/review 체크리스트 문구를 대조한다.

#### 중간 검증

```bash
diff -u <(awk '/^## 구현 체크리스트$/{flag=1; next} /^## 의존 관계 및 구현 순서$/{flag=0} flag && /^- \[[ x]\] /{sub(/^- \[[ x]\] /,"- [ ] "); print}' PLAN-cloud-G07.md) <(awk '/^## 구현 체크리스트$/{flag=1; next} /^## 코드리뷰 전용 체크리스트$/{flag=0} flag && /^- \[[ x]\] /{sub(/^- \[[ x]\] /,"- [ ] "); print}' CODE_REVIEW-cloud-G07.md)
```

기대 결과: 출력 없음, exit 0. `PLAN-cloud-G07.md`와 `CODE_REVIEW-cloud-G07.md`의 `구현 체크리스트` 항목 텍스트와 순서가 동일하다.

### [REVIEW_API-2] Core Test Evidence Recovery

#### 문제

이전 루프는 diagnostics 테스트 코드 추가를 기록했지만 targeted tests와 full core test를 실행하지 않았다. 필수 stdout/stderr 증거가 없으므로 구현을 PASS로 닫을 수 없다.

#### 해결 방법

허용된 원격/검증 환경에서 targeted tests와 full core test를 실행한다. 실패하면 출력으로 원인을 특정하고 repo-owned 문제만 최소 수정한다.

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

- [ ] `services/core/internal/protosocket/server.go`: 테스트 실패가 실제 구현 결함을 드러낼 때만 최소 수정한다.
- [ ] `services/core/internal/protosocket/server_test.go`: 테스트 실패가 테스트 결함을 드러낼 때만 최소 수정한다.
- [ ] `services/core/internal/protosocket/tasks_test.go`: 테스트 실패가 테스트 결함을 드러낼 때만 최소 수정한다.
- [ ] `agent-task/m-proto-socket-infrastructure-communication-rail/12+11_core_diagnostics/CODE_REVIEW-cloud-G07.md`: 실제 stdout/stderr를 기록한다.

#### 테스트 작성

새 테스트 작성이 아니라 기존 추가 테스트의 실행 증거를 회복한다. 실패 원인이 coverage 공백이면 가장 좁은 assertion을 추가한다.

#### 중간 검증

```bash
cd services/core && go test ./internal/protosocket -run 'TestServer.*Diagnostics|TestServerRespondsWithErrorEnvelopeForUnsupportedAction' -count=1
cd services/core && go test ./internal/protosocket -run 'TestRouterProtoSocketTaskListRequiresAuth|TestProtoSocketTaskErrorEnvelopeCodes|Test.*Broadcast.*' -count=1
```

기대 결과: 두 명령 모두 실패 없이 종료하고 실제 stdout/stderr가 review stub에 기록된다.

### [REVIEW_API-3] Core Final Verification Recovery

#### 문제

이전 루프는 core 필수 검증 `go test ./...`와 보조 검증 `go vet ./...`를 실행하지 않았다.

#### 해결 방법

허용된 원격/검증 환경에서 final core verification을 실행한다. 실패하면 출력으로 원인을 특정하고 repo-owned 문제만 최소 수정한다.

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

- [ ] `services/core/internal/protosocket/**`: final verification 실패가 실제 repo-owned 문제를 드러낼 때만 최소 수정한다.
- [ ] `agent-task/m-proto-socket-infrastructure-communication-rail/12+11_core_diagnostics/CODE_REVIEW-cloud-G07.md`: 실제 stdout/stderr를 기록한다.

#### 테스트 작성

새 테스트는 기본적으로 필요 없다. `go test ./...` 또는 `go vet ./...` 실패가 coverage 공백이나 vet 오류를 드러낼 때만 필요한 최소 테스트/코드 수정을 한다.

#### 중간 검증

```bash
cd services/core && go test ./...
cd services/core && go vet ./...
```

기대 결과: 두 명령 모두 실패 없이 종료하고 실제 stdout/stderr가 review stub에 기록된다.

## 수정 파일 요약

| 파일 | 항목 |
|------|------|
| `agent-task/m-proto-socket-infrastructure-communication-rail/12+11_core_diagnostics/CODE_REVIEW-cloud-G07.md` | REVIEW_API-1, REVIEW_API-2, REVIEW_API-3 |
| `services/core/internal/protosocket/server.go` | REVIEW_API-2, REVIEW_API-3 실패 시에만 |
| `services/core/internal/protosocket/server_test.go` | REVIEW_API-2, REVIEW_API-3 실패 시에만 |
| `services/core/internal/protosocket/tasks_test.go` | REVIEW_API-2, REVIEW_API-3 실패 시에만 |

## 최종 검증

```bash
cd services/core && go test ./...
cd services/core && go vet ./...
```

기대 결과: 두 명령 모두 실패 없이 종료한다. 모든 코드 변경 완료 후 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채운다.
