<!-- task=m-ops-rule-monorepo-alignment/02+01_test_rules plan=2 tag=REVIEW_REVIEW_RULES -->

# Plan - REVIEW_REVIEW_RULES Console Package Test Rule Follow-up

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

`CODE_REVIEW-local-G06.md`의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채우는 것이 필수다. 구현 후 검증을 실행하고 active 파일을 그대로 둔 채 리뷰 준비를 보고한다. 최종 판정, log rename, `complete.log`, archive 이동은 code-review skill 책임이다. 사용자만 결정할 수 있는 차단, 사용자 소유 외부 환경, 범위 충돌이 생기면 review stub의 `사용자 리뷰 요청` 섹션에 정확한 근거를 채우고 멈춘다. 구현 중 사용자에게 직접 질문하거나 선택지를 제시하거나 `request_user_input`을 호출하지 않는다. 후속 에이전트가 명령 재실행이나 산출물 수집으로 해결할 수 있는 증거 공백은 사용자 리뷰 요청이 아니다.

## 배경

2회차 리뷰는 G04에서 발견된 analyzer option/protobuf/resource importer 계약 누락이 해소되었음을 확인했다. 다만 `framework-smoke.md`는 `packages/flutter/oto_console/pubspec.yaml` 변경을 framework smoke 대상으로 라우팅하면서도 console package-local setup/lint/test 명령을 제공하지 않는다. 실제 workspace에는 `packages/flutter/oto_console/pubspec.yaml`, `packages/flutter/oto_console/analysis_options.yaml`, `packages/flutter/oto_console/test/oto_console_test.dart`가 있으므로 console package manifest 또는 analyzer option 변경 시 실행할 local 검증 계약이 필요하다.

## 사용자 리뷰 요청 흐름

구현 중 차단은 active `CODE_REVIEW-local-G06.md`의 `사용자 리뷰 요청` 섹션에 기록한다. 직접 사용자 프롬프트는 금지하며, code-review가 요청 타당성을 검증하고 실제 `USER_REVIEW.md` 작성 여부를 결정한다.

## Roadmap Targets

- Milestone: `agent-roadmap/phase/independent-control-plane/milestones/ops-rule-monorepo-alignment.md`
- Task ids:
  - `test-rules`: local test rule과 smoke 문서가 모노레포 target 이름과 일치하는지 확인한다.
- Completion mode: check-on-pass

## 리뷰 근거

- Archived plan: `agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/plan_local_G05_1.log`
- Archived review: `agent-task/m-ops-rule-monorepo-alignment/02+01_test_rules/code_review_local_G05_1.log`
- Verdict: FAIL
- Required:
  - `framework-smoke.md`와 local monorepo target 설명이 `packages/flutter/oto_console` package-local setup/lint/test 검증 계약을 제공하지 않는다.

## 범위 결정 근거

- production code, unit test, `docs/`, archive 문서는 수정하지 않는다.
- `agent-test/local/rules.md`와 `agent-test/local/framework-smoke.md`의 local 테스트 규칙만 보정한다.
- Makefile에 console target이 없는 상태이므로 새 Makefile target을 만들지 않고 package-local 명령을 명시한다.
- project/domain rule 갱신은 이 task의 범위를 넘기므로 수행하지 않는다. 다만 local smoke 읽기 조건은 실제 console package 검증을 위해 `packages/flutter/oto_console/analysis_options.yaml`도 함께 드러낼 수 있다.

## 빌드 등급

- `local-G06`: 반복 후속이지만 변경 범위는 local test rule 문서 두 파일이고, 검증은 deterministic한 검색과 whitespace 검사로 충분하다.

## 구현 체크리스트

- [ ] `agent-test/local/rules.md`의 Monorepo Targets에 `packages/flutter/oto_console` package-local setup/lint/test 명령을 추가한다.
- [ ] `agent-test/local/framework-smoke.md` 읽기 조건과 명령/필수 검증/판정 기준에 `packages/flutter/oto_console` package-local setup/lint/test 경계를 추가한다.
- [ ] `rg --sort path -n 'packages/flutter/oto_console|flutter pub get|flutter analyze|flutter test' agent-test/local packages/flutter/oto_console` 결과로 console package 경계와 테스트 파일을 확인한다.
- [ ] `git diff --check`를 실행해 markdown whitespace 오류가 없는지 확인한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

### [REVIEW_REVIEW_RULES-1] Console package local verification contract

#### 문제

`agent-test/local/framework-smoke.md`는 `packages/flutter/oto_console/pubspec.yaml` 변경을 읽기 조건으로 라우팅하지만, `packages/flutter/oto_console` package-local `flutter pub get`, `flutter analyze`, `flutter test` 명령을 제공하지 않는다. `agent-test/local/rules.md`의 Monorepo Targets에도 runner/client/core/protobuf만 있고 console package가 없다.

#### 해결 방법

`agent-test/local/rules.md`에 console package-local target 설명을 추가한다.

`agent-test/local/framework-smoke.md`는 console package manifest/analyzer option 변경을 읽고 다음 의미를 드러내도록 보정한다.

- setup: `cd packages/flutter/oto_console && flutter pub get`
- lint: `cd packages/flutter/oto_console && flutter analyze`
- unit: `cd packages/flutter/oto_console && flutter test`
- 필수 검증과 판정 기준이 console package-local 명령에도 적용됨을 명시

#### 수정 파일

| 파일 | 처리 |
|------|------|
| `agent-test/local/rules.md` | console package-local target 설명 추가 |
| `agent-test/local/framework-smoke.md` | console package read condition 및 검증 명령 추가 |

#### 테스트 작성

문서 라우팅 정리이므로 unit test는 작성하지 않는다.

#### 중간 검증

```bash
rg --sort path -n 'packages/flutter/oto_console|flutter pub get|flutter analyze|flutter test' agent-test/local packages/flutter/oto_console
```

예상: local rules와 framework smoke가 console package-local setup/lint/test 경계를 드러내고, `packages/flutter/oto_console/test/oto_console_test.dart`가 실제 테스트 파일로 확인된다.

## 수정 파일 요약

| 파일 | 항목 |
|------|------|
| `agent-test/local/rules.md` | REVIEW_REVIEW_RULES-1 |
| `agent-test/local/framework-smoke.md` | REVIEW_REVIEW_RULES-1 |

## 최종 검증

```bash
rg --sort path -n 'packages/flutter/oto_console|flutter pub get|flutter analyze|flutter test' agent-test/local packages/flutter/oto_console
git diff --check
```

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