<!-- task=02_build_flutter_contract plan=1 tag=REVIEW_BUILD_FLUTTER_CONTRACT -->

# Plan - REVIEW_BUILD_FLUTTER_CONTRACT

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

**구현의 마지막 단계는 `CODE_REVIEW-cloud-G07.md`의 구현 에이전트 소유 섹션을 모두 채우는 것이다. 이 파일이 채워지기 전에는 작업이 완료된 것이 아니다.**
아래 `구현 체크리스트` 순서대로 구현하고 중간/최종 검증을 실행한 뒤, 실제 구현 내용과 stdout/stderr를 `CODE_REVIEW-cloud-G07.md`에 기록한다.
리뷰 파일의 아카이브 지시와 `코드리뷰 전용 체크리스트`는 코드리뷰 에이전트 전용이므로 실행하거나 수정하지 않는다.

## 배경

1차 코드리뷰에서 `BuildFlutter` 기능 구현과 targeted tests는 통과했지만, 현재 소스가 계획의 최종 포맷 검증 상태와 일치하지 않았다.
`dart format --output=none --set-exit-if-changed lib/oto/data/build_data.dart lib/oto/data/build_data.g.dart lib/oto/commands/build/build_flutter.dart test/oto_command_runtime_test.dart test/oto_command_catalog_test.dart`가 `test/oto_command_runtime_test.dart`를 변경 대상으로 보고 exit code 1로 종료했다.

## 분석 결과

### 읽은 파일

- `agent-task/02_build_flutter_contract/code_review_cloud_G07_0.log`
- `agent-task/02_build_flutter_contract/plan_cloud_G07_0.log`
- `test/oto_command_runtime_test.dart`
- `lib/oto/data/build_data.dart`
- `lib/oto/data/build_data.g.dart`
- `lib/oto/commands/build/build_flutter.dart`
- `test/oto_command_catalog_test.dart`

### 실패 원인

- Required: `test/oto_command_runtime_test.dart:97` 근처의 현재 포맷 상태가 최종 검증 계약과 맞지 않는다.
- 기능 회귀는 확인되지 않았다. `dart test test/oto_command_runtime_test.dart test/oto_command_catalog_test.dart`와 `dart analyze`는 통과했다.

### 범위 결정 근거

- 포함: 계획된 포맷 대상 파일의 포맷 복구와 검증 기록 갱신.
- 제외: `BuildFlutter` 기능 변경, 테스트 의미 변경, 샘플 계약 변경.

### 빌드 등급

`cloud-G07`: 이전 리뷰가 verification trust 실패를 기록했고, 기존 task 라우팅을 유지한다.

## 구현 체크리스트

- [x] 계획된 Dart 파일 포맷 상태를 복구하고 포맷 검증이 exit code 0으로 통과하게 한다.
- [x] 중간 검증과 최종 검증 명령을 실행한다.
- [x] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

### [REVIEW_BUILD_FLUTTER_CONTRACT-1] 포맷 검증 신뢰도 복구

#### 문제

`test/oto_command_runtime_test.dart`가 현재 `dart format --output=none --set-exit-if-changed` 기준으로 포맷 변경 대상이다.
따라서 이전 리뷰 파일의 최종 `dart format` 검증 기록과 현재 소스 상태가 불일치한다.

#### 해결 방법

계획된 포맷 대상 파일에 `dart format`을 다시 실행한다.
이후 `dart format --output=none --set-exit-if-changed ...`가 변경 대상을 보고하지 않는지 확인한다.
기능 변경은 하지 않는다.

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

- [x] `test/oto_command_runtime_test.dart`: formatter 결과 반영.

#### 테스트 작성

새 테스트는 작성하지 않는다.
이번 후속 작업은 검증 신뢰도 복구이며, 기존 targeted tests로 기능 회귀를 확인한다.

#### 중간 검증

```bash
dart format lib/oto/data/build_data.dart lib/oto/data/build_data.g.dart lib/oto/commands/build/build_flutter.dart test/oto_command_runtime_test.dart test/oto_command_catalog_test.dart
dart format --output=none --set-exit-if-changed lib/oto/data/build_data.dart lib/oto/data/build_data.g.dart lib/oto/commands/build/build_flutter.dart test/oto_command_runtime_test.dart test/oto_command_catalog_test.dart
```

기대 결과: 첫 명령 성공, 두 번째 명령 exit code 0.

## 수정 파일 요약

| 파일 | 항목 |
|------|------|
| `test/oto_command_runtime_test.dart` | REVIEW_BUILD_FLUTTER_CONTRACT-1 |

## 최종 검증

```bash
dart run build_runner build --delete-conflicting-outputs
dart test test/oto_command_runtime_test.dart test/oto_command_catalog_test.dart
dart analyze
```

기대 결과: 모든 명령 성공.
