<!-- task=mattermost_push_plugin_extraction/05+03,04_docs_verify plan=1 tag=REVIEW_REFACTOR -->

# Docs Verify Follow-Up Plan

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

이 계획은 `code_review_cloud_G07_0.log`의 Required 이슈만 닫는다. 구현을 끝내기 전 `CODE_REVIEW-cloud-G07.md`의 구현 에이전트 소유 섹션을 반드시 채운다. 검증 명령을 실제로 실행하고 stdout/stderr를 붙여 넣은 뒤 active 파일을 그대로 둔 채 review ready를 보고한다.

## 배경

이전 문서/최종 검증 작업은 plugin/host 책임 문서를 작성했지만, Android debug build 검증이 `No Android SDK found.`로 끝났고 host merged manifest도 확인하지 못했다. 또한 host handoff 문서에 로컬 절대 `file://` 링크가 남아 계획 체크리스트를 위반했다.

## 분석 결과

### 읽은 파일

- `agent-task/mattermost_push_plugin_extraction/05+03,04_docs_verify/code_review_cloud_G07_0.log`
- `agent-task/mattermost_push_plugin_extraction/05+03,04_docs_verify/plan_cloud_G07_0.log`
- `apps/mobile/push-notification-todo.md`
- `apps/mobile/README.md`
- `../mattermost-push-plugin/README.md`

### Required 이슈

- `REVIEW_REFACTOR-1`: Android build/merged-manifest verification gap remains open.
- `REVIEW_REFACTOR-2`: `apps/mobile/push-notification-todo.md` contains a local absolute `file:///config/workspace/...` link.

### 빌드 등급

Build lane: `cloud-G07`; review lane: `cloud-G07`. Unit/static verification passed previously, but a real Android build command failed and verification trust must be restored.
본 환경에서는 로컬 안드로이드 SDK가 부재하므로, `toki@toki-labs.com` 원격 서버로 SSH 접속하여 소스를 고속 동기화한 뒤 Android APK 빌드 검증을 완수해야 합니다.

## 구현 체크리스트

- [x] [REVIEW_REFACTOR-1] Android build/merged-manifest 검증 공백을 fresh build 성공 또는 명시적 대체 검증으로 닫고 실제 출력을 기록한다.
- [x] [REVIEW_REFACTOR-2] Host handoff 문서에서 로컬 절대 `file://` 링크를 제거한다.
- [x] 중간 검증과 최종 검증 명령을 모두 실행하고 실제 출력을 `CODE_REVIEW-cloud-G07.md`에 붙여 넣는다.
- [x] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.

## 의존 관계 및 구현 순서

- 같은 task directory 안에서 `plan_cloud_G07_0.log`와 `code_review_cloud_G07_0.log`를 근거로 진행한다.
- 로컬 Android SDK가 없는 환경이므로, 사용자 가이드에 따라 원격지 `toki@toki-labs.com`에 SSH 접속하여 Android SDK 검증 빌드를 정상 수립한다.

---

### 원격지 SSH 빌드 검증 가이드 (리뷰어 및 구현자 공통)

로컬 머신에는 Android SDK가 설치되어 있지 않으므로, 다음 절차를 수행하여 원격 서버 `toki@toki-labs.com`에서 실시간 APK 빌드를 성공시키고 머지 마니페스트(merged manifest) 정밀 결합을 검증해야 합니다.

#### 1단계: 원격지로 로컬 소스 전송 (tar 파이프라인 고속 동기화)
원격지에 rsync가 미설치된 상태에서도 초고속 전송이 가능한 tar 스트림 파이프라인을 사용합니다.
```bash
# 1. mattermost-push-plugin 전송
tar -czf - -C /config/workspace/ --exclude="build" --exclude=".dart_tool" --exclude=".git" mattermost-push-plugin | ssh toki@toki-labs.com "mkdir -p /Users/toki/tmp/mattermost-push-plugin && tar -xzf - -C /Users/toki/tmp/mattermost-push-plugin --strip-components=1"

# 2. nomadcode 전송
tar -czf - -C /config/workspace/ --exclude="build" --exclude=".dart_tool" --exclude=".git" --exclude="node_modules" nomadcode | ssh toki@toki-labs.com "mkdir -p /Users/toki/tmp/nomadcode && tar -xzf - -C /Users/toki/tmp/nomadcode --strip-components=1"
```

#### 2단계: 원격지에서 flutter build apk 실행
원격의 Android SDK 및 Flutter PATH 환경 변수를 래핑하여 원격 쉘 내부에서 빌드를 구동합니다.
```bash
# 1. Plugin Example 빌드
ssh -o StrictHostKeyChecking=no toki@toki-labs.com "export ANDROID_HOME='/Users/toki/Library/Android/sdk' && export PATH='/usr/bin:/bin:/usr/sbin:/sbin:/opt/homebrew/bin:/usr/local/bin:/Users/toki/SDK/flutter/bin:/Users/toki/Library/Android/sdk/platform-tools' && cd /Users/toki/tmp/mattermost-push-plugin/example && flutter build apk --debug"

# 2. Host App 빌드
ssh -o StrictHostKeyChecking=no toki@toki-labs.com "export ANDROID_HOME='/Users/toki/Library/Android/sdk' && export PATH='/usr/bin:/bin:/usr/sbin:/sbin:/opt/homebrew/bin:/usr/local/bin:/Users/toki/SDK/flutter/bin:/Users/toki/Library/Android/sdk/platform-tools' && cd /Users/toki/tmp/nomadcode/apps/mobile && flutter build apk --debug"
```

#### 3단계: 빌드된 merged manifest 정밀 검증
빌드가 정상 완수되면 원격 호스트에서 `grep`을 통해 결합 마니페스트를 최종 스캔합니다.
```bash
ssh -o StrictHostKeyChecking=no toki@toki-labs.com "export PATH='/usr/bin:/bin:/usr/sbin:/sbin' && grep -n -E 'com.google.firebase.MESSAGING_EVENT|MattermostFirebaseMessagingService|FlutterFirebaseMessagingService' /Users/toki/tmp/nomadcode/apps/mobile/build/app/intermediates/merged_manifest/debug/processDebugMainManifest/AndroidManifest.xml /Users/toki/tmp/mattermost-push-plugin/example/build/app/intermediates/merged_manifest/debug/processDebugMainManifest/AndroidManifest.xml"
```

---

### [REVIEW_REFACTOR-1] Verification Trust Recovery

#### 문제

`plan_cloud_G07_0.log`의 최종 검증은 plugin example과 host app의 `flutter build apk --debug` fresh run 성공을 요구했다. 구현 결과는 두 build 모두 Android SDK 부재로 실패했고, host merged manifest 파일도 생성되지 않았다.

#### 해결 방법

원격지 SSH 빌드 검증 가이드에 따라 원격 서버에서 디버그 빌드를 구동하고, 빌드된 merged manifest를 정밀 스캔하여 `com.tokilabs.mattermost_push_plugin.MattermostFirebaseMessagingService`가 정상적으로 바인딩되어 충돌을 방지하고 있는지 실제 stdout/stderr를 획득하여 기록한다.

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

- [x] `CODE_REVIEW-cloud-G07.md`에 SSH 원격 build 성공 출력 및 merged manifest 실재 스캔 검증 출력 기록
- [x] Host app stale native source search 결과 재기록
- [x] Plugin/host source manifest와 pubspec dependency ownership search 결과 기록

### [REVIEW_REFACTOR-2] Remove Local Absolute Documentation Link

#### 문제

`apps/mobile/push-notification-todo.md` contains a local absolute `file:///config/workspace/mattermost-push-plugin/README.md` link. This violates the original checklist item that forbids local absolute paths in docs.

#### 해결 방법

Replace the absolute `file://` link with a relative repo-root reference or plain relative path. Do not introduce new absolute local paths.

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

- [x] `apps/mobile/push-notification-todo.md` local absolute path removed
- [x] No new `file:///`, `/config/workspace`, `/Users/`, or Windows drive-style local path is added to the handoff docs

## 수정 파일 요약

| 파일 | 항목 |
|------|------|
| `apps/mobile/push-notification-todo.md` | REVIEW_REFACTOR-2 |
| `CODE_REVIEW-cloud-G07.md` | REVIEW_REFACTOR-1, REVIEW_REFACTOR-2 |

## 최종 검증

```bash
cd /config/workspace/mattermost-push-plugin && dart format --output=none --set-exit-if-changed lib test
cd /config/workspace/mattermost-push-plugin && flutter analyze --no-fatal-infos
cd /config/workspace/mattermost-push-plugin && flutter test
cd /config/workspace/nomadcode/apps/mobile && dart format --output=none --set-exit-if-changed lib test
cd /config/workspace/nomadcode/apps/mobile && flutter analyze --no-fatal-infos
cd /config/workspace/nomadcode/apps/mobile && flutter test
# (원격 SSH 빌드 검증 수행)
# 1. Plugin Example 빌드 성공 검증
# 2. Host App 빌드 성공 검증
# 3. 원격 merged manifest 결합 매칭 성공 검증
```

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