# MARK Ⅶ 再開ハンドオーバー（2026-05-06 暴走事故からの引継ぎ）

> 次セッションで「REMINDER #16 やって」と言われたらこのファイルを読んで即着手する。

---

## 🔴 現在地

- **MARK Ⅵ**：✅ 達成済（chunk方式 Phase 1・実用速度未達だが疎通実証済）
- **MARK Ⅶ**：🟡 v3 実装完了・**暴走バグで撤退・修正待ち**

---

## 🚨 事故の経緯（2026-05-06）

メインJarvis（前セッション）が MARK Ⅶ 能動型 v3 を全権委任モードで実装。実走テストで暴走事故。

### 暴走の症状
- silence trigger が claude -p を 5秒ごとに連続発火
- 結果：PC 熱・全動作ラグ・resource_guard 安全装置が critical 発動継続
- ユーザー直接引用「PCがめっちゃ熱い、すべての動きがラグい、安全装置が鳴り続けてる」
- 対処：pkill -9 で全プロセス強制停止

### 根本原因（2行で）
```python
# v3/jarvis_active_daemon.py L431付近
if (now_ts - last_intervention_at) < 600:
    continue  # クールダウン中
```
**`last_intervention_at = 0`（初期値）だと `now_ts - 0` ≒ 17億 > 600 → クールダウン無効化**

---

## 📁 v3 実装済ファイル一覧（全部完成・修正必要なのは1〜2箇所）

パス：`clone-jarvis/jarvis/live_session/v3/`

| ファイル | 状態 | 備考 |
|---|---|---|
| SPEC_v3.md | ✅ | 設計書・参照のみ |
| stream_transcriber.py | ✅ | whisper-stream 起動・自動再起動付き・ハルシネーションフィルタ込み |
| intervention_filter.py | ✅ | 軽量フィルタ A〜E判定・**silence判定をここで廃止検討** |
| intervention_judge.py | ✅ | claude -p ラッパー |
| mode_controller.py | ✅ | 4モード切替 |
| voice_output.py | ✅ | macOS say |
| output_dispatcher.py | ✅ | dashboard書込＋音声＋log |
| jarvis_active_daemon.py | 🔴 **修正必要** | silence クールダウンバグ |
| live_run_v3.sh | ✅ | 起動スクリプト・python3 -u 付き |
| stop_v3.sh | ✅ | 停止 |
| README.md | ✅ | 使い方 |

---

## 🎯 修正タスク（順番固定）

### Step 1：silence トリガー対応（2択）

**選択肢A：silence完全廃止（推奨・シンプル）**
1. `v3/intervention_filter.py` の D. 沈黙検出ロジックを削除
2. `v3/mode_controller.py` の filter_threshold_for_mode から `"silence"` 削除
3. テスト用 silence ケースを `expected=False` に変更

**選択肢B：silenceは積極モードのみ（凝った設計）**
1. filter_threshold_for_mode で OBSERVING から silence 削除
2. ACTIVE モードでのみ silence 通す
3. クールダウンバグ修正：`last_intervention_at = time.time()` で起動時初期化

→ **おすすめは選択肢A**。沈黙トリガーは便利そうに見えて実害が大きい。

### Step 2：dry-run 全モジュール再実行

```bash
cd /Users/rk/Library/CloudStorage/GoogleDrive-ritsuha1021@gmail.com/マイドライブ/起業フォルダー/clone-jarvis/jarvis/live_session/v3
for m in stream_transcriber intervention_filter intervention_judge mode_controller voice_output output_dispatcher jarvis_active_daemon; do
  python3 ${m}.py --dry-run
done
```

すべて exit 0 確認。

### Step 3：1分実走テスト（ユーザー操作必要）

```bash
bash /Users/rk/Library/CloudStorage/GoogleDrive-ritsuha1021@gmail.com/マイドライブ/起業フォルダー/clone-jarvis/jarvis/live_session/v3/live_run_v3.sh
```

ユーザーがマイクで「ジャービス、聞こえる？」と発話 → 約11秒で dashboard 応答出る → 1分稼働 → 即停止。

### Step 4：暴走しないことの確認

1分テスト中に：
- claude -p の発火回数が 1〜2回（呼名検出時のみ）
- silence trigger で発火しない
- intervention_log.jsonl に記録される件数が 1〜2件

### Step 5：5分連続稼働テスト（実用検証）

5分間マイク通電・発話なし → claude -p 発火0回が理想（5回以上なら暴走と判定）

### Step 6：MARK Ⅶ 昇格判定

達成条件（前セッションで確立）：
- ✅ 1時間連続稼働で claude -p 介入が **最大10回以下**（暴走しない）
- ✅ 反応速度 15秒以内
- ✅ ユーザー操作で4モード切替可能

達成なら mark_badge.js / MEMO / DNA / REMINDER に昇格反映。

---

## 🛡 次セッションが守るべき教訓（DNA第13サイクル参照）

1. **トリガー条件のクールダウンは初期値検証必須**
2. **能動型介入の沈黙トリガーは慎重に設計**
3. **dry-run pass と実走 pass は別物**：N分連続稼働テストを MARK 昇格条件に必須化
4. **resource_guard 安全装置は前提として正しく機能した**：これがあるから事故が早期発見できた

---

## 🚦 全権委任モードでの再開条件

ユーザーの「全権委任」発話があれば、Step 1〜6 を Jarvis 側で完結。
- ただし **Step 3, 5 はユーザーがマイクで喋る必要あり** → ここだけは「マイクで喋ってください」と頼む（外部送信レベルの依頼ではない・正常範囲）

---

## 📌 ファイル参照

- `司令塔/REMINDER.md` #16：暴走バグ修正タスク5項目
- `司令塔/MEMO.md` セッションやり残し「現セッション（MARK Ⅶ v3 実装→暴走事故・2026-05-06）」
- `clone-jarvis/jarvis/clone_dna.md` 第13サイクル：4教訓
- `clone-jarvis/jarvis/live_session/v3/SPEC_v3.md`：仕様全体
- `clone-jarvis/jarvis/live_session/v3/jarvis_active_daemon.py`：修正対象ファイル

---

*作成：2026-05-06 メインJarvis（暴走事故対応最終ターン）*
*次セッション「REMINDER #16 やって」で参照される*
