# share-notifier コードレビューレポート

**対象**: rinto-ritsuha-share/rinto-to-ritsuha/share-notifier-setup/ 全5ファイル
**日時**: 2026-05-10 / Jarvis別セッション（コードレビュー専用）
**レビュー実施**: オーケストレーターJarvis委任 → サブエージェント（Sonnet）実行

---

### 🟢 安全に使える機能

- **notification.py（ダイアログUI）**: osascriptのみ。外部通信・ファイル読取なし。機密に全く触れない。
- **daemon.py のスケジューリング部分**: state.json 読み書きのみ。機密パスに接触しない。
- **「今日はやらない」フロー**: 何もアップロードされない。skip フラグを state.json に書くだけ。
- **plist の KeepAlive=false**: クラッシュ時の自動再起動なし。過剰常駐リスクなし。
- **Drive書込先**: `ritsuha/daily/` のみ。`rinto/daily/` への誤書込経路はない。

---

### 🟡 修正すれば使える機能

**1. config.json の `sessions_dir` 設定（最重要修正点）**

現在のデフォルト値: `"/Users/ritsuha/.claude/projects"`

これを **空文字 `""` に変更**することが必須。理由は🔴で詳述。

**2. `memo_path` / `reminder_path` の無効化**

```json
"memo_path": "",
"reminder_path": ""
```

`~/.claude/memo.md` には Jarvis が書いたメモ（MARK Ⅶ/Ⅷ設計・bypass運用への言及）が含まれうる。空文字で無効化推奨。

**3. plist のパスを `ritsuha` → `rk` に修正**

倫翔が書いたテンプレートは `/Users/ritsuha/` 固定。立羽の環境は `/Users/rk/`。ProgramArguments・WorkingDirectory・StandardOutPath の3箇所を修正する。

**4. `user_msg` のタイポ修正**

`share.py` 内: `{reminder or ")空)"}` → `{reminder or "(空)"}` （左括弧が抜けている。機能上軽微だが修正推奨）

---

### 🔴 危険・無効化すべき機能

#### 【最重大】`sessions_dir = ~/.claude/projects` はデフォルトのまま絶対に動かしてはいけない

**漏洩経路の具体的トレース:**

```
~/.claude/projects/**/*.jsonl （当日更新分を全走査、最大100,000文字）
    ↓ collect_today_sessions() が [user]/[assistant] 全テキストを結合
    ↓ generate_reports() の user_msg に埋め込み
    ↓ Anthropic API (claude-opus-4-7) に送信（立羽のAPIキーで課金）
    ↓ 要約結果を macro/tech 日報として生成
    ↓ daily_dir（ローカル rinto-ritsuha-share/ritsuha/daily/）に .md 保存
    ↓ Drive Desktop 同期 → 倫翔のPC → auto-PDF変換（取り消し不能）
```

**この経路で漏洩しうる機密:**

| # | 機密項目 | リスク |
|---|---|---|
| 1 | Burn rate ペナルティ仮説・観測ログ | **高** — 会話で何度も議論 |
| 2 | MARK Ⅶ/Ⅷ 内部設計・再設計経緯 | **高** — clone-jarvisセッションに頻出 |
| 3 | bypassPermissions 運用・settings.json | **高** — セットアップ会話に含まれる |
| 4 | dashboard 全体構成 | **中** — 具体パス・コードが会話に現れうる |
| 5 | Clone-Jarvis 製品化戦略（秘密兵器表現） | **中** — macro系戦略議論に含まれうる |
| 6 | clone_dna.md / self_check.md の内容 | **高** — Jarvis起動時の読込内容が会話に展開 |
| 7 | memory/feedback_*.md / project_*.md 全般 | **高** — CLAUDE.md経由でセッション冒頭に丸ごと入る |

**盲点**: `~/.claude/projects/` の JSONL にはシステムプロンプト（CLAUDE.md・メモリファイル）が system-reminder として埋め込まれている。`collect_today_sessions()` は `type=="user"` と `type=="assistant"` のみを抽出するが、メモリ内容が assistant 応答で引用・言及されることで実質的に漏洩する。

#### 【重大】倫翔側 auto-PDF 変換による不可逆化

README.md に明記: 「rinto 側には .md → PDF 自動変換の仕組みが入っている」。
一度 Drive に書き込まれた日報は即座に PDF 化され、Drive MCP に削除 API がないため **送信後に取り消せない**。

---

### 📊 機密漏洩リスクスコア

**総合評価: 高（デフォルト設定のまま使用した場合）**

- `sessions_dir` のデフォルト値が全会話ログを丸ごと投入する設計
- ダイアログに「送りますか？」は出るが要約の中身は表示されない（中身を見ずに承認する運用になりうる）
- 送信後は倫翔側 PDF で取り消し不能

**修正後の評価: 低**
`sessions_dir`・`memo_path`・`reminder_path` を空文字にすれば、機密漏洩リスクはほぼゼロ。

---

### 🛠 立羽がやるべきセットアップ手順（修正版・計画のみ・実行はまだしない）

**STEP 1: config.json を安全版に書き換えてから配置**

```json
{
  "my_name": "立羽",
  "recipient_name": "倫翔",
  "anthropic_api_key": "YOUR_API_KEY_HERE",
  "daily_dir": "（実際のDrive同期パス）/rinto-ritsuha-share/ritsuha/daily",
  "sessions_dir": "",
  "memo_path": "",
  "reminder_path": ""
}
```

**STEP 2: plist のパスを `ritsuha` → `rk` に3箇所修正してから配置**

```xml
<!-- ProgramArguments の daemon.py パス -->
<!-- WorkingDirectory -->
<!-- StandardOutPath / StandardErrorPath -->
```

**STEP 3: 運用方針の決定**
sessions_dir を無効化すると日報の内容が空になる。推奨は「daemon は通知専用」・「実際の送信は `/share-day` スラッシュコマンドで手動ドラフト確認してから」の分業運用。

---

### ❓ 倫翔に確認すべき事項リスト（機密に触れない形の質問のみ）

1. **Drive同期パスの確認**: 「俺のMacでの `rinto-ritsuha-share` のローカルパスってどこ？`find ~/Library/CloudStorage -name 'rinto-ritsuha-share'` で確認したら教える」

2. **plistのユーザー名修正**: 「plist内のパスが `/Users/ritsuha/` になってるけど俺のMacは `/Users/rk/` なので書き換えて使っていい？」

3. **sessions_dir を空にした場合の動作**: 「sessions_dirを空文字にするとエラーなく空コンテキストで日報生成される？テスト済みか確認したい」

4. **auto-PDF の変換タイミング**: 「.md → PDF の変換はリアルタイム？少し遅延ある？」

---

*作成：2026-05-10 / share-notifier 配布物（倫翔→立羽 2026-05-10 16:10 Gmail）に対する事前レビュー*
