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

# 08-04 エラー処理・修正差分 実行記録（Final Content Audit）

- 実行日時: 2026-09-21 10:34 JST
- 実行環境（実測）: macOS 26.6.2 / Node.js v24.18.0（標準機能 node:fs・node:path のみ、追加パッケージなし）
- 実行場所: <PROJECT_ROOT>/examples/08-04-error-handling
- 記録方法: コマンドを順に実行し、stdout・stderr・終了コードを整形・省略せずにそのまま記録した。stderr が空の場合は「stderr: （出力なし）」と記す。
- 対象: run_v1.js・storage_v1.js・run_v2.js・storage_v2.js（いずれも変更なし。初版（2026-09-20）の記事は実行結果を載せていたが evidence_public に実行記録が無かったため、最終監査で取得した）。失敗ログの at は実行のたびに変わる。それ以外の行は 2026-09-20 の記事掲載の出力と同一。実行後に practice-state.json・practice-fail-log.json が作られる（教材演習用の一時ファイル）。

### 1. `node run_v1.js`（修正前：説明用の失敗例）

```text
$ node run_v1.js
=== 修正前（storage_v1.js）：説明用の失敗例 ===
履歴に循環参照を含むデータを渡し、履歴の書き込みだけを失敗させる（実データではありえない想定の失敗例）
（内部）履歴の書き込みで例外: Converting circular structure to JSON
    --> starting at object with constructor 'Object'
    --- property 'self' closes the circle
submitRequestの戻り値: {"success":true,"state":"提出済み"}
=== 実際のファイルの中身を確認する ===
状態ファイル: {"REQ-0003":"提出済み"}
履歴ファイル: []
```

stderr: （出力なし）

終了コード: 0

### 2. `node run_v2.js`（修正後：部分失敗を正しく伝える）

```text
$ node run_v2.js
=== 修正後（storage_v2.js）：同じ失敗例で動作を確認する ===
submitRequestの戻り値: {"success":false,"state":"提出済み","partial":true,"error":"履歴の記録に失敗しました。状態は変更されていますが履歴が残っていません。運用担当者へ連絡してください。"}
=== 実際のファイルの中身を確認する ===
状態ファイル: {"REQ-0003":"提出済み"}
履歴ファイル: []
失敗ログ: [{"requestId":"REQ-0003","actor":"佐藤","at":"2026-09-21T01:34:31.296Z","errorType":"TypeError","note":"状態は提出済みに変更されたが、履歴の記録に失敗した"}]
```

stderr: （出力なし）

終了コード: 0
