# セッション引き継ぎ：Playwright インフラ＋認証セットアップ（2026-05-16 破損Jarvis→正常Jarvis）

**作成日：** 2026-05-16
**引き継ぎ理由：** 現セッションのJarvisがプログラム破損状態のため、ユーザーがセッション閉じて別セッション（正常Jarvis）で続行する。本ファイル＋合言葉「**プレイライト引き継ぎ**」で文脈復元する。
**合言葉：** ユーザーが新セッションで「**プレイライト引き継ぎ**」と発話 → 新Jarvisは jarvis起動シーケンス完走後に**本ファイルを必ずRead**して状況復元する。

---

## 📍 セッションのゴール（未達）

ユーザー方針：**「Playwright で全部勝手にログインできる v2 設計」を作る**

直前ターンで承認済（ユーザー「a」発話＝A案承認 = `auth_setup_v2.py` 作成 30分タスク）。

ただし俺（破損Jarvis）が着手宣言した直後にユーザーから「ちょっと待って、君今多分壊れたJarvisで」と中断発話あり → 着手前。

---

## 🔴 やるべきタスク（次Jarvisが着手）

### A. auth_setup_v2.py 新規作成

**設計方針：** Playwright で `page.fill()` → `page.click()` で**自動入力ログイン**。ユーザー作業は keychain にパスワード1回保存するだけ。以後永久に自動。

**構成案：**
```
1. macOS keychain から ID/PW取得（security コマンド）
   - サービス名規約: `jarvis-auth-<service>` （例: `jarvis-auth-google`）
   - アカウント名規約: メールアドレス
2. Playwright launch_persistent_context で起動
3. ログインURLへ goto
4. ID入力（page.fill）→ 次へボタン → PW入力 → ログイン
5. 2FA要求された場合：
   - 人間に「6桁コード入力して」依頼
   - 入力されたら page.fill → 完了
6. Cookie保存（既に launch_persistent_context が自動でやる）
```

**ファイル位置：** `tools/playwright/auth_setup_v2.py`
（旧 `auth_setup.py` は legacy として残す・人間ログイン用バックアップ）

### B. keychain 保存ヘルパースクリプト

```bash
# 保存
security add-generic-password -s "jarvis-auth-google" -a "ritsuha1021@gmail.com" -w "PASSWORD"

# 取得
security find-generic-password -s "jarvis-auth-google" -w
```

`tools/playwright/keychain_setup.sh` で対話的にパスワード登録できるラッパーを作る。

### C. memory永続化

- `feedback_playwright_auto_login_design.md` 新規 — 自動ログイン設計原則
- `feedback_jarvis_autonomy_top_priority.md` 違反事例ログ追記（auth_setup.py v1 の設計ミス）
- MEMORY.md index 更新

### D. AUTH.md 更新

`tools/playwright/AUTH.md` に「v2 自動ログイン推奨・v1 は手動ログインのbackup」追記。

### E. self_check_log

`reflection_log/2026-05-16.md` に「auth_setup.py v1 の設計ミス遡及検出→v2 で修正完了」記録。

---

## 📦 これまでにやったこと（現セッション分）

### 完了済（次Jarvisは触らなくていい）

1. ✅ **Playwright インフラ整備**（`tools/playwright/`）
   - `quick.py` — ワンショット headless 実行
   - `launch.py` — Cookie永続化ログイン用（手動）
   - `controller.py` — 常駐 command.json 投入式
   - `README.md` — 詳細ドキュメント
   - **4種類実走テスト全部pass**（headless / headful / persistent / controller serve）

2. ✅ **auth_setup.py v1**（人間ログイン版・**今これがv2 で置換対象**）
   - 8サービス対応：google / google_school / slack / x / github / discord / anthropic / loilo
   - 共用Profile: `~/.jarvis_playwright_profile/`

3. ✅ **auth_check.py**（headless ログイン状態検証）
   - 全サービス UNKNOWN→NOT_LOGGED_IN 確実判定まで精緻化済

4. ✅ **AUTH.md**（認証ガイド・Cookie失効スケジュール・トラブルシュート）

5. ✅ **memory永続化**
   - `memory/project_playwright_infra.md`（osascript+Playwright境界整理込み）
   - `memory/MEMORY.md` index 更新

6. ✅ **Google 1サービスだけログイン済**（ritsuha1021@gmail.com）
   - スクショで myaccount.google.com 確認済
   - Cookieは `~/.jarvis_playwright_profile/` に保存済（v2 でもこのProfile流用可能）

### 未完（v2 で置換予定）

- ❌ google_school / slack / x / github / discord / anthropic / loilo の7サービス未ログイン
- → v2 完成後に keychain にパスワード保存→自動ログイン1コマンドで全部完了予定

---

## 🔴 ユーザー指摘の設計ミス（重要）

**俺の判断ミス：**
- auth_setup.py v1 を「ブラウザ開いて**ユーザーがログイン操作する**」前提で設計
- DNA違反：[feedback_jarvis_autonomy_top_priority.md](../../../memory/feedback_jarvis_autonomy_top_priority.md)「ユーザー時間奪わない設計が最優先」

**正しい設計：**
- Playwright で `page.fill()` `page.click()` で自動ログイン
- ユーザー作業 = keychain にパスワード1回保存するだけ
- 2FA出たら最小限の人間介入
- 以後 Cookie で自動

**ユーザー直接引用（2026-05-16）：**
> 「君はplaywriteでログインすすめられるでなんでこんなことやってんの？」
> （= 自動化できるのに人間に振った設計を疑問視）

---

## 📚 関連ファイル（次Jarvisが Read すべき）

| ファイル | 用途 |
|---|---|
| `tools/playwright/auth_setup.py` | v1 設計確認（v2 のひな型に） |
| `tools/playwright/AUTH.md` | サービス一覧・URL・ログイン後判定URL pattern |
| `memory/project_playwright_infra.md` | Playwright設計・境界整理 |
| `memory/feedback_jarvis_autonomy_top_priority.md` | DNA違反根拠 |
| `clone-jarvis/jarvis/self_check_log/2026-05-14.md` 0330-16 | v1 設計時のself_check log |

---

## ⚠️ 引き継ぎ後の最初の動作

新セッションの正常Jarvisが「プレイライト引き継ぎ」検出 → 以下順に：

1. 通常の jarvis起動シーケンス完走（18ファイル並列Read + effort検査 + School/学校/ロイロ監査）
2. **本ファイルを必ず Read**（`HANDOVER_session_2026-05-16_auth_playwright.md`）
3. 着手宣言「**v2 設計に入る・所要約30分**」
4. 「A〜E タスク順に実装する」と短く告知
5. TodoWrite でタスク管理開始
6. Code 書き始める

---

## 💾 引き継ぎ完了条件

- [ ] auth_setup_v2.py 実装＋実走テスト pass
- [ ] keychain_setup.sh ラッパー実装
- [ ] memory永続化 3件
- [ ] AUTH.md 更新
- [ ] self_check_log 追記
- [ ] ユーザーに「v2 完成・パスワード登録1回でログイン全自動化済」報告

完成時：旧 auth_setup.py は legacy として残し、本ファイルを `_completed_` プレフィックス追加でクローズ。
