# action_log.jsonl 記入ルール

> Clone-Jarvis 自己リカバリ機構の核ログ。
> 設計書：[self_recovery.md](self_recovery.md)
> 検出側：[self_check.md](self_check.md)
>
> **「失敗しても自分でリカバリーする、ミスがあっても自分でミスかどうか判断できる」**（Lv5の必須条件）を物理的に支えるファイル。

---

## 1. ファイル仕様

- **場所**：`clone-jarvis/jarvis/action_log.jsonl`
- **形式**：1行1JSON（JSON Lines）
- **追記のみ**：既存行の編集・削除は禁止（履歴の不可逆性を担保）
- **エンコード**：UTF-8 / 改行LF

---

## 2. 記録対象の判定式（ABC分類）

self_recovery.md §1の分類をそのまま機械判定に落とす：

```
A = 軽量・可逆        … git管理内で完結する変更（編集/作成/フォルダ整理/DNA追記）
B = 中量・条件付き可逆 … 外部API呼び出し（Calendar / Drive / Slack / Gmail等）
C = 重要・不可逆候補   … メール送信 / 契約 / 購入 / 削除 / 課金変更
```

### 判定式（クローンが毎アクション前に通す）

```
if 削除 OR 他人送信 OR 課金変更:
    category = "C"
elif 外部APIで状態変更（カレンダー追加・Drive新規・Slack送信）:
    category = "B"
elif git管理下のファイル操作:
    category = "A"
else:
    category = "A"  # デフォルト（git save で巻き戻る範囲）
```

### ログ必須・任意

| 分類 | action_log.jsonl への記録 | 別ファイル併用 |
|---|---|---|
| **A** | 任意（git logで足りる場合は省略可） | なし |
| **B** | **必須**（reverseフィールド埋め込み必須） | なし |
| **C** | 必須＋ `critical_log.md` に詳細 | `critical_log.md` |

→ A分類は冗長すぎてSN比が下がるので、**ユーザー指示で動かしたDNA追記等は省略可**。
→ ただし**自律改善モード**でクローンが勝手に動いた場合は A でも記録推奨（事後トレース用）。

---

## 3. JSONフィールド仕様

```jsonc
{
  "ts": "ISO8601タイムスタンプ（+09:00推奨）",
  "agent": "実行エージェント識別子（jarvis_main / jarvis_check / jarvis_subagent_xxx）",
  "action": "edit | write | delete | api_call | send | commit | revert",
  "target": "対象ファイルパスまたはAPIエンドポイント（相対パスは起業フォルダー基準）",
  "reverse": "ロールバック手順（後述§4）",
  "reason": "判断理由（短文1〜2行・学習ログ反映用）",
  "reversibility": "auto | manual | none",
  "category": "A | B | C",
  // 任意フィールド
  "sha": "git sha（A分類でcommit済の場合）",
  "event_id": "外部APIリソースID（B分類）",
  "user_confirmed": true/false,
  "result": "success | error | rolled_back"
}
```

### 必須5フィールド

`ts` / `agent` / `action` / `target` / `reason` は省略不可。
`reverse` と `reversibility` と `category` は強く推奨（リカバリ機構が読む）。

---

## 4. `reverse` フィールドの書き方（最重要）

self_recovery.md §2の手順をそのまま埋め込む。**書込時点で確定させる**（後で推論しない）。

| カテゴリ | reverseの書き方 | 例 |
|---|---|---|
| **A（git内）** | `git revert <sha>` | `"reverse": "git revert abc1234"` |
| **B（API）** | 逆操作API呼び出しを文字列で固定 | `"reverse": "calendar.delete_event(eventId='evt_xyz')"` |
| **B（送信系下書き）** | 下書き削除コマンド | `"reverse": "gmail.drafts.delete(id='draft_abc')"` |
| **C（不可逆）** | `"none"` または訂正手順 | `"reverse": "none / 謝罪テンプレ送信: templates/apology.md"` |

### 書き方ルール

- **推論不要で実行できる文字列にする**（コピペで動く形）
- 動的なIDは書込時点でわかった値を埋める
- 不可逆（C）でも空欄禁止 → `"none"` または訂正手順を必ず明記

---

## 5. 学習反映ルール（DNAへの自動追記）

リカバリが**実行された時**、`clone_dna.md` の学習ログ末尾に以下を自動追記する：

### 5-1. 追記トリガー

以下のいずれかが発生した時に追記：

- ✅ `result: "rolled_back"` のログが action_log.jsonl に書かれた
- ✅ ユーザーが「戻して」「やり直し」「ミスってる」等を発話 → クローンがロールバック実行
- ✅ self_check.md のクロスチェッカーが「不一致」を返し、メイン判断を取り消した
- ✅ critical_log.md に C分類の訂正テンプレ使用が記録された

### 5-2. 追記フォーマット（self_recovery.md §4準拠）

```markdown
### YYYY-MM-DD — 自動リカバリ #N
- 失敗：<何をして失敗したか>（action_log の reason から要約）
- 原因：<誤判断 / 環境 / 不可逆操作の漏れ / クロスチェック不一致 のいずれか>
- 復元：<実行した reverse 手順>
- 学習：🛡 <次回の事前判定ルール>
```

### 5-3. 🛡 マークの役割

- 🛡 行は `clone_updater.md` の `meta_knowledge` 抽出時に**最優先で取り込まれる**
- 次回以降のシステムプロンプトに必ず混入 → 同じ失敗を物理的に二度しない
- 🛡 がない学習行は通常の学習ログ扱い（優先度普通）

### 5-4. 追記の責任主体

- リカバリを実行したエージェント自身が DNA に追記する（事後でなく即時）
- 並列セッション間の重複追記を避けるため、追記前に直近10行を読んで同一トピックがないか確認
- 追記後は action_log.jsonl の該当行に `"learned_to_dna": true` を**新規行として追記**（既存行は編集禁止のため）

---

## 6. C分類（不可逆）の特別扱い

- **事前確認ゲート**：DNAの「他人送信／削除」確認ルールに従い、実行前にユーザー確認必須
- 確認漏れで実行してしまった場合：
  1. 即 `critical_log.md` に詳細記録（時刻・対象・影響範囲）
  2. `templates/apology.md` の訂正テンプレを発射（メールなら30秒以内）
  3. action_log.jsonl にも 1行記録（reverse は訂正手順）
  4. DNA学習ログに 🛡 で「同種ケースの事前ゲート強化ルール」を追記

---

## 7. クローンの行動原則（このルールから派生）

1. **編集系アクション直前に1行JSON追記**（self_recovery.md MVP §6 準拠）
2. **書込時に reverse を確定させる**（後で推論しない）
3. **ユーザーが「戻して」と言ったら action_log を逆順に読み reverse を即実行**
4. **リカバリ完了と同時に DNA学習ログへ 🛡 行追記**
5. **追記漏れがあっても萎縮しない**（DNAの「文句を言わない」前提に従い、気付いた時点で補完記録）

---

## 8. 接続点

- 書込：全クローン／全Jarvisセッション（編集・API・送信時）
- 読込：リカバリ起動時 / self_check.md の影響範囲特定時 / 月次レビュー時
- 学習反映：[clone_dna.md](clone_dna.md) 末尾 ＋ [clone_updater.md](clone_updater.md) の meta_knowledge 経路
- 提案中インフラ：[git_undo_proposal.md](git_undo_proposal.md)（A分類の即時ロールバック高速化）

---

*作成：2026-05-02 ／ self_recovery.md MVP の運用規約*
*最終更新：2026-05-02*
