<!-- task=m-mattermost-messaging-android-smoke/01_remote_build plan=2 tag=REVIEW_REVIEW_SMOKE_BUILD -->

# Plan - REVIEW_REVIEW_SMOKE_BUILD

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

`CODE_REVIEW-cloud-G07.md`의 구현 에이전트 소유 섹션 작성까지가 구현의 일부다. 검증 명령을 실행하고 실제 출력, 변경 사항, 판단을 review stub에 채운 뒤 active 파일을 그대로 두고 리뷰 준비를 보고한다. 최종 archive, `complete.log`, PASS/WARN/FAIL 판정은 code-review skill 전용이다.

## 배경

이전 follow-up은 clean remote worktree에서 Android debug APK build가 성공함을 보여줬지만, 계획된 최종 원격 명령에 포함된 `flutter doctor -v` 출력이 active review에 빠졌다. 이 작업은 소스나 설정을 바꾸지 않고, 누락된 Android SDK/toolchain verification evidence를 같은 clean-worktree build 흐름 안에서 다시 남긴다.

## 분석 결과

### 읽은 파일

- `agent-task/m-mattermost-messaging-android-smoke/01_remote_build/plan_cloud_G07_1.log`
- `agent-task/m-mattermost-messaging-android-smoke/01_remote_build/code_review_cloud_G07_1.log`
- `docs/test-environments.md`
- `apps/client/pubspec.yaml`
- `apps/client/android/gradle.properties`
- `apps/client/pubspec.lock`

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

- 새 product/runtime behavior는 없다. Existing local tests already passed in `code_review_cloud_G07_1.log`; this follow-up closes only missing remote toolchain stdout.
- Acceptance signal is the exact remote clean-worktree command output including `flutter doctor -v`, `flutter pub get`, and `flutter build apk --debug`.

### 심볼 참조

- No symbol rename/removal is planned.

### 분할 판단

Split decision policy was evaluated. This remains a single follow-up in `m-mattermost-messaging-android-smoke/01_remote_build` because there is exactly one Required issue: missing remote `flutter doctor -v` evidence in the same verification artifact.

### 범위 결정 근거

Do not change source, dependency manifests, docs, roadmap, or sibling plugin files. Only fill the active `CODE_REVIEW-cloud-G07.md` implementation-owned sections with the rerun command and stdout/stderr. If the remote worktree path already exists or cleanup fails, record that blocker instead of deleting unrelated files.

### 빌드 등급

`cloud-G07`: this is terminal/SSH verification trust recovery with remote Flutter/Android SDK state and stdout/stderr evidence.

## 구현 체크리스트

- [ ] 원격 clean worktree 검증을 `flutter doctor -v` 포함 명령으로 재실행하고 실제 stdout/stderr를 기록한다.
- [ ] 원격 명령의 pre-build clean status, Android toolchain doctor output, APK build success, post-build generated diff를 `CODE_REVIEW-cloud-G07.md`에 기록한다.
- [ ] 소스 변경이 없음을 로컬 `git status --short`로 확인하고, 남은 modified files가 이전 review에서 분류된 파일뿐인지 기록한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

### [REVIEW_REVIEW_SMOKE_BUILD-1] Restore Remote Doctor Evidence

문제: `plan_cloud_G07_1.log:136` required `flutter doctor -v` in the final remote clean-worktree command, but `code_review_cloud_G07_1.log:227` records a substituted command that skips it. The prior build success is useful, but the planned Android SDK/toolchain evidence is still missing from the active review artifact.

해결 방법: Rerun the remote clean-worktree verification from the sibling workspace path that preserves local path dependencies, this time including `flutter doctor -v` before `flutter pub get` and `flutter build apk --debug`. Keep the command scoped to a temporary worktree and record post-build tracked changes as generated output.

수정 파일 및 체크리스트:

- [ ] `CODE_REVIEW-cloud-G07.md` records the exact remote command and stdout/stderr.
- [ ] `CODE_REVIEW-cloud-G07.md` records `git status --short` before the remote build as empty for the temporary worktree.
- [ ] `CODE_REVIEW-cloud-G07.md` records `flutter doctor -v` output showing the Android toolchain.
- [ ] `CODE_REVIEW-cloud-G07.md` records `flutter build apk --debug` success and post-build generated diff.

테스트 작성: 새 test 없음. This is verification evidence recovery only.

중간 검증:

```bash
ssh toki@toki-labs.com 'export PATH="/opt/homebrew/bin:/usr/local/bin:/Users/toki/SDK/flutter/bin:/opt/homebrew/opt/openjdk@11/bin:/Users/toki/SDK:/Users/toki/Library/Android/sdk/platform-tools:$PATH"; set -euo pipefail; base=/Users/toki/jenkins/workspace/nomadcode; wt=/Users/toki/jenkins/workspace/nomadcode-smoke-clean-worktree; cd "$base"; test ! -e "$wt"; git worktree add --detach "$wt" HEAD; cleanup() { cd "$base"; git worktree remove --force "$wt" >/dev/null 2>&1 || true; }; trap cleanup EXIT; cd "$wt"; git rev-parse --short HEAD; git status --short; flutter doctor -v; cd apps/client; flutter pub get; flutter build apk --debug; cd ../..; git status --short; git diff -- apps/client/android/gradle.properties apps/client/pubspec.lock'
```

Expected: temporary worktree starts clean, `flutter doctor -v` reports Android toolchain, debug APK build completes, and any post-build tracked changes are recorded as generated output.

## 수정 파일 요약

| 파일 | 항목 |
|------|------|
| `agent-task/m-mattermost-messaging-android-smoke/01_remote_build/CODE_REVIEW-cloud-G07.md` | REVIEW_REVIEW_SMOKE_BUILD-1 |

## 최종 검증

```bash
git status --short
```

Expected: no new source/config files are modified by this follow-up beyond active task artifacts and pre-existing classified local changes.

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