<!-- 公開用の匿名化コピー。原証拠は evidence/ 配下（非公開）。変換規則は evidence_public/CONVERSION_RECORD.md を参照。内容の実行結果は変えていない。 -->

# 12-04 復元演習 実行記録（Phase 5B-2C1）

- 実行日時: 2026-09-21 00:20 JST
- 実行環境（実測）: macOS 26.6.2 / Node.js v24.18.0（標準機能のみ、追加パッケージなし）
- 実行場所: <PROJECT_ROOT>/examples/12-04-restore-drill
- 記録方法: 各コマンドを順に実行し、stdout・stderr・終了コードを整形・省略せずにそのまま記録した。stderr が空の場合は「stderr: （出力なし）」と記す。
- 対象: run.js（変更なし）、run_reject_check.js（新規。復元先が既にあるときの拒否を、例外を受け止めて確かめる）。参考として、受け止めずに呼んだ場合の例外の先頭3行も記録する。

### 1. `node run.js`

```text
$ node run.js
手順1：初期データを作る
手順2：バックアップを取る（基準時点）
手順3：基準時点のあと、業務が続く（新しい依頼、既存の依頼の承認）
手順4：バックアップを別の場所（work/restore/）へ復元する
手順5：件数・内容・関係の3照合と、戻らない変更の確認
{
  "countCheck": {
    "requests": {
      "backup": 3,
      "restored": 3,
      "ok": true
    },
    "history": {
      "backup": 3,
      "restored": 3,
      "ok": true
    }
  },
  "contentCheck": [
    {
      "id": "REQ-D01",
      "ok": true
    },
    {
      "id": "REQ-D02",
      "ok": true
    },
    {
      "id": "REQ-D03",
      "ok": true
    }
  ],
  "relationCheck": [
    {
      "requestId": "REQ-D01",
      "ok": true
    },
    {
      "requestId": "REQ-D02",
      "ok": true
    },
    {
      "requestId": "REQ-D02",
      "ok": true
    }
  ],
  "unreturnedChanges": {
    "newRequestsNotRestored": [
      "REQ-D04"
    ],
    "stateChangesNotRestored": [
      {
        "id": "REQ-D01",
        "liveState": "承認済み",
        "restoredState": "提出済み"
      }
    ]
  }
}
```

stderr: （出力なし）

終了コード: 0

### 2. `node run_reject_check.js`（run.js の直後）

```text
$ node run_reject_check.js
拒否されました: 復元先が既に存在します。上書きしません: <examples>/12-04-restore-drill/work/restore
```

stderr: （出力なし）

終了コード: 0

### 3. 参考：`node -e "require('./drill.js').restore()"`（例外を受け止めない場合。stderr の先頭3行のみ抜粋）

```text
<PROJECT_ROOT>/examples/12-04-restore-drill/drill.js:67
    throw new Error("復元先が既に存在します。上書きしません: " + RESTORE_DIR);
    ^
```

stdout: （出力なし）

終了コード: 1

